程序员大多内向型的偏多,很多书里写到程序员也都是一个“书呆子”形象。事实也确实是这样的,在转型做管理这件事上,不要说程序员没有这个野心,就算你想拉一个程序员让他管几个人,不少人都是有抵触的,他们是不想去做管理的。
另一方面,程序员又都认为随着工作年限的增长,是必须要做到管理岗才行的。如果一个工作十年的程序员,还只是开发岗的话,这就是一件令人羞愧的事情。所以,也有不少程序员感叹国内行业氛围不好,不能做技术一直做到退休。
那到底要不要转型做管理呢?下面我来谈下我对这个事情的看法。
首先,我认为用转型这个词是不恰当的。**从程序员到技术管理者,这并不是像转行一样,是两个完全不同的职业,技术管理者实际上就是程序员这个职业发展的更高阶段。**这就像任何一个职业,做到高级阶段都会成为领班、厨师长、总工程师等等角色。所以,这并非是你需要在开发和管理这两个工作中二选一,而是你作为程序员成长的必经阶段。很多程序员觉得转管理就要脱离技术这也是不正确的,技术管理者是离不开技术的,并且即使做了管理,技术能力也应持续保持精进,只是工作会在管理上有所侧重。
我在《程序员之路》中讲述了如何从入门成长为一名优秀的程序员,如果要在程序员这一职业道路上继续发展的话,你需要锻炼提升的另一个技能方向就是:管理。
对于管理,并非是你做了项目组长或技术经理之后才考虑的事情。现在不管是在什么样的公司,是在做产品也好、项目也好,几乎是没有单打独斗、独自完成工作的,都是需要团队协作才能完成。刚入行的程序员基本都是完全听项目经理的指挥工作,但是,有了一定经验后,程序员是有必要知道如何去配合项目经理工作,如何与团队其他成员协作开发。团队协作就是程序员要学习的最基础的管理技能。
在初期,大家都是作为一个被管理者、被动的协作者去熟悉了解团队协作和团队管理的。并且,从你作为初级程序员开始,到中级程序员、高级程序员,你基本会了解程序员在不同阶段需要怎么在团队中去配合去协作。在你对团队协作方面有了更多的经验,知道怎么去协调团队开发,那么你可以尝试去提升到程序员的下一阶段,做一名项目组长或项目经理去带领团队完成工作。当然,进入管理岗你还是需要学习掌握一些管理技能和方法的,限于篇幅原因这部分暂不展开叙述。
**这里也要说下程序员的另一个误解,并非是工作多少年后你就能转管理,或需要转管理。**你想转管理的话,也是需要具备一定的管理经验的,这个经验大多是你作为被管理者期间积累学习的管理方法。所以,对于程序员来讲,你要考虑的并不是要不要转管理岗的问题,而是能不能做管理,什么时候才能做管理的问题。
也有人认为开发做不好了,所以转管理。当然,不排除有些人是有管理天赋的,转了管理后能够做得很好。然而,如果你在程序员阶段并没有做好,那实际上说明你的基本开发技能、业务能力是有所欠缺的,甚至在协作开发上也并没有做到很好。在这样的情况,我并不认为你做了管理就能知道每个人怎样协作效率最高,就能把团队管理得很好。就像其他职业一样,程序员也是不能够跳跃发展的。做不好一个小兵,想当好一个将军,这个概率是不大的。
我知道,还有人还不死心,认为现在不仅是转管理,也可以转做架构师,专心做技术。如果你如此热爱技术,我认为是很好很难得的,也相信你能够在技术方面做得非常好。但是,事实上不论大厂小厂,即使是架构师也是要带团队的。如果不是,那架构师可能只是公司给你的一个空头衔。
当然,如果有程序员打死都不愿意做管理,那也没人能够勉强。不过就像前面说的,管理是程序员这一职业发展的必经之路,你放弃的话,你的职业发展大概率会停滞在程序员这一阶段罢了。
单打独斗能做的毕竟是有限的,带领团队才会有更多可能,做管理有什么不好吗?