今天小博在后台看到有同学留言想要得到职业生涯规划的建议,刚好我们各个校区已有不少学员顺利步入职场,身为职场人,一个清晰的职业生涯规划是非常必要的。
小博结合北大青鸟鲁广校区各大咖的经验给出这篇程序员如何做职业规划,希望可以帮助到同样迷茫的同学们!
程序员职业发展规划
选择IT行业后你必须思考:
毕业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年后,就已经到了34、35岁左右了。其实年龄并不是问题的真正原因。还是在于自身“竞争力”是否符合这个年龄所应该具备的。到了这个年龄的人,往往已经不是“个人贡献者”了,而是“团队贡献者”。可能是带团队的TL,也可能是个架构师,在技术决策上具有团队影响力和话语权。
那么,为什么这些人能管理团队或者有影响力呢?
作为TL,是否有必要能将自己对于市场的洞察转换成业务规划,并能向自己的老板(或者投资人)说清楚、讲明白?并争取到老板的同意,包括资金、人力资源等。对于,能否把事情讲明白,我们可能需要学习《金字塔原理》,并能非常清晰、有逻辑性地进行表达与沟通。当然,有些业务发展的事不一定特别有逻辑,是需要摸索、尝试,那么你是否能将一个不确定的领域说服老板并获得支持,我们又需要什么?《博弈论》、《影响力》等。
作为带头人,是否需要能将业务趋势、客户痛点进行业务建模好让团队的PD、技术都能理解?在做业务进一步深入分析,可能就需要学习《领域驱动设计:软件核心复杂性应对之道》、《实现领域驱动设计》、《企业应用架构模式》、《恰如其分的软件架构》等等。
英语也是必要学习的,还需要有个好的身体,经常锻炼,学习科学的健身,越是忙的时候,越需要锻炼身体!
所以,从现在开始,制定一个严格的学习计划、严格执行,多实践,增强体魄多锻炼吧!