导读:你是否曾经认真思考过——毕业3-5年、10年,乃至更久后,咱们但愿成为何样的人?做为一名技术人,咱们要如何规划本身的职业发展生涯?网上热议的“35岁中年危机”,本质上又因什么而焦虑?今天,阿里资深技术专家毗卢,将带来本身的思考与理解,但愿对你们有所启发。面试
做者毗卢:近期,我与团队同窗探讨了职业发展规划的问题。有些同窗表示但愿后续能进一步在技术领域(或管理方向)有进一步的积累;有的同窗表示但愿在新的一年能具备更好的技术影响力,本身能作一些技术决定,去影响其余人,这样本身会颇有成就感。算法
所以,我也问了一些问题:数据库
你但愿技术能进一步积累,那你积累的方向和指望达到的结果分别是啥?编程
你但愿能有技术决策,但愿有影响力,你以为应该如何作到?是但愿经过岗位任命的方式吗?设计模式
你以为是否成功的标志,就是今年或明年获得晋升吗?缓存
等等架构
大部分同窗在面对这些问题时,实际上是比较迷茫的,也缺乏真正可度量的衡量标准。是否能在短时间内得到晋升成了大部分人做为“组织是否定可、本身是否定可”的衡量标准了。框架
固然,这个话题仁者见仁、智者见智,这里我简单地谈谈个人见解。我以相对比较口水化的方式,将职业发展分两个阶段来进行阐述:学习
1)第一阶段:大学毕业3到5年编码
2)第二阶段:大学毕业5到10年
第一阶段:大学毕业3到5年
对于从事Java软件开发的技术同窗,在毕业后的3到5年内主要都是以学习、积累为主。这个阶段的工做几乎天天都有惊喜,都有收获。从一开始啥都不懂的校园“新鲜人”向“职业人”转变。在这个阶段,你会学习:
基础的Java知识:你会开始看《Java编程思想》、《Effective Java》。
高质量代码进阶知识:你会开始看《重构:改善既有代码的设计》、《代码大全》、《编程珠玑》。
经常使用的主流框架:好比SSH相关的《Spring实战》、《Spring Boot实战》、《Hibernate实战(第2版)》。固然,这些书已经不够了,你会经过Google、Baidu大量地浏览在线的资源:Apache官网、Spring官网、Hibernate官网。你会去StackOverflow问问题或找答案。
系统设计与算法知识:《系统分析与设计方法》、《设计模式》、《需求分析与系统设计》、《面向对象分析与设计》、《UML用户指南》、《算法导论》
其余知识:好比数据库调优、缓存框架、NoSQL数据库、日志框架等等
在这5年间,快速地完成这些基础知识的学习,并能在项目中快速地学以至用。不只自身能得到比较高的成就感,并且实际的用人的单位、猎头也会很是喜欢这类熟练工。
从大部分人的实际发展轨迹看,这个阶段发展快的人和正常发展速度的人,差异还不是很大。好比,发展很是快的人,从毕业就入职阿里的P5到P7(注:阿里内部职称评级),可能三年就能够作到。发展速度正常的人,可能须要5-6年也能够到P7。也就是说,这个阶段正常发展速度的同窗也仅仅比发展速度快的人慢2-3年而已。
这2到3年的差距,是能够经过有针对性的学习、重大项目的历练等完成这些知识的学习。无非是,有的同窗会严格要求本身,有严格的学习计划;有的同窗赶早参加了一些重点的、痛苦的项目获得了锻炼。只要是作技术的,其实早晚都会经历过,都会成长起来。
发现没有?这个阶段,咱们能协调好的资源其实就是本身,更多的是一个“我的贡献者”。只要把本身管好了,学习计划执行好了,工做高质量作好了就能获得承认。
第二阶段:大学毕业5到10年
不少本科同窗,特别是研究生同窗。在毕业10年后,就已经到了3四、35岁左右了。也是前段时间网上普遍讨论的所谓34+岁现象。其实,年龄并非问题的真正缘由。真正的缘由仍是在于自身“竞争力”是否符合这个年龄所应该具有的。
到了这个年龄的人,每每已经不是“我的贡献者”了,而是“团队贡献者”。团队贡献者多是带团队的TL,也多是个架构师,在技术决策上具备团队影响力和话语权。
那么,为何这些人能管理团队或者有影响力呢?
从公司的经营视角看,一个管理团队的人,他必须为业务的成功负责。说个大白话,一个TL管了N我的,他至少要能保证你们输出所产生的价值,至少要高于这个团队的工资、奖金、五险一金、OPEX、CAPEX等等吧。这个TL为了你们输出得有价值,他是否是须要能:
能对所负责领域的业务特色、发展趋势、友商竞争分析有很好的洞察?能知道这个业务领域的客户是谁?他们的需求是什么?他们的痛点是什么?因此,这个TL应该须要学习《咨询的奥秘》、《探索需求》、《系统化思惟导论》。对于技术型的TL,还应该了解《成为技术领导者:掌握全面解决问题的方法》。
服务于特定领域的客户,咱们须要能了解咱们的客户企业架构、业务知识。要了解清楚规划的产品、服务,什么才是客户所须要的。那么,从理论上,咱们是否应该学习一些TOGAF、NGOSS、ITIL等业务理论以及业务知识?
做为TL,是否有必要能将本身对于市场的洞察转换成业务规划,并能向本身的老板(或者投资人)说清楚、讲明白?并争取到老板的赞成,包括资金、人力资源等。对于,可否把事情讲明白,咱们可能须要学习《金字塔原理》,并能很是清晰、有逻辑性地进行表达与沟通。固然,有些业务发展的事不必定特别有逻辑,是须要摸索、尝试,那么你是否能将一个不肯定的领域说服老板并得到支持,咱们又须要什么?《博弈论》、《影响力》等。
得到老板支持后,就须要开始带着兄弟们干活了。做为带头人,你看咱们是否须要能将业务趋势、客户痛点进行业务建模好让团队的PD、技术都能理解?在作业务进一步深刻分析,可能就须要学习《领域驱动设计:软件核心复杂性应对之道》、《实现领域驱动设计》、《企业应用架构模式》、《恰如其分的软件架构》等等。
作完业务设计后,开始要带着团队作技术方案设计、接口设计以及编码实现等。这个过程,TL又须要具有软件项目管理的能力。不管是《PMBOK指南》,仍是《敏捷软件开发》、《人月神话》、《程序开发心理学》,相信总归仍是会有点帮助的。
对于一些有国际化要求的公司,还须要再学习英语吧!
嗯,还须要有个好的身体,还须要常常锻炼,学习科学的健身吧(提及来本身脸红)。至少我明白了一个道理,之前我都是跟本身说,等这段时间过了,闲下来去锻炼一下。其实,我发现,越是忙的时候,越须要锻炼身体!
另外,在这10年内,比较关键的是——你还经历过什么有挑战的业务、技术、产品、平台等方面的成功与失败经验?在这些经历里,你可能会遇到这些困难与挑战:团队磨合的挑战、技术方案上的争执、平台优先 or 业务优先的博弈、低落的团队氛围、我的的低谷等等。这些困难与挑战,你是退缩了?仍是有成长?在带团队时,再次面临这些挑战时,这时你是否有解或者有勇气了?
发现没有?毕业10年后,做为一个团队贡献者,你可能须要具有这些能力,而且还远远不止。并且,更可悲的时,当毕业10年后,忽然发现本身不具有这个能力时(好比晋升失败时发现了),这些能力GAP就再也不是2到3年就能追得上的了。我见过一些有准备的同窗,他们给本身的目标是在毕业第7年就要具有这些能力,他有严格的学习计划、实践计划、甚至是冒险的创业经历。当他到第10年这个点时,这些高阶技能极可能已经有3年的实践经验了。
若是咱们没有作好准备,10年后,如何和这批人竞争?这些软、硬知识,从十年这个时间刻度倒排,学习计划、实践计划的执行仍是很紧张的。因此,从如今开始给本身制定一个严格的学习计划、严格执行,多实践吧!
欢迎工做一到五年的Java工程师朋友们加入Java架构开发:744677563
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题均可以在本群提出来 以后还会有职业生涯规划以及面试指导