我的安卓之路主要有四个阶段:
入门
实践
准备面试
工作
2014 年,学习 MFC 中途放弃的我,偶然间看到 Mars 前辈的安卓视频,看了几天写了个简单的应用,觉得安卓开发挺有趣,同时学校的俱乐部认识了学长,得知一个学长去了阿里做安卓,让我很心动,便决定开始学安卓。
开始的时候我没有重视 Java 基础,直接就看 Mars 的视频和《Android 从入门到精通》的书,照着书一章一节地学、敲,一开始是死记硬背,写的久了,逐渐熟练了,但还是靠背的居多。
现在大家可能看不上这种《XX从入门到精通》的书,但我当时用一个暑假整个读完、敲完,感觉收获还是很多的。它的内容可能很简单、网上都可以搜得到,但对于当时完全没有体系的我来说,这本书的好处是非常的系统,我在没有网络的情况下也可以阅读。
这个阶段的问题是没有主动去网络或者学长那里请教学习路线,直接看书、看视频,基础都不扎实,导致浪费了很多时间。
从初始到勉强可以说是“入门”,大概花了小半年。水平大概就是:可以写一些简单的布局和页面跳转,知道四大组件但基本只用 activity。
2014 年底,书和视频看完了,我跟着书写出了第一个项目,一个简单的记事本,稍微复杂点的就是 SQLite 操作。界面很丑,但装在自己手机上跑起来、给朋友展示、完成学校作业,让我觉得很有成就感,觉得没白学。
后来又找到“X马”的一个项目视频,跟着学了一个手机卫士的项目,这个过程中熟悉了 Eclipse 和 Git,掌握了稍微复杂点的布局。
这个阶段的问题是只是跟着书、视频一句一句写,没有思考为什么要这么做,导致收获不够多。
这两次小实践让我对书上的知识有了更进一步的理解,阅读时有些章节嫌麻烦直接跳过、有些细节匆匆略过,在项目中用到了,书籍结合着实战,才理解了一些开始觉得晦涩的概念。
做了两个小项目后,我又做了些简单的项目,包括本地播放的音乐播放器、一个加密解密的软件等,参加了一些小比赛,拿了二三名,就觉得自己“挺优秀”了。
2015 年,在接连面试了腾讯去哪儿还有些其他公司,均未果。
腾讯倒在一面,被一个问题难倒“Vector 和 ArrayList 区别?”;去哪儿倒在二面,手写单例模式写不出来。
这一连串的失败让我意识到自己的基础很差,光会画 UI 填布局,稍微深一点的问题就难倒了,不论 Java 还是 Android,都浮在表面。
于是我开始搜集网上的面试问题,“面向面试学习”。
在“面向面试学习”了一段时间后,我掌握了一些“常考点”:启动模式、生命周期、Service 创建的两种方式、Handler 机制、垃圾回收等等,现在烂大街的内容,当时掌握了的确让我很快就找到了工作。
2015 年先后去两家公司实习,第一家西安的公司呆时间比较短,那段时间我在博客记录了很多工作总结,现在看看主要是熟悉工作的流程、心态的调整,这个过程中用的主要是 eclipse,熟悉了一些开源框架的使用,也没有意识去了解自己负责部分以外的内容。
换第二家来到了上海,开始用 android studio,在同事推荐下去看官方文档,逛 github,学习一些常见库的使用。
2016年,在饿了么电话面试未果、前辈点拨以及看框架什么也不懂的多重打击下,我意识到自己还有很多很多的不足,其中最关键的是 Java 基础不足。
前面提到的准备面试过程中,我看了很多安卓基础的东西,Java 反而忽视了,于是开始补基础。你们可以看到我博客的很多 Java 基础内容,都是 16 年开始写的。
2017年,博客访问量增加、开始运营公众号,网上结识了很多朋友,关注了高质量公众号,坚持交流分享学习,一直到九月份换了新的工作。
从我的学习之路可以看出,学习安卓的过程中,几个关键点是:
看书
练手
以考带学
商业项目
开阔视野
看书是第一个阶段必不可少的,这个阶段找入门大众书看几本就好,目的是掌握通用知识,不必太纠结于细节,否则坚持不下去。
这个阶段最好是别看博客,像“安卓进化论的安卓进阶指南”这样可以成体系的博客太少了,东看一点西看一点,建立体系的速度太慢。
至于选什么书籍,根本不是你迟疑的理由,X乎上一搜答案太多了。
官方文档有能力的可以刷一刷,质量有保证。
看了一两本书后就可以练手,实践出真知,跟着书或者视频或者开源项目,从头做一两个项目,了解这个领域开发需要用到的知识、工具,不必纠结于具体细节,先丰富认知体系。
不知道做什么项目?
如果你买书的时候仔细看看后几章,其实都有项目实践的。若是喜欢看视频,各种在线学习网站视频教程也不少。
了解了一些技术的使用后,想要深入学习一下又不知道该学到什么程度?
又一个办法就是“以考带学”,什么意思呢?以准备面试题的心态,搜集问题、解决问题,在这个过程中深入学习之前只了解表面的知识点。
最好选大公司的面试题,越大的公司考察的内容越基础越实在,小公司往往考察你对 API 的理解,价值不大。
知识积累差不多够,就需要在实战项目中磨练、提升了,商业项目里需要考虑效率、性能、架构各个方面,找一份工作,多看看别人是怎么做的,吸收、进步、总结,你就可以从入门到进阶了。
到这一步,还不够,还得保持继续学习的心态。时代在不停地变化,我们要想有饭吃,就一定要紧跟潮流。