android编程自学 如何自学 Android 编程?
链接:
来源:
著作权归作者所有,转载请联系作者获得授权。
感觉这个问题我是挺有回答资格的。
我是12年金融学专业毕业的,Android都是大学的时候自学的,毕业的时候做百度云的Android开发,现在的职位是腾讯的Android高级研发工程师。
所以我感觉我是可以分享一下我自己自学Android的一些经验,而且这些经验也是通用的,比如我还有自学PHP用来写后台开发等等,希望对大家在开发道路上能有一些帮助。
我们做工程师的一般都有助理,普通,高级,专家等的区分,我把自己的自学之路抽象成初级之路,中级之路,以及还未达到的高级之路。依次来分析下,如何能够通过自学的方式,在技术之路上一步步提升。
1、初级之路
1.1 项目引路
对于自学的人来说,在边做边学的过程中是最容易起步的了。我的技术之路也是这样开始的,当年参加创业大赛的时候,我们想做一个类似于Admob的产品,拉上一堆好友开始做产品,由于我们缺乏技术,所以自己也上场了。从一个实际的项目开始,学习java学习android一步步的完成产品的开发,在后续的过程中,我们还做了一款抄袭Bump的软件叫做:《分享乐》以及一款聚会O2O软件我也忘记啥名字了,也许你现在还能在豌豆荚上搜索到。
1.2 学习
Java
Android
这个阶段我的学习资料主要来自于书本,那个时候是10年的时候了,网上资料还并不是特别多(个人到现在也是习惯书本系统学习),我记得Java语言是学习的《Java核心技术》,这个系列有两本书,这本书可以理解成一本工具书,对于Java的讲解面面俱到,在你不记得相关的知识的时候需要拿出来,巩固学习。而Effective Java的学习是进阶学习,在了解Java的基础的前提下,开始学习更多知识点。
学习完Java后,就按照入门教程上说的慢慢的做Android开发,这个时候API主要是在Android开发入门教程上做对照。但是这个时候大家都会遇到一个情况就是,实现之后会出现一些莫名其妙的问题,所以还必须要会利用一些平台去搜索。
1.3 解惑
现在Android的资料已经满天飞了,最好的方式就是VPN+google的方式了,基本上大部分的问题都已经有了答案,因为行业已经很成熟了。我们那个时候相关资料比较少,都是去论坛提问的多,比如那个时候的eoeandroid以及csdn的移动论坛,在里面搜索答案或者自己提问,这样就能解决很多疑惑了。
现在大家最好的地方就是:
1.4 找工作
1.4.1 策略
学习+刷题
当你不断的学习和做项目总结经验,总结遇到的坑和解决方案后,这个时候我们要从草根发展走向专业之路了,所以我们需要一份工作。
面试的时候,大公司对于应届生的要求主要还是集中在基础,所以对于数据结构+算法以及计算机基础知识是非常重要的。
1.4.2 资料
这个时候我的学习资料主要是:
不过很遗憾的是,后面2本看得比较少了,操作系统更是无法看懂,于是乎只能更多的去刷一些题目。
1.4.3 面试策略
内推+面试经验
内推最好的就是联系上你心仪公司或者产品的直接负责人、面试官或者开发者,比如你可以联系我,QQ空间和腾讯微云(我会直接面试你)都在招聘(强行做个广告)。社交平台是联系他们最好的渠道了,我那个时候就是通过微博找到了百度云的移动端负责人,然后获取了面试的机会(那个时候我们还在做一个百度通讯录的产品)。
面试的策略比较简单,就是先去一些自己不太愿意去的公司,多积累面试经验,把那些不会的都去搜索答案,然后弄懂弄会,然后再去面试自己心仪的公司和产品。
1.4.4 系统学习
进了公司之后你会发现,以前你写的都不是商业化软件,只是实现了功能,完全没法去保证质量和设计。所以工作后有很好的机会去学习商业软件的开发,在这个过程中也是要多依靠自己不断的学习提升,这就是我们的下一个话题了----中级工程师之路
update:2017年1月26日
2、中级之路
2.1 要求
中级开发者更多还是能够比较好的完成一个大型商业软件的核心功能模块,或者中小型商业软件的整体架构。
2.2 技能树
很多人想要知道技能树,比如通用的:
计算机网络、数据库、存储,数据结构、软件架构和设计、编码语言以及平台特性等技术点。
还有很多很多的技能树,而这些其实都依赖于你的项目经验和项目特性,为了点亮这些技能树,我们抽象出来更抽象层级的技能树。
2.2.1 解题思路
为什么解题思路很重要
很多人不解的是,为什么很多大公司总喜欢问一些算法题,而忽略自己的项目本身。其实很多时候当你的项目经历不够或者还不够深的时候,面试官了解不了你得解题思路,不知道你遇到其他复杂问题的时候是否有好的方式去解决。
实践出真知,我来考一个问题,这个是我们实际开发中就能遇到的,比如我们设计了一套数据通知机制,存储结构是链表,这个链表的排序方式是ModifyTime,现在有通知过来要更新一个数据,这个更新的数据ModifyTime也已经变化了,怎么能更高性能的去更新这个数据呢?(这个问题还可以深入下去,除开ModifyTime排序外还可以依赖更多排序规则,这样你的数据结构又是如何),这个策略的优化足够的让我们在大量数据的时候量级的优化性能。
如何提升解题思路 (一)基础扎实
首先我们要有比较扎实的基础技术能力,这个题目我们要的是扎实数据结构和算法能力,如果我们要做上传下载速度模块,那我们就会需要很强的计算机网络和存储这块的基础知识了,这些基础是我们解题思路的保证。
(二)学习很重要
这个学习是学习前人的,学习别人的,其实做很多事情都是有套路的,多去看源码和优秀的一些组件,多跟组内大牛交流,了解别人怎么做的,往往能让我们思路更加的开阔,从而让我们也有更加多的解题思路。
2.2.2 软件架构和设计
知道解题是第一步,思路有了,但是如何才能让我们的代码更加方便维护和扩展呢?
现在的大部分童鞋都是基于面向对象的开发方式了,大家知道为什么你的项目开发不用面向过程的写法呢?(虽然很多时候我们还是面向过程的开发)
面向过程 VS 面向对象 以前我们总是吐槽,产品经理没事就改需求,互联网产品的开发更多的时候是面向变化的,而面向过程的开发是需要明确需求的情况下开发的,否则一旦需求变化你的流程可能就全不对了,整体都需要重写。这也是为什么,我们很多时候用面向对象的语言基于面向过程的开发,在需求变动后是那么的难以维护,所以只有吐槽产品经理。
如何提升 很多人对没有设计经验的同学推荐设计模式的书籍,这些我是不推荐的,那些设计模式是我们在建房子基础上的装饰,最关键我们要解决的问题是:
如何从现实世界映射到对象世界
如何通过对象世界去描述现实世界的方法如何验证对象世界的行为是否正确反映了现实世界的方法。这里我推荐一本书:
高阶提升
有了这个基础之后,你可以看看设计模式,更为重要的是多看优秀组件或者系统源码,这些源码的设计和对设计模式的应用是非常多的,能帮助你在良好的建模之后还产生更多优雅的代码。
2.2.3 经验
(一)经验的作用
好的工程师有丰富的开发经验,一个业务在你做之前他就知道瓶颈在哪里,需要注意哪些地方?
举个例子:关于错误码的设计,一个业务模块错误码的设计是否可以随意设计呢,只要和后台不重复即可?
那么问题来了,我们现在要针对一些错误进行重试,那么遇到错误码后我们怎么区分应该重试还是不重试呢?如果写死几个错误码,那以后扩展了怎么办,后台下发如果不及时或者错误码越来越多了怎么办?
这个时候老司机会告诉你,老司机会告诉你HTTP的错误码设计很好,因为他是依赖数字段:
(二) 如何拥有丰富的经验
项目经验+总结+重复造轮子
项目经验丰富你自然而然懂得就多,踩过的坑就越多,多总结你才能记忆更深刻,更加能够系统性的去归纳这些经验,重复早轮子你才能知道没做过你总会错过那么多的坑。
多看优秀的源码,有可能的话重复造一遍也挺好的。
2.3 开阔的视野
很多国内技术项目怎么来的呢,因为国外有优秀的解决方案了,比如当年FB解决了2.3的LinearAlloc的问题,国内的解决方案开始爆棚了。比如FB的Buck构建,国内多少技术团队基于此做了构建优化(也得到了晋升)。这里我就不多说了,有能力的同学多做做创新吧。
这个问题值得大家收藏下
2.4 培养他人和带领技术团队的能力
这个领域我暂时就不展开了。
接下来就是高级之路的分享了
3、高级之路
未完待续
PS:排版怎么都给丢了,大家将就着看吧。。。 2/3 首页 上一页 1 2 3 下一页 尾页
更多阅读
新婚夫妻如何快速怀孕?
新婚夫妻如何快速怀孕?
已越狱iOS6.1.2的iphone4s如何升级IOS7? 4s6.12越狱升级ios7
已越狱iOS6.1.2的iphone4s如何升级IOS7?——简介随着ios7越狱的放出,越来越多的果粉们经受不住ios7的诱惑,想要升级了。但是已越狱的手机怎么样才能直接升级ios7呢?下面我就来介绍一下备份、升级到iOS7和恢复数据的全过程,希望对想要升级
男人如何抗衰老? 四十岁男人抗衰老
男人如何抗衰老?——简介 皮肤的自然老化是不可抗拒的规律。但是借助多种手段可以推迟它的发生,并减轻到不引人注目。除了在饮食和睡眠等健康方面的调节以外,分各个阶段,选择相对应的有效护肤产品,绝对是一种行之有效的方法。男人如何抗
360如何杀毒? 如何下载360杀毒
360如何杀毒?——简介360是奇虎公司推出的一个免费杀毒软件,360在PC电脑端的流量是非常大的,因为它颠覆了付费杀毒的行业。360如何杀毒?——工具/原料360安全卫士。360如何杀毒?——方法/
iphone5s如何升级4G? iphone5s升级4g网络
iphone5s如何升级4G?——简介众所周知,港版iPhone5s可以直接升级运营商网络升级4G,但是没有买到港版的小伙伴又怎么办呢?不用担心,国行iPhone5s同样可以升级,本篇经验以联通版iPhone5s为大家带来iPhone5s升级4G网络方法。iphone5s如何升