开发者学堂课程【如何成为技术大牛?:03程序员吃的是青春饭?本质上取决于】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1240/detail/18422
程序员吃的是青春饭?本质上取决于
内容介绍:
一、对职业发展规划的迷茫
二、对职业发展的阐述
本节的主题是:程序员吃的是青春饭,本质上取决于……
一、对职业发展规划的迷茫
皮卢说,近期与团队同学探讨了职业发展规划的问题,有些同学表示希望后续能进一步在技术领域或管理方向有进一步的积累;有的同学表示希望在新的一年能具有更好的技术影响力,自己能做一些技术决定去影响其他人,这样自己会很有成就感。因此我也问了一些问题,你希望技术能进一步积累,那你积累的方向和期望达到的结果分别是什么?你希望能有技术决策,希望有影响力,你觉得应该如何做到?是希望通过岗位任命的方式吗?你觉得是否成功的标志就是今年或明年得到晋升吗等等。大部分同学在面对这些问题时,其实是比较迷茫的,也缺少真正可度量的衡量标准。是否能在短期内获得晋升,成了大部分人作为组织是否认可、自己是否认可的衡量标准了。当然这个话题仁者见仁,智者见智,这里简单的谈谈我的看法。
二、对职业发展的阐述
以相对比较口水化的方式将职业发展分两个阶段来进行阐述,第一阶段,大学毕业三到五年;第二阶段,大学毕业五到十年。
一、第一阶段
第一阶段,大学毕业三到五年。对于从事 Java 软件开发的技术同学,在毕业后的三到五年内主要都是以学习积累为主。这个阶段的工作几乎每天都有惊喜和都有收获,从一开始什么都不懂的校园新人向职业人转变。在这个阶段,会学习基础的 Java 知识,会开始 Java 编程思想 effective Java 、高质量代码进阶知识,会开始看重构、改善既有代码的设计、代码大全、编程珠基。常用的主流框架,比如 SSH 相关的 spring 实战、 springboot 实战、 hibernate 实战第二版。当然这些书已经不够了,你会通过 GOOGLE 、百度、大量的浏览在线的资源;例如 epanching 官网, spring 官网, hibernate 官网,你会去 Stack Overflow 问问题或找答案。系统设计与算法知识、系统分析与设计方法、设计模式,需求分析与系统设计、面向对象分析与设计、 UML 用户指南、算法导论。其他知识,比如数据库调优、缓存框架、 Nosql 数据库、日志框架等等。在这五年间快速的完成这些基础知识的学习,并能在项目中快速的学以致用,不仅自身能获得比较高的成就感,而且实际用人的单位上司也会非常喜欢这类员工。从大部分人的实际发展轨迹看,这个阶段发展快的人和正常发展速度的人差别还不是很大。比如发展非常快的人,从毕业就入职阿里的 P5到 P7,这是阿里内部职称评级,可能三年就可以做到,发展速度正常的人,可能需要五到六年,也可以到 P7,也就是说这个阶段正常发展速度的同学也仅仅比发展速度快的人慢两到三年而已。这两到三年的差距是可以通过有针对性的学习、重大项目的历练等完成这些知识的学习。无非是有的同学会严格要求自己有严格的学习计划,有的同学赶早参加了一些重点的、痛苦的项目,得到了锻炼。只要是做技术的,其实迟早都会经历过,都会成长起来。这个阶段我们能协调好的资源其实就是自己,更多的是一个个人贡献者。只要把自己管好了,学习计划执行好了,工作高质量做好了,就能得到认可。
2.第二阶段
第二阶段,大学毕业五到十年。很多本科同学,特别是研究生同学在毕业十年后就已经到了三十四三十五岁左右了,也是前段时间网上广泛讨论的所谓34加岁现象。其实年龄并不是问题的真正原因,真正的原因还是在于自身竞争力是否符合这个年龄所应该具备的。到了这个年龄的人,往往已经不是个人贡献者了,而是团队贡献者。团队贡献者可能是带团队的 TL ,也可能是个架构师,在技术决策上具有团队影响力和话语权。那么为什么这些人能管理团队或者有影响力呢?从公司的经营视角看,一个管理团队的人,他必须为业务的成功负责。简单来说,一个 TL 管了 N 个人,他至少要能保证大家输出所产生的价值至少要高于这个团队的工资、奖金、五险一金、 OPEX 、 CAPEX 等等。这个 TL 为了大家输出的有价值,他是不是需要能对所负责领域的业务特点、发展趋势、友商竞争分析有很好的洞察,能知道这个业务领域的客户是谁,他们的需求是什么,他们的痛点是什么?所以这个 TL 应该需要学习咨询的奥秘、探索需求、系统化思维导论。对于技术型的 TL ,还应该了解成为技术领导者掌握全面解决问题的方法,服务于特定领域的客户需要能了解客户企业架构、业务知识,要了解清楚规划的产品、服务,什么才是客户所需要的?那么从理论上我们是否应该学习一些 toggaf 、 egoss 、 ento 等业务理论以及业务知识;作为 TL ,是否有必要能将自己对于市场的洞察转换成业务规划,并能向自己的老板或者投资人说清楚、讲明白,并争取到老板的同意,包括资金、人力资源等。对于能否把事情讲明白,可能需要学习金字塔原理,并能非常清晰、有逻辑性的进行表达与沟通。当然,有些业务发展的事不一定特别有逻辑,是需要摸索尝试。那么你是否能将一个不确定的领域说服老板并获得支持?又需要什么博弈论、影响力等?获得老板支持后,就需要开始带着组员工作了。作为带头人,你看我们是否需要能将业务趋势、客户痛点进行业务建模,好让团队的 PD 、技术都能理解。在做业务进一步深入分析,可能就需要学习领域驱动设计、软件核心复杂性应对之道、实现领域驱动设计、企业应用架构模式、恰如其分的软件架构等等。做完业务设计后,开始要带着团队做技术方案设计、接口设计以及编码实现等,这个过程 TL 又需要具备软件项目管理的能力。无论是 pemark 指南还是敏捷软件开发、人月神话、程序开发心理学,相信总归还是会有点帮助的。对于一些有国际化要求的公司,还需要再学习英语吧?还需要有个好的身体,还需要经常锻炼,学习科学的健身。至少明白了一个道理,以前都是跟自己说,等这段时间过了,闲下来去锻炼一下,其实发现越是忙的时候越需要锻炼身体。另外,在这十年内,比较关键的是你还经历过什么有挑战的业务、技术、产品、平台等方面的成功与失败经验。在这些经历里,你可能会遇到这些困难与挑战,团队磨合的挑战、技术方案上的争执、平台优先 or 业务优先的博弈、低落的团队氛围、个人的低谷等等。这些困难与挑战,是退缩了还是有成长?在带领团队时,再次面临这些挑战,你是否有解或者有勇气了?由此可得出,毕业十年后,作为一个团队贡献者,你可能需要具备这些能力,并且还远远不止;而且更可悲的是,当毕业十年后突然发现自己不具备这个能力时,比如晋升失败时发现的;而这些能力、 GAP 就不再是两到三年就能追得上的了。见过一些有准备的同学,他们给自己的目标是在毕业第七年就要具备这些能力,他有严格的学习计划、实践计划,甚至是冒险的创业经历,当他到第十年这个点时,这些高阶技能很可能已经有三年的实践经验了。如果没有做好准备,十年后如何和这批人竞争?这些软硬知识从十年这个时间刻度倒排,学习计划、实践计划的执行还是很紧张的。所以,从现在开始,给自己制定一个严格的学习计划,严格执行,多实践。