前言
看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才
仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不
容易,一般需要进行大量的面试才能挑选出一个比较满意的。为什么中高级Android程序员不多呢?这是
一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的
Android程序员提升自己。由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对Android
学习过程的认识来写这篇文章,这会让这篇文章更加真实,而并非纸上谈兵。
我的工作经历
前面说到,我也是从一个Android菜鸟过来的。其实这句话放在任何人的身上都是适用的,即大家都是一
步步过来的,因此作为初学者也不必因为技术差而郁闷,同理,高手也不要看不起一些所谓的菜鸟,因为
这不公平,技术只有在同等的工作年限上才具有一定的可比性,也许你眼中的菜鸟只是个工作半年的新
手,而你已经工作5年,可想而知,这根本不具有可比性,搞不好别人5年后可以达到比你更高的技术高
度。
我有若干个技术QQ群,群里(481798332)的小伙伴对我的工作经历比较感兴趣,刚好在这里我就做下
介绍。我是硕士研究生毕业,我已经工作3年零3个月了,职位上从最开始的腾讯初级工程师变成了现在
的百度Android资深工程师。最开始我并不是做Android的,先是做了半年的C++,接着做了3个月的
Web前端,然后公司内部转岗做Android到至今,纯Android工作年限的话其实是2.5年。但是我认为我
的Android工作经验(注:工作年限不等同于工作经验)不止2.5年,我投入大量的业余时间在Android
开发上,并且我习惯去思考问题、总结问题并将其融会贯通,因此我的Android技术在短时间内有了很大
的提升。
在Android学习过程中,初学者踩过的坑我也都踩过,我也深深地知道大家在学习过程中最棘手的问题是
什么。举个例子,在3年前,我想在SlidingMenu中放入一个ListView,发现二者总是不能很好地一起工
作,这肯定是由于滑动冲突的问题,我也知道,但是不知道怎么解决。我就去学校图书馆翻遍了所有的
Android书籍,无果。大家肯定都知道原因,为什么我无法从书中查找到问题的答案,因为入门书不讲滑
动冲突,所谓的高级编程书也不讲。还有一个问题,我曾经以为view.post(runnable)可以让runnable的
run方法在线程中执行,所以我就在run方法里面去做耗时的操作,现在想想我当时是多菜啊,因此我曾
经也是菜鸟。
直到若干年后的某一天,我终于琢磨透了滑动冲突的事,然后我就把解决问题的思想写在了CSDN博客
上,但是好像看得人并不多,很多人并不能体会我的用心,后来我博客的访问量越来越大,这才慢慢地得
到了一些人的关注。后来有一天我有了写书的契机,我想到了我最开始学习Android时所踩过的坑,想到
滑动冲突对我的困扰,为了更好地传播我的技术经验,为了让更多的人少踩一些坑,为了让更多地人成为
Android高级工程师,我毅然决定将Android开发中最重要的、最疑难的、最容易困扰大家的、成为高级
工程师所必备的知识点和盘托出,这就是《Android开发艺术探索》存在的原因以及意义。书的反响怎
么样呢?从目前读者的评价来看,内容基本无差评,我收到了很多读者的肯定以及感谢,这说明很多人能
够理解我的用心。
说了那么多,言归正传,下面说下Android学习路线的话题,本文打算从4个阶段来对Android的学习过
程做一个全面的分析,分别为Android初级、中级、高级以及资深工程师,具体请看下面的分析。同理,
本篇学习路线仍然只针对Android应用开发,不针对Rom开发和逆向工程等。这里虚拟一位“小明”的
角色,在这里小明就是Android初学者的代表。