Android 修炼手册
Apr 9, 2017写在前头
从 0 开始 Android 之路,你如何不断进步?一年半 Android 的小白的自省,因为我最近有可能转做 Java 了所以,回过头看,把自己的经验记录下来,供自己回忆和旁人参考。
正文
一定要会用「 Google 」而不仅是「 百度 」。
常见第一个现象就是一个问题百度搜出来的结果都是千篇一律,转载还算好的,(侵权)抄袭很严重,而且很多知识点根本都没有实践,常常会误导,我如果写博客,自己写的东西一定是自己反复实践过的,把这些宝贵的经验总结出来对后来人有一点帮助,就够了。第二个现象是,百度搜索的结果第一屏总是全是广告,而且,比较隐蔽,体验极差,太多招黑的事情这里就不多描述了。
总之,对于做技术的我来说,就像知名博主 stormzhang 所说的,“ Google + Stackoverflow + GitHub 就再也没有解决不了的问题了,而某种意义上,开发其实主要就是解决问题的能力!”。如果你刚想尝试,发现用不了 Google 搜索,那么你需要学会一件事:用「 百度 」帮助你去学会怎么使用「 Google 」,就像新的 windows 系统,第一件事总是用「 IE 」去下载新的浏览器。
一定要去学英文,并且打心底去拥抱她。
很多人并不是学会不会英语,编程都会,英语学不会?但是如果从学校出来之后英语基础没打好,可能对英文网站更有一种恐惧感、厌恶感,不愿意去看去学,其实大家英语都会有点基础,我们所接触的英文网站(如 github、stackoverflow)上也不会有那么多难懂的单词句子。我推荐点办法:如果一句话有很多不懂的单词,那么就把每个单词都查询一下,再把句义推出来;如果一句话只有一两个不懂的单词,那么先试着推理一下句义,其实很可能你已经知道单词的意思了;如果一句话单词你都知道了,但是句义不清楚,没有捷径,对着翻译多看,既然每天工作都这样坚持看英文,相信我,进步速度是非常非常快的。当然还有很多其实大学就过了四六级的同学,那你们的压力更要小的多,只是愿不愿意的问题,我的答案是当然愿意!
一定要在发现问题的时候有深入研究的意愿。
你在自己的项目中有没有遇到是棘手的问题?你是真的发现了问题的根源还是只是”让问题不再复现”?如果某个依赖框架总是报一个莫名其妙的异常,你是否会面对源码排查?很明显,有些问题没有绝对正确的答案,这个项目可能很急,也可能处于各种因素的考虑,需要快速的修复,但是我们作为技术人,要总是有种时时想去深入研究一下的愿望,解决后的成就感是不言而喻的,即使没有解决,你的时间也肯定没有浪费,看过这个框架的源码,设计思想,对你来说一定是一次宝贵的学习机会,这在前期更为重要。如果自己的任务完成,也许有空还可以帮助别人解决 bug,贡献他人是世上少有的容易增加幸福感的事之一,同事、交流群、活跃的社区,你一定发现过别人的求助,你当时是什么态度呢?
一定要在自己的产品或项目中想方设法持续做优化。
测试没有问题?可能是问题没有发现。有时候看起来一样的 APP 实际的质量差距非常大,很多低级和高级工程师的差距也会在这些过程中得以体现。项目结构及抽象合理;内存优化更好;配置参数找到平衡点等。可以通过学习 github 上别人写的框架;使用一些内存泄漏检测工具,如「 LeakCanary 」;了解图片的缓存和色彩模式(Android 中的图片加载绝对是个大骨头)。现在环境中竞品如此之多的情况下,可能一点细微的超越就是你产品出众的秘诀,保护创意的最好办法,就是将其最好地执行。
一定要留一些时间去写或看工作外的项目。
你的产品或项目不可能总会用最新的最热的框架,甚至可能是有点落后的,但是并不一定你想换就能换,这中间问题就很多,稳定性,兼容性,team work,学习/风险成本等,但是这不能成为你自己止步不前的借口, 想要更快速的成长,你必须有所行动,勇于去尝试新的技术,了解先进的项目在用些什么,这样即使你以后有更好的升职或跳槽机会,幸运女神也会给你更多的眷顾。
一定不要放弃阅读。
你可以有很多兴趣爱好,因为时间总是有限的,在现状下其实只能列个清单,排出个优先级,但是,阅读请一定要保持下去。可以是技术相关的,JVM、数据结构、操作系统,也可以是非技术相关的,小说、心理学、经济学、哲学、传记、励志鸡汤等都可以广泛涉猎,万一以后你用上了呢?一点也没用上,我相信也会开拓你的视野,提升你的品味吧,这些可能在你的工作中很难了解到。现在公众号、各种移动社区也都有非常好的资源,我们可以更好的利用我们的碎片化时间,比如阅读。久而久之,必定有所提升。
一定不要放弃运动。
其实我没什么资格说的。基本每天的运动量就是上下班走的一段路,每天平均八千步吧,但是,为了我们的健康,还是要更多运动,共勉。