我的 Android 学习之路

3,979 阅读10分钟

我的学习之路

今天不谈技术,来跟大家聊一聊这几年的开发之路,希望以自身的经历,向各位开发者抛砖引玉,少走弯路。首先自我介绍下,我是徐宜生,《Android群英传》和《Android群英传:神兵利器》的作者,慕课网Android讲师,CSDN博客专家,乐于分享,热爱技术。下面是我的微信公众号,欢迎大家关注。

初学

当我在读大三的时候,Android才刚刚崭露头角,那时候我还在学习J2EE,而且算是比较努力,J2EE学的挺卖力,以至于做了几个小网站、小系统,后来逐渐接触到了Android,记得当时是导师准备做一个学院的信息推送系统,类似于现在的极光、个推一样。还记得当时借用了国外比较成熟的Androidpn框架,也就是基于XMPP的Android Push Notification,一上来就搞这么高级的东西,我也一下子就蒙逼了,但实际上还好,这是一个比较成熟的框架,从服务端到客户端,都有比较完整的实现,我们也是在此基础上进行一些定制和修改。

也不知道是不是因为这个原因,我现在还和推送有着不解之缘,维护着公司的PushSDK。正是当年的这个项目,让我第一次了解了Android,从最开始在模拟器上运行Androidpn的Demo,到后来修改Demo定制一些简单的页面,我越来越觉得Android确实是一个非常好的学习方向,甚至一度想放弃J2EE来专攻Android,然后,我最终还是在大学与Android擦肩而过,原因竟然是因为我经过一段时间的学习,将Android的基础知识全部看了一遍,感觉并没有什么太高深的东西,不像J2EE,各种框架,各种概念,实在太没有挑战了,于是,我就选择了将毕业设计作为Android的谢幕演出,花了两个礼拜,边实习,边开发,完成了我的第一个独立的Android项目——一个简单的图像处理App。这个App可以调整图像的色彩参数,甚至添加一些特效、拼接等等功能,简直就是一个简陋版的美图秀秀,以至于我后面在慕课网录了两节课,专门就讲图像处理!至此,我的Android生涯差点结束,并在毕业后跳入了J2EE的火坑。

甚至因此错过了与stormzhang共事的机会,因为那个时候薄荷在我们学校招聘,只因为我看不起Android,而没有去薄荷工作,如果上天再给我一次选择的机会,我还是会选择放弃薄荷的Android机会,因为这样我就遇不到我老婆了!!!

转行

说J2EE是火坑是有点过分,实际上,是指对日的J2EE,跟我大学时想象的完全不一样,何止是没有挑战,简直是毫无挑战,比Android还不如,小日本把所有的功能都封装起来了,做成了一个庞大的SDK,我们只需要简单的按照式样书进行调用即可,甚至你都不能对小日本写的代码进行优化,必须完完整整的Copy,对我这样的人来说,简直是对智商的侮辱,这样的日子,简直是无聊透顶,以至于经过一年多的煎熬后,我毅然决然的跳出了这个火坑,不过,现在我倒是很感激这段时光,因为在这段时间里,我有了充分的时间来学习自己想学的东西,对,也就是我曾经一度抛弃的Android!!!我又把它捡了回来,因为自从我抛弃他以来,他就飞速的发展,估计是想重新引起我的注意吧,不过,他很成功的引起了我的注意,经过一段时间的思考,我毅然决然的放弃了J2EE的学习,而是转向Android开发的学习。另外,时间多了闲着蛋疼,多出了很多健身的机会,从而可以在现在同事各种背不好,腿不好的情况下,还能笑看云淡风轻,虽然现在不锻炼了,导致体重不断飙升,但至少这段时间打下的底子,至少让我能够多干20年。而且,这段时间还学了日语,偶尔还能在小电影前面会心一笑,そうですね~不管如何,也算是多点了一个技能点吧,当然,最重要的,还是遇到了我的女朋友,也是现在的老婆,是真的老婆,不是充气的,也不是二进制的。所以,干了这碗鸡汤,生活中的每一段时光都是独一无二的。

总结下干货,在这段时间里,虽然我没有从事专职的Android开发,但是,在业余时间,我通过自学掌握了大部分的Android基础知识,我的CSDN博客也是在自学过程中对知识的积累、记录而产生的。总的说,自学Android,并不是什么难事,找一本讲Android基础比较全面的书,一本就够了,其它的东西,在网上都可以找到各种知识来完善,所以,先学基础知识点,再通过网络知识来进行完善,就是我的学习方法,另外,跟所有人说的一样,敲代码才是检验知识的唯一标准!!!

真羡慕你们现在的人,有多少Android开发的书可以选择,特别是我的《Android群英传》,要知道,我那个时候,压根就没有很多Android开发的书籍,特别是大学那会,要学一个东西,除了看英文文档,就是看源码,完全就是两眼一抹黑,现在是学习技术的好时代,真的。在这本书中,我总结了学习的方法和Android进阶的必知必会的知识点,我的初衷是想通过这些知识点的学习,教会大家如何去学习、如何去归纳、整理知识点,从而建立自己的学习体系,帮助开发者建立这个体系,才是这本书最大的愿景。读者可以通过这本书的学习,快速掌握Android开发进阶的技巧,在最短的时间内,突破学习的瓶颈期。

进阶

在我决定离开J2EE这个火坑后,就准备求职Android开发了,可事实确实很残酷,因为我确实没有实际的Android开发经验,很多公司都不肯要我,即使我笔试、面试的题目都答出来了,但最后总会告诉你,由于没有Android实际的工作经验,我们不能录取你,特别是某个卖酒店、机票、旅游的公司,我想跟你说,你现在来求我,我都不会去了,辣鸡。最后,在TCL碰到了一位伯乐,毅然接受了我这个没有任何Android开发经验的人,事实证明,他的选择是正确的,至少证明了他看人是准确的。到了TCL,被安排在了Framework Team,我想说,这是我当时工作以来,最好的Team,以至于现在跟他们都还保持着比较密切的联系,甚至在离职时,真的有种说不出的难受。虽然现在他们很多人都去了不同的地方,但那段时间,是我技术成长最快的阶段。这段时间,也真的是阴差阳错,有种令狐冲困在西湖底,莫名其妙学会了吸星大法,张无忌掉下悬崖却捡了九阳神功的感觉,我本来是做App开发的,基础已经打的比较扎实了,对原理却并不是非常了解,结果来了Framework Team,天天和底层打交道,而且还有一些比较牛逼的同事,能够随时解答你的疑惑,简直比Google还快0.5秒,也正是这段时间,我突破了自己的第一个小宇宙,真正的了解了Android的主要实现机制和底层实现,最重要的是,掌握了分析、解决问题的方法,这也是我在《Android群英传》一书中一直强调的一点。知识是学不完的,掌握学习知识的方法,才是最重要的。

再总结下,初学者真的没有必要过度的掌握源码,先了解使用的方法,才能在后面进阶的时候游刃有余,基础不打好,一味的通过看源码,只会适得其反。当然,当你基础打到一定程度,一定要去了解实现的原理,不然一样是之后原地踏步,而不能站着高级层面来看问题,就好像三体中的降维攻击——二向箔,再低的三维也比你最牛逼的二维叼!

继续提高

如果不是传统行业的低迷,我或许也不会离开TCL,迫于生活的压力,只能寻求互联网行业。经过一番风雨,这时候的我,已经像进化了的超级赛亚人,不再像以前那样没有自信了,毕竟Android基础扎实,有业余实现的小项目,有了一本著作,是慕课网Android讲师,还是CSDN的博客专家,这些光环,确实在我面试的时候带来了一些便利,最终进入了沪江,注意是沪江不是卢江,也不是长江!进入沪江后,同样遇到了一群非常赞的同事,很感谢他们对我成长的帮助,在这里,我了解了很多实际项目中的架构和技术,这些是我一直以来最欠缺的,同时,我也希望分享自己的技术,来让各位一起提高,这确实是一个互利互作的时光。好了,进阶之路暂时写到这,后面还可以慢慢聊。

一不小心写了这么多,确实是自己的感悟,现在的时代,真是学习的好时代,有前人的经验,少走多少弯路,看看现在94年的朋友、高二的朋友都已经Android玩的飞起了,自己都这么大岁数了,唉,好好学习吧。另外,最近我的第二本新书《Android群英传:神兵利器》已经上市了,写这本书的原因是,由于第一本书的篇幅限制和主题限制,有一些原本想写在第一本书里面的内容,在主编的建议下,放到了新书《Android群英传:神兵利器》中,如果说第一本书是帮助开发者建立知识体系架构,那么第二本书,就是帮助开发者通过工具来快速提高自己的开发能力,甚至说不仅仅是开发者,整个IT从业人员,例如测试工程师,也能从中获得很多东西,特别是对于性能测试的内容,已经平时的一些开发、测试工具。我希望通过这本书,让读者能够利用工具,快速完成平时的工作,从而有更多的时间来学习、总结,甚至,希望读者能够开发自己的工具来提高开发效率。