程序员的职业发展
上周和极客时间、阿里云联合做了一个直播,在这场直播里分享了关于程序员职业发展的话题,这个topic我近几年给一些团队分享过几次,包括在极客时间的专栏上也有讲到过,不过内容层面,关于程序员的职业如何发展(技术专家、具备架构师能力的技术负责人、技术Leader),我的想法确实没变过,:),把分享的ppt也在这里发下,不过ppt上的信息可能不多。
1. 首先得说,程序员的职业发展路径有很多条,不存在好坏高低之分,核心还是适合自己,因为每种岗位,角色其实需要的技能是有挺明显的差别的,作为技术型岗位,每个方向的前景、天花板其实都是够高的。
架构师需要的是更广阔的知识体系,例如非常熟悉自己写的代码,或甚至整个业务系统,是怎么运转起来的,背后的基础设施,依赖的上下游等,只有这样才能首先确保能够设计出一个可以较好运行的系统,我自己以前是转到运维岗位的时候才补充上了这方面的技能;然后是扩大自己的视野,清楚的知道自己要解决的问题,现在在工程界/学术界的状况,避免坐井观天,才能做出更适合当前状况的一个合适的解决方案(架构师的难是需要权衡各种因素,例如团队能力、当前系统状况、时间等)。
架构师很多时候会成为带领大的技术项目的负责人,或者有些就往技术leader方向,这两个角色还是有很大不同的。
我自己是倾向技术leader首先要具备架构师能力,能做大型项目的技术负责人,然后开始发展技术leader这个方向需要的能力,技术leader的核心是结合业务规划,做自己的技术规划,最基本的是去做到团队能高效承接业务诉求,做的更好的是能让业务感受到原来技术还能做到这样,例如到了移动时代的千人千面等,从而帮助业务更好的具备竞争力,但这里面要把握好的一个边界是不要直接变成做业务规划。
在做了技术规划后,技术leader的核心是团队怎么组建,怎么挑选/招聘/培养人,团队怎么高效运作/成长,这些话题也就意味着技术leader是一定要有大量时间关注在业务、团队、人的身上,这是很多优秀的技术的人走往技术leader要迈过的最大的关,因为可能心理上就很难接受这样的时间分配。