本文介绍的东西很多,基本是涵盖了安卓开发人员进阶的所有必备技能,以及生活上的一些必备技能,成为管理者需要了解的知识,包括以后大家要创业还是当老板干啥的,都会提到;如果没有涵括到表述不完全或者缺斤少两的,麻烦大家在底下留言,后面我一定补上;
在看这篇文章的时候我希望大家放正心态,并不是说看完这篇文章你就能成为一名大牛了,能力的成长是一个日积月累的过程,如果没有长时间的积累,看了再多的方法也是白搭;成长最快的方法,就是选对一条路,扎扎实实做下去;
首先,我们说一下国内安卓开发现状,国内很多安卓开发人员都是半路出家,就拿我自己为例,我也是在学校自学的java和安卓,没有别人引导,路线是直接抡起袖子开干,哪里不懂点哪里,一点点查漏补缺,慢慢完善;
工作后越久,越发现这种方式存在诸多弊端,那就是我们的基本功并不是很扎实,说的明白点就是我们实现功能都是嗖嗖嗖的,维护起来却是嗷嗷嗷的;当然这种从实践中来到实践中去的方式还是有很多好处的,因为这样能带来效率上的提升。
所以,写这篇文章的目的就是为了帮助更多的半路出家的安卓开发人员一步步成长,走上更为广阔而平坦的道路;我觉得一般的安卓开发人员都会经理这三个阶段:
做开发的我们向上突破必须具备什么样的技能呢?我相信这个问题很少有人能够答全,毕竟安卓这个知识体系涉及到的东西很多,其实以前我自己也是懵懵懂懂,然后在网上找各种资料,最终也知识有了初步印象,那就是,我们以后发展有三条路,要么呢就是做系统架构,要么呢,就是做资深开发,要么就是做管理;当然也有转行做产品的也不少,但是这篇文章不做讨论;
成为一名全栈工程师就是说不仅需要成为一名资深的开发,也需要懂系统架构和设计;而资深安卓开发需要不仅需要懂底层开发,更需要了解性能优化,linux,安全相关;而架构师不仅仅需要了解怎么保障架构稳定,性能优化,又要考虑到管理,成本及其他要素;而管理层的话了解的更多,心理学,管理学之类的也是必不可少;接下来我们针对细分领域具体讲一讲;当然身体是革命的本钱,关于养生,中医之类的也需要了解一些,这些后面我会提到;
资深开发大家都懂,就是继续在开发这条路上走,研究更难解决的问题,更底层更偏的知识是必要的,丰富的经验不用说了,基本都会随着开发年龄的增长而变得丰富;良好的编码习惯也会因为开发时间的加长而变得优美;我觉得吧,一个资深的开发人员就像是一个能工巧匠,大家可以想象一个木匠,他会慢慢地把一个作品做的精致而优美,也会考虑到成本进行适当的取舍,只要他执着于怎么做好一个作品,最后,时间的历练会让他成为一名优秀的匠人;
资深的开发也是这样,大家知道国内掀起一股新匠人的风,本质上是制造业的转型,从数量转质量;安卓开发人员也是,从开始的遍地都是培训出来的安卓程序员,到现在慢慢精简队伍,企业对安卓开发人员的素质开始变得更高,低层次的开发人员原来越来越不好找到心仪的工作,潮水退去,已经有很多安卓开发人员离开了安卓阵营,或转战其他开发阵营,或离开了开发行业;这背后是他们他们的心酸和无奈,但从本质上来说,这是资源的优化分配,倒逼程序员提高自己的能力;
其实说到国内的经济状况,大家也都看到了,至少从目前来看都是不容乐观的,从15年到现在,我看到的是更多的公司勒紧皮带过日子,我身边的小企业家都在抱怨生意不好做但是又不得不做,当然这些企业家里面有些只是想站在风口上吹吹风,并不是真的在实打实的做事业。但是还有一些企业家确实是想搞一些像样的产品,大公司的打压和繁重的企业税,租金,员工支出,让这些老板一到发工资的时候一个个长吁短叹,把自己活成了怨妇;
有很多小伙伴会说,资深开发我知道怎么做,不就是一直找开发岗位做下去嘛,维持现状就好了;这里我需要提醒一下,资深开发并不只是以工作经历来区分的,很多搞了很多年开发的人员,到了四十多岁了,还是一无所成,老板的样貌倒是有了(秃顶),事业却没有一点进步,不惑之年却还是很多疑惑,频繁跳槽为加工资的人在深圳真的不少,通常这类人也没有女朋友,具体原因不作讨论,但是这是事实;
所以想要做好一个资深的开发,并不是那么容易的事情,他需要一个人有死磕的精神,遇到搞不懂的不是想办法绕过而是想办法弄懂原理,然后功课,这类人就像是一个个攻城勇士,披荆斩棘,勇往直前,典型的如《老罗的安卓之旅》作者罗升阳;熟悉老罗的朋友都只是,老罗也是一点点从基础的安卓小白一步步成长为众所周知的安卓大神,这个过程说长不长说短不短,老罗是实实在在死磕了三年才有如此速度的成长,大家对比一下自己,同样是做了三年的开发,为什么跟他差距这么多;
如何成为一名架构师大概是很多中级安卓开发多年的困惑;想要转型却不得其法,或许有些人会在业务时间看看《大话设计模式》这类的书籍,这类型的书我看过一些,比如前面提高的这本,我觉得写得就很好,没有刻板僵硬的解说,但是即便是这样我也没有完全吸收进去,究其根本是由于学习的时候并没有深入的理解场景,最重要的是,学完之后没有实际的项目运用到,最终随着时间的推移渐渐遗忘,依稀还记得那个名字;
当然架构师可不是懂懂设计模式就行了,设计师的核心价值在于灵活的把商业场景和架构选型结合起来;在众多的架构中选择更合适的设计,而这些设计有大有小,这就像搭建乐高城堡一样,乐高模组里面有很多原件供选择,你需要清楚这些原件的组成结构和使用方法,以及这些原件使用带来的利弊,你才能按照自己想法搭建出既美观又结实可靠的城堡;架构师也是一样,足够的阅历保证了定制化需求,对所用组件或技术的了解保证了产品可实现性,稳定性及维护性;
那么小伙伴有疑问了,我平时都是埋头写代码,根本没办法在项目中学习到怎么架构设计啊?怎么办,有两种方式,一种是从自己项目中学习,一种是研究开源项目;
这种学习方式其实我是不太推荐的,基于国内的发展现状,大部分从祖师爷那里传过来的代码并不优秀,有可能还是乱七八糟;因为很多的初创公司为了节约成本会找一些很有想法乐于学习,但是基本功却不扎实的小伙伴,这样的直接后果就是导致项目的维护越来越困难,代码的可读性越来越差,这种情况下去研究还不如不研究,当然了,有时候这些项目里面会用到一些很棒的工具类,这个里面会涉及到一些没见过的新知识到时可以去了解一下,但是总的来说,这种项目上研究架构师不太现实的,成本太高了;
还有一种就是项目的代码是非常清晰可读,设计非常优美,那么需要恭喜你,你这家公司的开发做得很棒,你可以在工作时间研究别人的优秀架构并学为己用;比如bat这类公司的代码就写得很不错,即使是祖传的也不用担心,基本上在这类公司的安卓开发人员也不需要别人告诉他怎么样才能成为架构师了,因为公司本身就注重这方面的规培,比如我一个在阿里上班的朋友就说他们所用到的大牛写得框架都需要了解内部原理,一方面是为了帮助新人成长,另一方面也是为了公司项目的健壮性考虑。在这个过程中,自然而然会接触到怎么做架构;
这个是推荐大部分人使用的方式,也是在我们公司内部强烈推荐的一种方式,这种方式是研究别人优秀的开源项目(注意是项目而不是代码),架构师是站在高处看大局的人,格局自然要高一点,这就需要研究整个开源项目,这些项目小到一些辅助工具,大到一个完整项目;这些项目里面会有很多优秀的代码设计,设计理念,架构设计,编码习惯;一般这些项目会考虑的比较全面,含括了安全,健壮性,可维护性等优点,相对于第一种方式来说,我们能更加轻松高效的获取到架构师相关知识,为成为架构师添砖加瓦;
github上有很多优秀的开源项目,我想很多安卓开发小伙伴都不知道这玩意有多优秀的吧;这是一个开源社区,也是一个基于git搭建的版本仓库;基本所有的安卓开发大牛都在上面留有他们的足迹;如果不了解这个工具的大家可以自行去补充一下;github上的项目众多,并不是所有的项目都适合你阅读,比如一些star虽然很多,针对不同水平的开发人员我在这里给一些建议;
本文的重点是教大家一个方法,也是通常所说的“术”,后面如果有空的话我也会在博客上分享一些学习笔记给大家,帮助大家梳理学习过程中遇到的各种问题;
这里我分为两大部分来讲,一个是行业内的,一个是行业外的;行业内的代表专业技能的提升,行业外代表个人综合能力和素质的提升,大家不要忽略了行业外的知识而当一个工作狂,长短板类型的人到了最后会越来越被动,当然,少部分人除外;
接下来我会具体分享怎么学习才能成为一名真正意义上的全栈工程师,这个是大纲,具体的需要大家根据大纲自行寻找资料进行学习,因为本文只是提供一条成长路线,如果有相关资料只要不涉及版权我也会乐于分享出来的;有空的时候我也会通过博客的方式,尽可能通过博客的方式让大家读懂,一起成长;
成为资深安卓开发需要什么:
这里我把安全也加入到性能优化里面;
心理学里面有一句话说人是社会性动物;每个人都会与整个社会发生连接,生活中的方方面面构成了整个社会,这个社会中会有很多细分领域,这些细分领域无时不刻不在影响着我们,对这些领域具有一定的基础知识其实是非常重要的;包括心理学,哲学,宗教,经济学,政治学,中医学,康复学,法学,文学等;
了解这些并不是为了让我们看起来多么博学多才,学以致用,这些知识在很多的场景有很大帮助,比如我以前有个朋友撞了别人,本来私了了,但是过了一年人家以旧病复发为由索取高额赔偿,而朋友想通过汽车保险降低损失却被告知有骗保风险,弄不好坐牢;如果懂一点基础法律常识,那么这些事情会好处理很多;
程序员一般或多或少有些职业病,如何预防并保持健康的身体很重要,有很多同事已经有了相对应的症状;健康的重要性无需多言,只不过没有到真正生病没有几个人会真正关注,大家都学过《扁鹊见蔡桓公》,见微知著才能防范于未然;
如果想要走管理这条路的小伙伴或者已经走上管理的小伙伴就需要提前储备一些提升效率的事情,一直以来我们都是按部就班自我摸索,这样索然很好,但是少不了走一些弯路,有很多事情我们是可以更加高效的完成的,当然,要做好管理第一要务是做好自我管理,如果自我管理难做好就很难有对事情的掌控能力,缺少这种掌控力就很难具备大局观,那么在思考问题的时候就很难做到全面,果断的决策;
现在很多公司都流行敏捷项目,但是我去研究了一阵发现,真正的敏捷是做好自我管理,这种自我管理并不是增加员工的负担,反而是通过调用大家自我管理的动机而把事情做好,这种情况下,做的事情越少效率反而更高;
综合素质打造有很多方面,因为时间来不及整理,我大概列出如下几项:
综合素质:
这些不够详细,但是后面我会慢慢完善,也会通过博客的方式分享出来;