2021转行Android程序员 我做到了

决定

2017年6月29号下午四点,我刚刚结束了大三所有课程的期末考试,迎来人生的最后一个暑假。

但留给我的休息时间其实只有两天,因为,我在一个月前就规划好了暑假,找好了实习,是一家机器人培训公司,去当培训老师。

两天后,我就屁颠屁颠的去实习公司报道去了,公司老板是我之前代表学校去参加展会认识的,人很好,工作的同事也很nice。几天后,老板就带着我到西安参加一个为期半个月的夏令营活动(公费旅游),第一次连续坐了24个小时的绿皮火车,在西安城里到处找膜吃,去了回民街、大雁塔、陕西历史博物馆、大唐西市。。

在我7月初再次回到学校时,我发现我的很多同学都没有选择回家或者找份实习工作来充实自己的暑假,而是整天泡在学校图书馆或自习室,喊他们打球都喊不出来,他们一部分人是在为考研努力着,另一部分是为考公准备着。看着他们都有着自己长期的规划,这也让我反思了自己的职业规划,怀疑找这份实习工作的正确性。

转折

产生了自我怀疑后,我就去找我做运维的堂哥聊了聊,他觉得我现在做教育培训根本不合适,现阶段的我需要知识输入,而不是进行知识产出,并推荐我学习Python,转行开发岗,并甩给我几十G的视频学习资料。

我觉得他说的很对,因此我开始了自学Python之路,好在我的实现工作比较清闲,每天按时下班,所以下班后,我就看视频学习,从最基础的开发环境搭建开始,折腾Ubantu,安装各种软件包,到学习基础语法,再到学习Scrapy爬虫框架,每折腾出一个小东西,就会带给我成就感与快乐。

第一次面试

很快11月份学校的校招招聘会就开始了,我依然清晰地记得那天我早早的起了床,到学校打印店打印了我的简历,满怀期待的到了招聘会现场。结果却发现,没有几家公司招Python相关岗位,更多的是Java,最终也就只投递了一家(现在想想自己当初咋就这么轴呢?不是Python就不能投?天?)。第二天早上就收到了面试邀约,约好当天下午一点半的面试时间,为了留个好印象,我又一次早早的出门,提前了半个多小时到了(还提前半小时,真的绝了,面试官是不需要午休的么?)。然后就是给了我一份试题,让我自己一个人在会议室做题,半小时后,进来了3个面试官,轮流着问我问题,而我也基本都答不上来,场面一度很尴尬,我真的想找个地缝钻进去。没过多久,面试也就结束了,离开了两个面试官,剩下的另一个面试官是我学长,人很好,他可能看出我的尴尬与失落,主动跟我唠起了家常,我也主动向他询问了我的问题,他建议我一定要学好基础,比如最基础的Python语法,而不是学Scrapy这种框架,让我别气馁,继续加油。告别学长,坐在回学校的地铁上,我也对这次面试进行了反思,马上下单了《Python核心编程》这本书,决定系统的好好的学习基础。

起点

2018年3月5号,过了这么久依然记忆犹新,因为我在这一天,终于成为了程序员。那天,我穿戴整齐,背上电脑,早早的出门,再一次提前半小时到达了公司。公司的大部分人都还没来,好在几个测试小姐姐提前来了,他们也提前知道了今天要来新同事,领着我到了我的工位。过了没多久,同事们陆陆续续都来了,等大家都到齐后,主管领着我们做了一个破冰小游戏,就是每个人依次介绍一下自己的英文名,最后我要说出他们的名字,氛围是愉快且轻松的。之后就是历时一个月的Python Django培训学习,由我的主管给我布置需求,从0到1搭建一个自己的博客网站,由于我的基础是在太差了,没少挨批,不过这一个月也是我自学编程以来进步最快的一个月了(十分感谢我的主管)。

开启Android之旅

为期一个月的学习培训很快就过去了,我以为我会继续做Python开发,但万万没想到的是,由于Android组缺人,我直接分配到了Android组,要命,我可是一句Java都没写过的人啊。更要命的是,带我的组长B哥是个韩国人,我们得用英文沟通。好在B哥人很不错,没有放弃我,他让我去刷Android developer官网,让我对组件留一个印象,然后等到用到的时候再深入去学习,遇到什么不懂的问题就去问他,让我不用不好意思。

一度想放弃

Java Android基础,跟组长B哥语言又不通,加上业务需求又紧,我也只能直接上手做需求了。很多时候都是看着需求,不知如何下手,然后去GoogleGoogle不到然后去请教B哥以及周围同事,然后他们告诉我使用哪个哪个组件,或者甩给我一篇文章。在这样的状态下导致我给自己的内心压力很大,甚至一度想着要不放弃算了,反正这样也转正不了,何必一直耗着呢。

转折

这天我下班回到学校寝室,恰巧看到隔壁寝室的同学老费也回到了学校,进去打了个招呼,老费在准备转专业考研考计算机,我发现他的桌子上放着一本《Java语言程序设计-基础篇》。我跟老费说了我的近况,他推荐我好好学习一下这本Java黑皮书,说这是Java很经典的一本入门书籍,对我会很有帮助。我随手翻了翻这本书,确实很好,当晚我就直接下单买了一本。后面,机缘巧合下我又读到了郭霖大佬的《第一行代码》,然后学习了B哥推荐我去看Android developer官网

渐入佳境

在刷完《Java语言程序设计-基础篇》《第一行代码》这两本书后,我发现我的Android开发之路变得平坦了很多,我面对需求抓耳挠腮的次数减少了。也变得比以前自信了,我也可以去跟我的同事主管交流一些我的想法,也尝试将我学的知识点整理写成博客,并在公司的技术分享会上分享给大家。慢慢我也开始独立负责一个需求,成为了主力开发。

离开

有相聚就有离别,为了早日与女友结束异地恋,我也计划着19年下半年到杭州发展,我要离开这个起点,这次就像是我真正的毕业。

再出发

离开起点后,社会直接就给我上了一课,万万没想到,来杭州的第一家公司是在发不出工资的情况下招的我。第一个月工资延发,第二个月工资发半个月,第三个月直接说发不出来了。本想直接提桶跑路了,没想到又被老板画的大饼给留下了,想着也要过年了,那就年后说吧。然后就是2020年初疫情爆发了,在家隔离的日子里我也没闲着,在家学习,也是那时候开始在掘金分享技术文章。疫情给我那本就气息奄奄的公司又来上了一脚,拖欠的工资更加发不出了,我也意识到,是时候走了。那是2020年的3月份,疫情刚刚好转一点,但市场上的岗位需求缺很少,我投出去的简历基本石沉大海。终于约到了面试,面试过程也很顺利,我也就入职了我现在的这家公司,一直到现在。

这就是我选择转行做程序员以来真实的故事,我舍去了很多辛酸与被人看低的经历,毕竟我把我的故事说给你们听得目的就是希望能给大家一点正能量。

也正是这段经历,让本来开朗自信的我变得自闭与不自信,但好在我不服输,我不愿接受我比身边的人差,虽然我不是科班出身,只是一个半路出家的半吊子,但我现在也做到了,成为了Android程序员。

2022年我要让自己变得更加自信。

最后

我总结了我在日后Android开发的学习过程中应该学习的一些知识模块

底层技术

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
JAVA知识要点:
1、Java序列化、泛型与反射
2、虚拟机底层原理
3、Android内存原理
4、Java高级并发原理详解
5、编译时技术掌握与实战
6、JDK高级动态代理
7、高级数据结构与算法
8、Java IO操作
9、。。。

FrameWork源码与UI

在Android中,Framework泛指系统架构层。Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,Framework具体的工作也就是为android应用开发的开发人员提供了一系列的服务和API的接口。

UI其实并不是单纯指用户看到的效果。因为在Android开发中,每个控件背后都有一套深层次的体系在支撑,自然而然,会UI不单纯指的是会自定义控件,我们还应该知道自定义控件背后的执行流程,包括从Activity的创建,XML的解析,到每个控件的测量、布局、绘制。当然在中间还夹杂着比如动画、事件分发机制、嵌套滑动机制等知识点。还有谷歌提供的一些UI框架也使我们要掌握的对象,比如Jetpack组件库、Material Design等。

知识要点:

1、 FrameWork源码解析(SDK 30)
2、Android常用组件深入解析
3、JetPack全家桶
4、Android R新特性解析
。。。。。

大厂内部APP调优方案

性能优化是一个项目必须要经历的过程,你的应用好与坏都是在用户使用的过程中反映出来的,如果性能优化没有做好,对于你的应用来说影响是非常大的。尤其是现在的Android市场竞争非常激烈,如果你的应用体验没有竞品的好,那么用户流失是必然的。

性能优化不是一件简单的事情,每个应用的性能好与坏无法由一个人来决定,因为性能优化的维度有太多了,从我们项目的整体架构,到我们代码的每一个细节,再到应用使用环境的测试,只有步步为营,才能做好一个项目的优化。

大部分开发者把性能优化指向与不闪退就行,但是实际上性能优化包含了很多方面,比如从简单的启动优化、 UI优化、 卡顿优化、 崩溃优化、 安全性优化,到深层次的弱网优化、 大图加载优化、 储存优化、 高效传输优化、 极限瘦身优化,再到实际开发过程中的OOM问题原理解析、 ANR问题解析、 Crash监控方案。要想把这些优化流程做好,我们不仅从项目架构、代码规范等方面入手,还用学会利用第三方的检测工具来检测项目性能,最主要是,我们需要一套完整的性能优化方案,这正是我们所缺少的,所以我们必须要把缺少的补上, 打造一套真正的完整的性能优化体系,把性能优化流程化,常态化。

知识要点

1、 APP基础优化
2、APP深度优化
3、开发焦点问题优化
4、编程效率优化
5、项目实战

  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

对标腾讯T3.3架构师

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android高频技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

本篇知识要点:

1、架构师设计思想篇
2、 手淘全套架构设计与实现
3、 开源框架
4、OKHttp网络框架
5、一线大厂核心框架剖析与实现

Gradle项目实战

主要内容

1、Groovy语法
2、Gradle Android插件配置
3、项目实战

NDK模块开发(音视频系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

本篇知识要点:

1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

Flutter学习进阶

2021 年无疑是 Flutter 技术如火如荼发展的一年。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

本篇知识要点:

1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门

学习路线配套的资料:Github
学习路线获得地址:Android技术交流

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
)">
< <上一篇
下一篇>>