查看原文
其他

程序员的职业发展

贝联珠贯毕玄 HelloJava 2024-01-03

上周和极客时间、阿里云联合做了一个直播,在这场直播里分享了关于程序员职业发展的话题,这个topic我近几年给一些团队分享过几次,包括在极客时间的专栏上也有讲到过,不过内容层面,关于程序员的职业如何发展(技术专家、具备架构师能力的技术负责人、技术Leader),我的想法确实没变过,:),把分享的ppt也在这里发下,不过ppt上的信息可能不多。

1. 首先得说,程序员的职业发展路径有很多条,不存在好坏高低之分,核心还是适合自己,因为每种岗位,角色其实需要的技能是有挺明显的差别的,作为技术型岗位,每个方向的前景、天花板其实都是够高的。2. 作为技术型岗位,无论往哪个方向发展,前提始终是专业的技术能力,这是做好以后任何方向的根基,我始终还是相信,程序员的实力,在代码层面是最容易展现出来的,一个优秀的程序员写的代码一定是鲁棒性很好、展现了很好的抽象能力。

3. 往一个专业的技术点的深的方向发展,就我自己的感受而言,我觉得其实只适合很少部分的程序员,这类人的特征是要能够完全接受在一个很细的技术点上做突破,就算短期很难有提升也得坚持不懈的研究,例如语言层面做编译器、做内存管理、操作系统层面做cpu调度、文件io等等类型,并且这类型的程序员最好能在一个大厂或纯粹专业型的公司(例如做JVM的公司,做操作系统的公司等),这样才能更好的发挥以及提升自己。

4. 架构师我始终认为不是一个岗位,是一种能力,这个能力反而是大多数程序员我觉得适合发展的方向,毕竟写一段程序也可以认为是一个架构,只是一个很小的架构,越大的架构,要面临的是越复杂问题的抽象(例如还包括了更大范围团队的协作问题等),解决。
架构师需要的是更广阔的知识体系,例如非常熟悉自己写的代码,或甚至整个业务系统,是怎么运转起来的,背后的基础设施,依赖的上下游等,只有这样才能首先确保能够设计出一个可以较好运行的系统,我自己以前是转到运维岗位的时候才补充上了这方面的技能;然后是扩大自己的视野,清楚的知道自己要解决的问题,现在在工程界/学术界的状况,避免坐井观天,才能做出更适合当前状况的一个合适的解决方案(架构师的难是需要权衡各种因素,例如团队能力、当前系统状况、时间等)。
架构师很多时候会成为带领大的技术项目的负责人,或者有些就往技术leader方向,这两个角色还是有很大不同的。

5. 其实对于大多数程序员而言,并没有那么想成为技术leader,以及也不一定那么适合,原因是技术leader和一个项目的技术负责人是不一样的,技术leader还要承担很重要的带领团队的职责,带领团队这个其中很重要的一点是人,而很多程序员之所以走程序员这条路,基本是因为不那么喜欢和人打交道,而更愿意和机器打交道。
我自己是倾向技术leader首先要具备架构师能力,能做大型项目的技术负责人,然后开始发展技术leader这个方向需要的能力,技术leader的核心是结合业务规划,做自己的技术规划,最基本的是去做到团队能高效承接业务诉求,做的更好的是能让业务感受到原来技术还能做到这样,例如到了移动时代的千人千面等,从而帮助业务更好的具备竞争力,但这里面要把握好的一个边界是不要直接变成做业务规划。
在做了技术规划后,技术leader的核心是团队怎么组建,怎么挑选/招聘/培养人,团队怎么高效运作/成长,这些话题也就意味着技术leader是一定要有大量时间关注在业务、团队、人的身上,这是很多优秀的技术的人走往技术leader要迈过的最大的关,因为可能心理上就很难接受这样的时间分配。

当然,除了上面这几条路外,同样还有其他更多的路,例如走向业务、甚至创业等,这些超出了技术范畴,就不在这里说了。

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存