本篇文章致那些从零开始学 Android 的或者正要学习还没有勇气出发的人, 希望通过我的经历能够让你在学习的道路中坚持下来。
我的第一份工作毕业之际通过学校的校招找到了一家传统软件公司,是做政务软件的。我以java工程师的职位入职, 入职期间大多数却是在做 debug 调式的工作, 偶尔会做一些小的需求, 每天朝九晚五的日子真的是悠哉, 在校期间就已经知道安卓了, 就一直想学, 可惜在校时候没能坚持下来, 只学了一点点皮毛, 如今悔之晚矣。 我心里一直惦记着, 这一次我一定要坚持下来, 于是开始自学安卓之路。
开始3个月的自学之路之前在校期间自学了一些 java 基础知识, 也通过了背一些常见面试题找到了工作, 也算有了一定的自学能力吧,但是 java 基础也不牢固, 基本是从零开始自学安卓, 刚开始看同学推荐的 mars 老师的视频 , mars 真的讲的很细致, 也比较易于理解, 我当时是从第一季看到了第三季左右, 感觉对Android有了大体的认识,期间在网上查询问题的时候搜索到了一些大牛的博客, 我看的比较多的是 郭霖的博客, 那个时候他正好写了一本书--《第一行代码》, 我毫不犹豫的买了下来, 于是我开始了白天上班(偶尔也会看看他的博客哈哈), 晚上回家看书写代码的日子, 那段时间我和父母还有朋友沟通说我要换工作, 现在这份工作不是我想要的, 不是我想要学的, 当时父母和朋友也是极力的劝阻我, 因为是大公司,稳定, 也不是很累, 但是我内心清楚的知道我不会在那待太久的, 我不想在大公司做一个螺丝钉, 我想去一家比较小的公司扩展我的知识面和技术能力, 第一行代码里讲的比较的基础, 并且还有很多解决方案, 也教会了我用 git , 不得不说对我影响很大。我看了俩遍书之后感觉又扎实了基础, 但是我也知道这还远远不够, 公司很难要一个没有实际开发经验的程序员的(应届生是可能的), SO 我要学习一些稍微进阶的知识, 偶然的在一次在外地出差的过程中浏览论坛的时候发现了对我的编程思维有一定影响的牛人, 他把他几年总结下来的经验和思维模式通过视频讲了出来, 他讲的视频大多是付费的,并且他的每一个视频我都想看哈哈, 可是对于当时的我来说也是一笔不小的开销, 我看了他讲的几个免费的章节后 决定我要买, 于是当时斥巨资1000元买了课程, 我想像我一样花这些买课程的还是少数吧, 不过我就很笃定我能通过这些视频学到很多, 他叫 Stay , 教会了我很多思维和想法, 让我很受用, 我目前还在看他出的视频。到目前位置, 我差不多学习了三个月, 我已经迫不及待的要找工作了。
面试找工作终于到了找工作的时候了, 心想先投几个看嘛, 先涨一些面试经验, 记得当时去了挺多公司面试, 大公司的有猎豹移动, 58同城, 乐视,一些快速发展的公司比如动动, 乐动力, 还去了律师事务所面试我也是醉了,还有几个我已经记不住名字了, 总结来看凡事问我技术的我都觉得我回答的不好, 不扎实啊不扎实, 人家一问道实际的问题时我根本不知道怎么解决, 可谓四处碰壁, 垂头丧气啊, 那个时候面试了将近3三周了, 一个回信都没有, 我也明白自己有很多不足, 缺乏实际经验, 解决问题能力欠缺, 通过面试的反馈我也在不断的补足, 最后终于功夫不负苦心人, 我找到了理想的工作, 一 创业公司, 刚刚起步, 但是也是有面试门槛的, 给我看了一个效果, 让我俩天做出来, 这样的效果:
我当时一看这不就是郭霖讲的 [属性动画] 么,好吧, 他又帮助了我哈哈, 我通过学习他的博客一点点的用了俩天加上晚上多研究一会终于做出了demo,实现了四个按钮的效果, 心里很激动和兴奋, 然后发给公司看, 反馈还不错, 评价我有一定的自学能力, 然后又来了难题,说让封装一下, 可以设置按钮数量和半径,结果当然是我很轻松的完成了他!我的公司产品是 Funny, 是个很好玩的可P图工具,可以加很萌很可爱的贴纸并且能做很多酷炫图片的相机, 欢迎下载哈!So 我开始了我的Android开发之路, 但是我心里也知道这只是个开始!
开始加班加点的开发之路公司老板是做ios的,So ios端的产品进度已经远超安卓端, 到了公司我一个人做安卓, 并且ios端也有人在开发新功能, 可想而知我要追上进度并且不能落下新功能的进度, 再加上我并没有实际经验, 所以那段时间我基本是每天早上九点到晚上十点的节奏, 有的时候功能没完成 回家了还要继续, 最甚时候到了凌晨5点中,那个时候我心里憋着一股劲, 我不断的告诉自己,我可以!!!, 我遇到了一个接着一个的问题,根本没有任何喘息的机会, 那我就要一个接着一个的解决它, 在这里要感谢我的同学,我的好哥们 于海洋, 是百度移动云事业部的Android工程师,也是我学Android的领路人, 周末的时候我就拉着他在我家帮我看代码,平时也会总问他问题,有时候他都没回家(媳妇还在家)! 那个时候时间过的很快,也让我的技能等级不断的提升了,提升最快的时候是逼迫自己学习的时候, 就是这个问题我一定要解决的心态! 印证了那句你不逼自己一把不知道自己能做什么, 能完成什么的赶脚!写代码的时候有时候为了完成功能而开发, 心里真的很急, 不想很慢的完成任务, 也因为这样有很多隐藏的bug产生, 以至于每次更新版本都会有bug出现, 这里我大度的老板也是软硬兼施, 有时也会质问我, 但是更多的则是鼓励, 这给了我很多信心, 每天还是尽可能的提升技术, 不断的总结, 在这个期间我在搜索问题的时候很多都是 [stackoverflow]上的人回答的, 这也让英文不怎么好的我感觉很吃力, 但是也要硬着头皮去看, 读不懂就查, 这里希望初学者真的不要害怕难题, 看不懂就慢慢看, 看久了慢慢就懂了, 既提升了英文能力又懂了知识,很多创新的东西还真都是老外提出的! 提升了解决问题的能力才是最重要的, 不怕困难迎难而上是每个工程师必备的技能, 在这期间我知道了[github], 每一位工程师都应该有一个github账号, 并且将自己写的代码提交到上面去, 我每天用点时间开始在github上面逛,好多好多优秀的开源项目啊, 比如[android-open-project], 这里面各种控件各种功能的实现, 真的感谢作者的收集和整理!,当然我也开了自己的 [github账号], 我将自己这些天学到了知识做了分享, 总结我所掌握的知识, 这里强烈建议初学者都要将自己的学到的记录下来,写出来的感觉是不一样的 , 这个时候由于在公司表现的还可以, 涨了工资, 涨到了1万, 内心的兴奋不言而喻, 像是自己的努力得到了肯定, 我真的可以!
创造代码的感觉从刚开始进入公司一直都是在做ios端已经有的功能, 说白了基本上就模仿, 复制功能到 Android 上面来, 毫无封装, 代码很乱,这也让现在的我一有时间就在重构之前的代码,但是最近做一个需求让我感受到了创造代码的感觉, 实现一个可以横竖排切换的 Textview, github上面和其他网站的资料上面都没有很好的解决方案和代码, 于是我通过了自己的分析决定自己来写一个, 心动不如行动, 当天晚上搞到一点左右完成了一个简单的demo, 内心早已风气云涌, 这是我自己写的自定义View, 之前都是从github上下载的, 这次用自己写的! 总的来说自定义view虽然写起来很慢, 需要注意的细节也很多, 但是写出来之后的感觉不言而喻,一个强大的自己封装的产品!就像爬山一样, 爬到山顶的感觉不用提多爽了吧,写到这里基本总结了我一个快到一年的Android工程师的心路历程和经历, 我不算聪明, 我在一段时间内只能专注做一件事情, 相信比我聪明的你想做好一件事情肯定比我容易的多! 做Android工程师到现在, 时间虽然不是很长, 但是也有很多肺腑之言要告诉各位刚刚入门的初学者。
肺腑之言致刚刚入门学习Android开发的初学者这里我结合我自身的经历给大家一些建议, 希望能对你有所启发:
1 多看大神博客, 并且一定要有自己的博客,将知识记录下来, 自己写出来并且让别人看懂才是自己真正掌握, 好处多多, 你写了才知道!
2 注册一个自己的 [github账号](https://github.com/), 提交自己创造的代码, 好处更是多多, 另外在找工作面试的时候你的博客和 github 也很有用
3 写代码的时候能想到的封装和解耦一定要做, 不论你需要多久的时间, 完不成那就牺牲自己的下班时间来封装好, 以后用的时候你会知道它的方便之处
4 强烈建议用google搜索, 搜索的准确性和问题定位比国内的强很多, 上不了谷歌搜索做不了优秀的开发,翻墙已成必备技能!强烈推荐做应用开发的朋友每天看google的官方文档, 大有裨益
5 在开发过程中不断重构自己的代码, 重构要趁早, bug 毁一生, 每次重构你都能从中获益
6 在你感觉到自己基础知识不足的时候,比如看别人写的代码看不懂, 有泛型 反射等等的, 此时要回归基础,了解技术原理, 建议看 java 编程思想, 封装 集成 多态等等基础知识, 只用从基本的技术原理出发你有一天也能写出 极致的 可扩展性的 代码
7 在此借用 上文我提到的 Stay 经常讲的, What How Why ,无论做任何需求开发的时候都要想 它是什么,该怎么去做, 封装, 解耦, 为什么要这样去做, 带着这样的思路去解决问题
以上的经历和建议希望对你有所启发和帮助!
文章就到这里啦, 以上是我做 Android 开发的经历, 点点滴滴, 收获很多, 我也是个初级的Android开发工程师,差不多一年了, 以后的路还很长, 我们一起努力吧!
觉得文章有帮助欢迎关注我的头条号:「jin广越」