面试解惑:如何系统学习Android开发?
在最近在进行模拟面试,除了我问面试者问题外,也会和面试者交换了一些看法,回答了一些他们比较关注或迷惑的问题。
在回答这些问题时,有时候是即兴发挥,事后在反思面试者遇到的这些问题时,我觉得还是有必要就这些问题进行一个比较完整的论述,也算是对自己思维过程的一个总结。同时也让有相同问题的读者可以直接看到,如果能获得启发,那正是我所愿。
今天和大家分享“如何系统的学习Android开发”,面试者在问我关于学习Android开发的问题时,基本上没有“系统”两个字,大家常用的问法是:不知道怎么学习Android开发,没有方向,不知道该往哪里使力。
什么是系统?
为什么我会提系统两个字呢?先说一下新手和专家的区别,大家常常认为新手和专家的区别在于经验上,这样说也不能说是错的。因为确实这个经验是很重要的,但这个经验不是指实施某项技术获得了一个过程和记录,而是指通过实施某项技术促进了思维的改变。
如果思维没有改变,那么一个声称拥有十年经验的开发人员,实际上只是一年的经验重复了九次。
新手往往都不是特别想要学习,也不知道自己的行为是对是错,只是想实现一个立竿见影的目标。如果给新手提供一个与情境无关的规则(或者叫指命)让他们去执行,他们就会变得能干起来。
而专家更关注情境,更关注系统,而且喜欢说“具体情况具体分析”。他们往往更关注事物之间的联系,把自己看做系统的一部份,能分清和认识到系统的边界。
新手往往不把自己看做系统的一部份,所以学习Android开发也变成了一项孤立的事件,学习的模块也变得孤立起来。虽然花时间学习了很多组件或者技巧,但是却没有理清过这些模块或问题之间的关联。
然而,现实中的问题都是不是孤立的,理解系统,学会用系统思维才更有利于你去解决问题。
系统学习Android的资源和方法
而问怎么学习Android的人,从学生到工作过几年的程序员都有,大家都在关注怎么学好Android,怎么让自己的开发技能提升,往往看到什么技术或亮点都想学一下。但太多的人却忽略了系统,没有好好系统地学习Android的一些基础和这些基础特征之间的联系。
具体的学习方式每个人不一样,这里我给出一个我认为比较好的方式:完整地看完和练习官方指导文档。网上有太多Android开发的视频和文章,但他们都过于碎片化,只有这份官方文当是我认为最系统介绍Android开发的指南。
网址:https://developer.android.com/develop/index.html
一定要把官方文档中的“培训”和“API指南”认真的看一篇,而且花时间把相关的知识联系起来。这个工作只能靠自己了,官方都已经出了这么好的系统学习资料,但是你不去系统的学就是你自己的问题了。
我们想要的东西往往都在身边触手可及,但我们却喜欢跑到遥远的地方去追求虚假的华丽。
想做Android的模拟面试的读者可以点击这里:一天一面
另:我在GitChat上发起了一场关于“程序员生存指南”的Chat,将用文章+微信群在线交流的形式和大家进行分享,欢迎有兴趣的朋友用微信扫描下面的二维码订阅。