大佬你好,作为一个Android开发者,在学习过程中有什么需要注意的?
这个问题其实也不太好回答,因为要注意的问题蛮多的,多得就像雾霾中的颗粒。不过,有趣的是,流年似水这两次的提问中,对我的称呼大有不同。
再说,我也不是什么“大佬”,无非比较接地气一点,喜欢和大家交流分享的感觉而已。
那么接下来,我就针对这个提问,做一些回答。希望对有类似问题的同学起到一个参考的作用。将以以下几个方面做出回答:
1.不断学习
2.分享一下我的学习方法
3.移动开发者核心生存技能(高能!)
为什么要不断学习
问题
无论是博客园也好、公众号也好还是微信里的聊天,总有朋友问起诸如此类的问题:
- 某某技术XXX框架都帮我们封装好了,我们去学习了有什么用?
- 感觉你的知识面好广,实际工作中应当用不到这么多知识吧,那学习了有什么用?
- 某某技术工作中根本用不到,有什么好学习的?
我认为这是一个值得思考的好问题,就这个问题,基于我平时的学习和一些个人的思考,分享一下想法。
更快速有效地开发代码、处理问题
记得我刚刚工作那会儿,知识储备不是很足,这种时候工作中难免遇到一些问题:
- 需求开发时碰到有些不会的地方频繁百度、写Demo,碰到报错的时候,一些不认识的又得百度,造成需求开发比别人慢
- 测试环境还好,有时候在线上碰到了一些技术性的问题,例如死循环、内存溢出这些,手忙脚乱,没有方向
也就是一次一次这样的情况之后,让我有了个人的思考,核心归纳起来就是两个字:储备。
储备,换言之就是以工作中可能碰到的一些问题不断地去学习、不断充实自己,当自己掌握地越多,当知识储备越充分,你会慢慢发现自己:
- 开发需求的速度比别人快
- 能主动去优化自己以前写的代码、他人写的不好的代码
- 处理问题的效率比别人高
最后就是领导觉得你优秀、出去面试对方觉得你优秀,承担的职位越来越重要、干的活越来越有技术含量,拿的薪资越来越高。说白了怎么衡量一个程序员比其他程序员好?我认为就两点:
- 别人做不了的事情你能做
- 你做的事情比别人做的又快又好
可以分享的经验是,现在工作中遇到的问题,我基本解决时间没有超过1小时的。
让自己更聪明、更勤于思考
虽然起了这个大标题,但是我本人并不认为我很聪明,这个要声明在前面
尽管如此,但是所谓"活到老学到老",通过学习,我认为还是可以让自己不断提高,并不仅仅是学习到的那些知识,更多的还有:
- 不断举一反三的能力,XX知识这么做,那么换一种方式做可不可以,XX知识写法是这样,换种写法可不可以,有什么问题
- 不断质疑的能力,质疑别人写的每一个细节是否正确,从质疑中反向让自己成长
脑子越用越灵、越用越活,这些都是学习、思考带来的。
面试有用
这个理由功利性很强,但是很实际,因为对我来说这个不是我平时去学习的理由,就放在最后讲了。
现在出去任何一家公司,指望面试官仅仅问你如下问题:
- if...else...、while、for的作用,怎么用
- 你的项目有哪些东西,你负责了什么,做了什么
- 项目中用到了哪些框架
坦白说,那是不可能的,即使仅仅问到了这些且你100分通过,也不建议去,无他,面试层次太低。
但凡像样点的面试,问稍微进阶点的用法、细节性的问题、底层性的原理都是再正常不过的了。
很多东西,平时没有一点积累是答不上来的,答不上来的东西越多,自然面试成功的概率也越低。
小结语
就这个写了一些个人思考,希望对大家有益,最后总结一下:
- 学习这个东西,不是为了当前,而是将来,至于学什么,看个人
- 好好学习,天天向上!
分享一下我的学习方法
接下来分享一下我的一些学习方法,希望能发给大家一些启发。
自己钻研or看书or看博客
直接切入正题,根据我个人经验来说,我们学习的途径通常有自己钻研、看书、看博客三种,那么这三种学习方式各适合怎么样的场景呢?下面我按照我认为的几种层次说说我的看法。
-
看书:我始终认为看书是一种最好的学习方式,因为一本书能出版,绝大多数情况下都是经过了作者的千锤百炼,书本里关于知识点的讲述、对Demo的编写一定是经过了斟酌与考究过的,因此学一个知识点只要买一本好书,从头看到尾,Demo全部敲一遍且理解一遍,必定大有精进。像我学习的大部分知识,性能优化、NDK、Java基础这些都是通过看书敲Demo来学习的。
-
看博客:一本书可能有几百页会比较多,博客通常是对于知识点的总结与提炼,将几百页的知识提炼到一篇或者几篇文章中,但不会有书本讲的这么详细。因此我认为博客是对于书本知识的一种总结,学习,以书本为主、博客为辅是最好的。另外,博客不像书本需要经过一段时间的学习,博客看看比较快,适合短时间的学习(比如午休、晚饭点),对于扩宽自己的知识点、知识面也是非常不错的
- 自己钻研:自己钻研是最高一个层次了,这依赖于扎实的基本功,当我们基本功扎实之后,我们可以尝试自己去钻研一个知识点了,自己钻研的知识点一定比看来的知识点印象更加深刻。像源码这些,也是在我认为自己的基本功扎实之后,才开始尝试去自己学习的,花的时间会比较多,但成长地同样也比较大,因为思考的更多、想的更多。
最后说说书本的选择,我是非常推荐买国内的书而不是老外写的书,国内的书比较偏重实战,说代码并通过代码讲解知识点,老外的书偏重把一个理论讲精、讲细,前者适合初学者学懂知识、后者适合深入研究。
这里推荐一些书籍:
Android初级入门:《第一行代码》
Android开发进阶,以及设计模式的学习:《Android开发艺术探索》,《Android源码设计模式解析与实战》
自己学懂====>写下来让别人懂
学习当然是为了自己,但是写下来且别人懂是我总结出来的非常重要的一条经验,大致说起来是这样的:
-
首先,把东西写下来,这样可以以后随时可以看,但是如果不写下来,可能现在学懂了,之后又忘了
-
学习的时候,可能有些知识点自己是觉得迷迷糊糊似懂非懂,就当做懂了算了,组织成文字就不一样,懂就是懂、不懂就是不懂,不懂的东西是很难用懂的文字写出来的
-
因为写出来的东西别人是能看到的,因此也是强迫自己用通俗易懂的话去进行总结,能把一个知识点用通俗易懂的话说出来,我可以认为是真正学通了
- 给别人看了之后,别人不懂,可以留言提意见,看了别人的意见之后,回复,有问题及时改,对于自己也是一种促进,至少我自己是从网友的留言中学到了很多东西的
可以给大家分享的是,至今印象深刻,当我一开始写博客的时候,写的插件化、热修复,当时写完我还万般犹豫,到底要不要发、要不不发算了,但是咬咬牙发布了之后,慢慢地咬牙、慢慢地咬牙,之后写博客已经越来越成为我学习的一种习惯了。
现在我个人的想法就是:假如学习任何知识点,我不能写成一篇博文,那我绝对不会认为这个知识点我已经学懂。
习惯成自然,大概就是说的这个意思吧!
写下来让别人懂====>说出来让别人懂
说出来让别人懂我认为是学懂的最高层次。
写了博文,别人给你留言,你可能可以等个10分钟、10小时、10天把东西弄懂了才回复,但是说出来则不一样,很多问题都是突发的,说得出来就是说得出来,说不出来就是说不出来。
因此,说出来让别人懂这个层次依赖于我们把一个知识点从头到尾、从前到后彻彻底底搞懂,这样才能无畏地面对任何问题。
如果有勇气演讲、分享,无论组内的5个人、还是公司的50个人、还是外面线下活动的500个人、5000个人,那都是对于自己最大的成长。
小总结
学懂==>写出来==>说出来,通过上卖弄的分享,希望大家可以朝着更高的层次迈进。
##移动开发者核心生存技能(高能!)
这是一份一份大而全的“Android高级工程师”面试xmind(实际上比预期多花了不少精力),包含了阿里、美团、百度、网易、腾讯、美团等今年面试题中出现的知识脉络 分支细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
这份 xmind 尤其适合:
1.近期想跳槽,要面试的Android程序员,查漏补缺,以便尽快弥补短板;
2.想了解“一线互联网公司”最新技术要求,对比找出自身的长处和弱点所在,评估自己在现有市场上的竞争力如何;
3.做了几年Android开发,但还没形成系统的Android知识体系,缺乏清晰的提升方向和学习路径的程序员。
架构师筑基必备技能
Android框架体系架构
Android 360°全方位性能调优
- 一个app的性能好不好我们需要从两个层面分析:
1、从写代码的时候就注意,让自己的代码是高性能高可用的代码,这个过程是书写高性能代码
2、对已经成型的代码通过工具检测代码问题,通过检查到问题来指导我们进行代码的删改这个过程被称为调优
- 那如何写出高性能的代码呢?
需要我们具备深厚的代码功底,这就是代码的基础,如:数据结构达到可以根据应用场景写出符合当前场景的特殊结构,比如google针对Android平台特征研发了SparseArray代替HashMap.另外,对常用的算法也有自己独到的见解
设计思想解读开源框架
NDK模块开发
架构师炼成实战
微信小程序
移动架构师不可不学习微信小程序
Hybrid 开发与Flutter
Android程序员技术成长路线
不同级别技能要求
好了,直接进入正题吧,为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。(以下是一小部分,获取更多其他精讲进阶架构视频资料可以加我wx:X1524478394 免费获取)
一下是今天给大家分享的一些独家干货:
①Android开发核心知识点笔记
②对标“阿里 P7” 40W 年薪企业资深架构师成长学习路线图
③面试精品集锦汇总
④全套体系化高级架构视频
Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
【Android进阶学习视频】、【全套Android面试秘籍】加我wx:X1524478394 免费获取