19 坚持技术or转做管理,我们该如何选择?
你好,我是邱良军。曾做过10年的软件开发,而后又做了十多年软件研发的项目经理、项目总监、研发总监,管理过几百人的部门。
可以说,这二十多年的时间我在技术和管理领域都深耕过,因此对技术与管理的差异以及如何在这两者之间做出选择,有一些自己的心得和见解,所以今天我想和你聊一聊这个话题。
技术与管理之间的差异
工作的这二十多年间,我一直在软件研发领域,区别是前期一直在做技术,俗称码农,后来转做了技术管理。在技术领域做管理,虽然脱离不了技术,但实际的工作内容还是大不相同,可以说软件研发的技术和管理是两门独立的学科,里面都有大学问。
软件开发工程师主要分为前端开发工程师、后端开发工程师,还可以进一步细分到具体的开发语言和框架,比如主流的Java语言和Spring框架、C#语言等等。想要成为一名软件开发工程师就需要有一定的逻辑思维能力,能够把开发语言的基础知识、面向对象的思想、基础类库、程序算法,以及基本的设计模式学好,再通过几年的项目/系统的实战,通常可以成长为某个技术领域的高级开发工程师,部分人员会进一步进阶为技术专家或架构师。
而管理也是一门学科,有自己的方法论,是可以通过专业学习而掌握的技能。在我转向项目管理时,曾经有一段时间比较迷惑,疯狂地恶补管理技能,参与了PMP培训,还读了南京大学在职项目管理工程硕士,系统地学习了项目管理的理论知识,并获得了《集成项目管理工程师》证书。在这个过程中,我发现需要学习的知识非常多,除了PMBok中的10大领域,还有财会、运筹、哲学,甚至心理学等方方面面的知识。
技术与管理分属于不同的领域,所需技能和发展方向有很大不同,为了让你更清晰地了解这两个方向的区别,我整理了一个表格,你可以参考一下。
站在十字路口,如何选择更适合自己的路?
做为一个技术工程师,是选择坚持做技术,还是转型做管理,处在这样的十字路口我们应该做何选择?每个人的情况不一样,所以答案也就千差万别。
首先,我们要客观地评估自己擅长什么。就像有人擅长于软件开发,在技术上可以达到领域专家或者架构师的水平,但不擅长或不喜欢和人打交道,这种情况就不建议走管理路线。尤其是公司和团队关系,以及组织结构比较复杂的情况,比如业务驱动的团队、成员能力差别大的团队等。一旦转管理会劳心费力,并且可能没有时间继续钻研技术,两头煎熬,在组织内耗中,即丢掉了技术又没有学好管理知识,最后得不偿失。
其次,勇于尝试突破自己,比如我从小喜欢数理化,尤其是物理从初中开始到大学都一直参加竞赛,并每次都能获奖,毕业后工作做了10年的码农,从我的个性和工作经历分析:不喜欢和人打交道,不适合做管理。偶然的机会,公司让我带一个10多人的研发团队,经过一段时间的摸索,再加刻意学习管理知识,最终成长为一名技术管理者。并且我带出的团队战斗力比较强,我也屡次成为公司的救火队长。因此,客观的评估自己很难,勇于尝试往往就能获得突破。
最后,结合自我评估和积极尝试后的体验,来选择自己要走的路线。
- 走技术路线,需要一定的天赋或兴趣,容易遇到职业天花板,天赋越高天花板也会越高,从我接触到的人看,多数只能到高级开发工程师,能够成长为技术专家和架构师的比例低于10%。
- 走纯管理路线,多数是在比较短的时间内转管理岗位,通常低于2年,甚至1年。除非个人沟通表达和领导力较强,否则发展路径也是比较困难,或者说我遇到这样的案例是比较少的,个别发展不错的实际上是转做业务,或者说是生意。
- 走技术管理路线,这个几乎是走的最多,也是中国程序员几乎都会选择的职业发展路线。也是需求量比较大的岗位,即能做技术又能带项目。只是这个职业发展的过程是痛苦的,并且往上走,既需要技术和管理能力,又需要有好的机会。从技术经理,到技术总监、研发总监、技术VP、CTO,需要经历数次蜕变成长。
在规划自己的职业发展道路的过程中,我们经常会听到几个不确定的声音。
- 技术能做一辈子吗?
- 技术强,管理就一定强吗?
- 我没有经验,可以做好管理吗?
这里我来一一解答这几个问题。
问题一:技术能做一辈子吗?
毋庸置疑当然是可以的,有很多人一辈子都在技术领域钻研,最终同样有所成就,这样的人并不在少数。尤其在细分专业领域的持续专研,容易取得成功。比如我的前同事中,有几个专注在音视频领域的技术研发,通过20多年时间的努力打磨,最终创业成功(拍乐云被钉钉收购),还有加入ZOOM而获得极大发展的。
又比如大家都熟知的只靠写好代码这一件事就成为阿里巴巴合伙人的“淘宝扫地僧”多隆(蔡景现),甚至是辞职创业的毕玄老师,目前还在小米工作的国际语音识别和AI领域的知名教授、语音识别开源工具 Kaldi 之父 Daniel Povey,百度CTO王海峰等等很多很多,所以完全不用担心这个问题,技术可以成为我们一辈子坚守的事情。
问题二:技术强,管理就一定强吗?
不一定,实际上技术能力与管理能力是相互独立的,技术能力强不等于管理能力强。技术能力强的人身上会有很多优秀特质,这部分特质有助于他们转变为优秀的管理者。但同时技术能力也有可能让人一叶障目,甚至会成为提升管理能力的绊脚石,比如技术能力强的管理者,总是抢活做,喜欢从自己的视角出发提出批评,不重视过程的复盘和分析,不懂得激励和培养团队,久而久之团队成员得不到成长,这个也是技术强的管理者的通病之一。
曾经看到过一段乔布斯的视频,有观众问他:如果团队成员遇到困难无法解决时,您会马上帮助他解决吗?视频中的乔布斯停顿了30秒后才回答,大意是:很早之前我会的,也是这样做的。之后就不会了,团队需要学会从失败中成长,这个过程很困难,但是一定会经历。我极其认同这个回答,并产生了很强的共鸣,自己会做事情和团队会做事情是不一样的。
同时,技术和管理又是交织在一起的,形成了一个独特的职业“技术管理”,对应的岗位有技术Leader、研发经理/研发总监、技术总监、技术VP和CTO等。这些岗位要求技术和管理兼顾,并且二者是互为支撑,相互赋能的,需要持续学习,不断提升技术和管理能力。而市场上这样的人才是比较稀缺的,能够获得更多的发展机会。
作为一名技术管理者,你需要有技术敏感度和前瞻性,能够融入团队,顺畅地沟通,保持清醒的头脑,不被忽悠,能够在关键时刻选择合适的技术方案、做出合理的技术决策,保证方向正确。此外,还需要有领导力和管理能力,能够激发团队成员的活力,达成公司/部门的目标,且能够让团队持续成长、进步。
问题三:没有管理经验,可以做好管理吗?
可以说,大部分人在成为真正的管理者之前都是没有管理经验的,经过后期的学习实践不也成为了优秀的管理者吗?
管理其实是一门学科,和语言一样,可以通过学习掌握,因此即便你之前没有相关的经验,也可以通过后天学习来补足。此外,管理能力必须依靠实践来检验和提升,纸上谈兵意义不大;另一方面由于管理对象的不确定性,过往的实践和经验有时候会带来问题。这就需要持续摸索再学习,寻找管理的第一性原理来指导自己的工作。
上面我们聊的这三个问题是我们在做选择时常见的顾虑,如果你还有其他的顾虑,不妨在评论区里说道说道,我们一起讨论一下。
说到管理和技术,这里不得不提到一个经典的案例:软件开发中Bug是经常发生的,同样的一个Bug发生在不同地方将产生完全不一样的后果,如果是通讯的主干网节点就会让整个通信瘫痪;如果是银行支付系统,就会影响支付交易;如果是软件的后台管理的附属功能,可能几乎没有影响。要做到“零”缺陷,核心是技术还是管理?
下面是一行代码Bug带来重大损失的案例,帮助你思考上面的问题。
案例1:2017年华为误删广西移动数据被中国移动重罚5亿,调查结果是因为代码输错(1输成0)导致的格式化。进而让80万移动用户的数据遭到清空。事发后,移动和华为立即启动紧急排查处理,整个事故在第二天早上10点才得到控制。一行代码的血泪教训。
案例2:“今日凌晨,拼多多爆出可领无门槛100元优惠,引得广大网友竞相争抢,据说短短时间出现300亿交易额,其中200亿是虚拟产品,这200亿可能就是拼多多损失的数额。目前,拼多多回应,已把领到的优惠券回收,并修复Bug。据悉拼多多方面因此损失数千万,目前已报案。”——来案例自搜狐新闻
小结
最后,我想说从技术转型做管理是多数人可以走的一条路,但是这是一条艰难的路,也是一条很难回头的路,如果有机会就勇敢地抓住,在实践中学习、成长。如果暂时没有机会,在学习好技术做好工作的同时,也可以学习一些管理知识,提升自己的管理意识,你会有意想不到的收获。
思考题
这里我抛出两个问题:
- 研发总监、技术总监、技术专家的责任区别是什么?
- 技术管理(CTO和总监)要不要写代码?
欢迎你在评论区留下你的见解,如果你身边的朋友也有同样的疑惑,也欢迎你将这节课分享给他,我们互相学习,共同进步。
- 石云升 👍(4) 💬(0)
关于CTO写不写代码,没有绝对的答案。但不管什么公司,都有这样一个过程,从多写到少写、从主要编码人员——主要系统设计人员—— 设计参与人员。 团队给力,那就放手让团队去做。越高层越应该做那些别人做不了的事情。
2022-12-19 - yanger2004 👍(1) 💬(0)
技术管理是否需要写代码要看负责的领域和团队的组织架构情况,不能一概而论。
2022-12-16