一个程序员的转型总结:如何从写代码到管团队 原创

李飞曾经是公司里技术最精湛的程序员,当他晋升成为技术负责人后,他发现许多事情不再像写代码那样简单。

01

“我决定走管理之路”

九年前,李飞还是天津一家中小型互联网公司的程序员。当他踏入这家公司的时候,是一个什么都不懂的新手,只靠看书背下来了一些编程理论知识,连框架都不会搭建,他抱着虚心求学的态度接受了2500元的工资。

三年之后,他接触了安卓、iOS、前端、后端等各种技术,几乎成了一名“全栈工程师”。他就像公司里的一块砖,哪里需要哪里搬,在项目的开发流程里到处可以看到他的身影。这个时候他觉得自己达到了一个发展瓶颈。

天津较低的技术天花板让李飞觉得在公司已经学不到太多东西,他想去更高的地方看一看,摆脱自己“杂而不精”的状态,在自己感兴趣的人工智能或机器学习领域沉淀下来。当他在北京找到一份合适的工作,提交辞职申请时,他的上司和他聊了聊。

他的上司和他说,这几年他在快速成长的同时,公司的开发团队也在发展壮大,现在公司要转型开发新项目,正需要一位优秀的项目负责人来领导开发团队,而他正是公司眼中的合适人选。

在那次深入的交流中,李飞被上司保证的美好前景打动,在大厂专业螺丝钉和自由发挥的管理者之间,他选择了后者。李飞认为他的技术“广度”其实恰好适合成为一名管理者,这或许是冥冥之中自有天意,虽然管理并不是比技术更容易的事情。

02

“放权中的度”

转变思维并不是一件容易的事情。李飞虽然处在项目负责人的位置上,要对整个部门负责,但他的思维经常会回到程序员单兵作战的肌肉记忆中。

当李飞将他眼中只需要一天的工作交给下面的员工去做时,却往往在四五天后才得到反馈,而且代码的质量也令他难以满意,程序员的习惯就会让他在这个时候忍不住亲自动手。长此以往,为了项目不出差错,李飞不得不亲自操刀项目中的核心代码,并且还要检查员工写的每一条代码,一点一点测试每一个功能点。这些工作占用了他大量的时间,但仅仅是保证了项目不出差错。

在这些工作之外,李飞作为项目负责人,还需要维系客户、做任务分解、沟通需求、项目演示、协调团队关系、处理紧急状况,甚至填报材料、写合同。他桌子上的便签每天会列出至少二十项待办任务,每个任务似乎都在急切地等待他处理,习惯专注的他只能用自己最快的效率去硬抗。繁重的工作压力令他每天自觉加班到晚上十、十一点,永远是公司最后一个走的人。

事无巨细的操劳不仅令他疲惫不堪,也使整个项目的效率变得并不是很顺畅,但他已经深陷项目的细节中无法自拔。在夜深人静时,他经常会反思自己:到底是哪里出了问题?

后来一本书《卓有成效的管理者》给出了李飞答案,他尝试着每天写日报,记录自己的时间。通过分析,他将自己的任务按重要程度做了先后排序。

同时他也意识到事必亲躬的习惯正在一步步剥夺团队其他同事成长的机会,这样下去或许会毁掉整个团队。于是他学会了放权,鼓励同事们自己解决问题,并有意识地培养一些技术人员来承担更多的工作。当与十几个人对接变成了与四五个人对接,李飞的工作一下子清爽起来,他也有更多的时间可以思考项目管理的一些问题。

正当李飞为自己的管理方式感到满意时,却遭遇了项目上的第一次“滑铁卢”。当时李飞同时带了五六个项目,忙得不可开交,于是他做了一个决定,他将其中一个较为简单的二次开发项目交给了三个技术不错的员工。为他们制定好详细的开发计划后,他只负责严格把控进度,其他任由他们发挥。四个月后,这个项目按时交付却问题频出,引起了客户的强烈不满,每天都在道歉的李飞头都大了。

他带领三个同事组建了攻坚团队,加班加点修改项目中的问题,用了八天的时间,每天花费超过十二个小时,才挽回了这次项目危机。那段时间,他都是凌晨两点才踏上回家的路。

一个程序员的转型总结:如何从写代码到管团队

李飞和他的同事们在为项目加班加点

事后李飞进行了反思,他意识到自己这次错在了放权的“度”上,他对员工绝对信任不等于彻底放任不管。往往一些项目的技术逻辑是简单的,但面对的场景却是复杂的,比如对接的客户并没有专业的产品经理,一个月修改七八次的产品需求会为项目开发增加许多困难。作为技术负责人的他应该为开发人员提供引导帮助,但这时候他也陷入了其他项目难以脱身,只能让具体的开发者各自为战,最后造成了“三个和尚没水喝”的结果。

同时,因为很多项目经常会陷入大量无效的扯皮场景,他深刻意识到了流程的重要性。公司的运转应该像齿轮一样,推动员工工作的应该是一个个任务节点,而不是某一两个优秀员工。

李飞像小马过河一样在业务中反复探索,踩过了几次坑后,他逐渐有了管理的感觉。

03

“沟通是门学问”

从程序员到管理者的转变,也是从手上功夫到“嘴上功夫”转变,沟通或许是管理者最需要的技能。

项目经理需要把控项目风险,其中最大的风险莫过于需求的变更,这或许是每个程序员最讨厌的问题,却也是项目中最常见的问题。明明沟通好的需求,让项目有充足的时间去完成,但需求的频繁变更硬是让项目时间缩短到让全员去拼命的地步。刚开始他遇到这种情况就会火大,他会在对接中经常性地怼客户,强硬地拒绝这种“不合理”的要求。但这样做的后果毫无疑问就是得罪了客户,而维系客户恰恰就是他的职责之一。

后来他阅读了一本书《企业管理实践》,其中有一句话令他印象深刻“企业的绩效是客户带来的”,没有客户,企业就没有出路,他之前幼稚的做法只会给公司带来损失。这逼得李飞不得不妥协,但这样的后果就是将压力转移到了团队身上。当这样的难题摆在眼前,他突然理解了销售同事的难处。

每一场沟通的背后都是李飞与客户间的博弈,这令他心累,也让他成长起来。他变得圆滑。他会在需求变更三四次时喊停,重新和对接人沟通项目计划,设计好前期需求后再动手;当他拒绝掉客户的变更令对方领导不满时,他会尝试从对接人身上入手,积极缓和矛盾;他还会努力思考如何优化项目的流程,减少无效的时间成本,为团队争取时间。

随着项目沟通的增多,李飞所研究的沟通话术也愈加成熟,他的管理之路增添了愈来愈多的成功案例。两年后,他所负责的的开发团队从7人拓展到50人,他也从一个小的项目负责人升级为项目总监。

04

“从事到人,关注团队的成长”

屁股决定脑袋。李飞发现,管理之“道”不在事,在人。

真正让李飞把重心从项目的管理转到团队的培养上来是因为他的职业生涯中最惨败的一次经历。在那个项目中 他带领20多个兄弟接手了四个项目,并抽调了三个实习项目经理负责了其中三个项目。原本他以为自己的团队有一定的项目经验,在过往的表现中都发挥稳定,这次的项目应该稳操胜券,但意外却频频发生了。

首先这个项目的技术难度是他所未预料到的。这是一个十分老旧的项目,用的还是十多年前的前后端框架,技术偏门,学习成本巨大。而且框架混乱不堪,仅表就有近2000张。对接人本身对项目信息了解得不全面造成了李飞的轻敌,等到他接到手上后才意识这堆“屎山代码“远比想象中复杂。

跨部门的沟通难度更是远超他的想象。他曾经仅仅想要了解一个摄像头的型号问题,要花费三个小时跑了五层楼才得到答案,这些无效的沟通浪费了不少时间。

同时他的团队也出现了适应能力弱,项目负责人力不从心等各种问题,本不该出错的地方却频频出错,李飞只能四处救火。当项目时间被急剧压缩后,他为了赶进度,通宵时间超过了半个月,干到凌晨4、5点的日子数不胜数。整个团队的大多数人也跟着近两个月没有周末,陷入极度的疲惫中。虽然他们最后完成了项目,但也严重超出了时间预期,令甲方十分不满。原本他可以依托这个项目在外面有不错的发展,但在外拼搏奋战了三个月,最后却带着一身惨痛的教训回到了公司,同时也失去了一次为公司开疆拓土的机会。

这次的惨痛教训令他深刻意识到了团队梯队建设的必要性。目前他的团队除了他自己以外,其他几位项目负责人要么性格太软没有主见,要么粉饰太平不暴露风险,要么不会沟通态度强硬。当这些职场弱点被放大后,就需要他四处救火,深陷项目的细节中。

同时在工作中,他认为作为一个管理者还需要掌握的一个技能就是人尽其用,不能把狙击手放在了主攻手的位置,把主攻手放在了指挥员的位置。因为做事的关键在人,只有解决好团队的问题,才能把事做成,但人的问题其实是管理中最复杂的问题之一。

一个程序员的转型总结:如何从写代码到管团队

李飞的团队

回顾这些年的摸爬滚打,他的管理经验是在野蛮生长的环境中一个跟头一个教训学来的,没有一颗强大的心脏他走不到今天的位置上。许多打工者都幻想过晋身管理层后走上人生巅峰的美好生活,但漫漫管理路其实是一路降妖除魔,历尽艰难险阻。但从一个程序员到优秀的管理者到底需要几步,李飞或许也给不出明确答案。

人物简介:李飞,土木工程专业,2013在天津的一家中小型互联网公司实习,2014年毕业后转正成为一名程序员,2017年成为项目经理,2019年成为项目总监至今。

 

END

本文来自码客人生,未经授权不得转载

 


 

李飞问答实录部分(彩 蛋)

 

码客人生:你是土木工程专业,为什么会成为一名程序员?

李飞:土木工程是我父母为我报的专业,我大三的时候有去工地实习过很长一段时间,然后我发现我不适应这个生活。我更喜欢编程这样有及时反馈,能带给我成就感的工作,所以我选择了转码。

我从小就很喜欢玩电脑,和大多数程序员一样,我也有一个黑客梦。上大学后我就开始自学编程,我不喜欢看视频,就靠看书、抄书、默写书来学习基础理论知识,并把书上所有的习题都做一遍。当时自学了java,前端,PHP,虽然理论知识还不错,但不会搭建框架。

到了大三实习的时候,老师为我推荐了现在这个公司,我就带着我的作品“一个在地图上可以显示我的轨迹的计步器”去面试。虽然后来得知我的笔试题错了一半,但面试官比较欣赏我自学的经历,于是我被成功录取了。

码客人生:你九年从未跳过槽,是什么吸引着你一直留在这家公司?

李飞:我其实在工作的第三年曾经尝试过跳槽,并且差点走了。那时我觉得我在公司可能学不到太多东西了,就去北京找到了一份较为合适的工作。

但我后来留下的原因一是我觉得北京那边的工作所从事的技术领域在我看来快淘汰了,我想沟通换组,但是他们不同意,事实证明半年后这个团队的命运确实不怎么好。

另外这边公司正在转型,想要开发新项目,正好需要项目经理来带团队,我觉得这是个挺好的锻炼机会。并且我们团队的氛围挺适合我的,我的直属领导会给我特别高的自由度,我对于团队想做出任何调整,只要我给出合理的理由,我的领导就会支持我,不会设限制,我觉得这是最吸引我的地方。即使我们经常会因为项目分歧而吵架,一周会吵两三次,但我们从来都是对事不对人。

码客人生:程序员有哪些转型之路?

李飞:其实一个人只要愿意学习,有职业素养,并愿意放低自己的期待,转型就是容易的事情,和是不是程序员并没有关系。

如果程序员向外转的话,我觉得转产品是最好的一条路,它很有可能规避掉35岁那个问题。其他的转测试、运维,甚至售前、售后,只要是和软件相关的工作我觉得都是有可能的。

如果是程序员本身的这条路,往技术上走就是技术专员、架构师、CTO,往管理上走就是项目经理、项目管理这些。

码客人生:程序员转型成管理者有哪些优与劣?

李飞:优势就是不容易被忽悠。无论是做计划也好,还是和开发沟通,我都会比较有优势,会估量一个合理的开发时间,而不是他们开发人员说几天就是几天,我也不会强行压着他们加班加点完成工作。而且很多开发同事都有一个毛病,觉得我的领导不懂开发却来指挥我,但他什么都不懂,实际情况也确实这样,外行指导内行会产生许多问题。

弊端就是有些程序员的习惯会给管理带来较大的问题,比如我不接受需求的变更。程序员有个习惯就是会保护自己写的东西,但市场也好,产品本身也好,它不可能不变。所以当客户提出需求变更后,我会找各种理由拒绝,如果脾气还不好,还会怼客户,骂客户。

还有一个问题是这个人被提拔成管理者,可能是因为他的技术是最好的,所以当他看到他一天就能写完的东西,别人五天才能写出来,他就会觉得这写的什么玩意儿,会忍不住自己上手写,把大家的工作做了,而不是培养同事成长。

另一个重要的问题是时间管理问题,我做程序员的时候工作是很专一的,但当我成为管理者后,从单线程操作变成多线程操作,就会花大部分时间在对外对内的沟通上,解决各种问题上,这会让人很不适应。

码客人生:一个好的项目经理应该有怎样的能力?

李飞:我觉得很多人做不到的一点就是有“成本意识”,比如我会重视项目节点,交付时间,但对于其中多投入的成本我是不重视的,这个其实很致命。就算你按时交付了项目,但你打破了领导的成本预期,他未必会满意。

另外懂得优化流程其实很重要,有时候项目延期未必是人不够用,可能是中间的扯皮消耗了时间。项目经理就是要发现这些矛盾,解决这些矛盾,将其中的损耗降到最低,这也是许多人做不到的。

好的项目经理还应该逻辑清晰,沟通能力强,不能和客户的态度太硬,要有沟通策略。

项目经理还应该提前设计需求,把控项目风险,不能拿到活就开干,前期如果没有做好计划,后面发生的问题会非常多。

项目经理平时还应该多观察同事的优缺点,引导团队成长,不能只重视项目不重视人。

最后我觉得成为管理者后也不应该放弃自己的技术,应该不断地学习。

码客人生:你似乎经常为了救火而加班,你是怎么看待996的呢?

李飞:我认为996是不健康的,但是是合理的。很多人就是奔着钱去的,你不让996了,可能其实是把大家赚钱的渠道取消了。

我刚开始做管理的时候确实加班挺多的,但那不是公司要求我的,而是我自愿的,我只要活没干完我就特别精神。但现在我基本躺平了,因为我知道活是永远干不完的,加班情况会比以前好许多。

如果在项目流程上进行优化,一些加班或许是可以避免的,但有时候当客户给出的时间就是完不成的时候,时间紧,任务重,加班就不可避免。当时那几个项目确实熬得挺狠的,通宵了很多次,但我可能心比较大,所以没有给我造成太大的身体伤害。但兄弟们加班加点后都很疲劳,我会让他们先回去休息,我留下来善后。

码客人生:你是如何向上管理的呢?

李飞:我的领导对我基本没什么意见,所以像我这样太过随性的工作氛围其实也有坏处,就是野蛮生长,没有指导。

我认为向上管理很重要的一点是向领导勤汇报,让他知道我们的项目情况,了解困难,给予资源,不然他很容易对你期望过高。汇报的时候最好先说结论,很多时候领导没有那么多时间听你说长篇大论。

并且做管理,其实不仅要背黑锅,还要懂得邀功,如果觉得哪个同事能力是不错的,应该主动向领导推荐他们。这个不能等到年底述职的时候再去说,而是要潜移默化地沟通。

我自己还会每隔半年做一个思维导图,把我现在的工作情况,想要达成的目标和改变方向去和他沟通,看他是什么想法。当你的领导对你没有期望时,你就要自己给自己一些压力。

码客人生:你现在的管理困惑有哪些?

李飞:我不知道怎么去培养一个项目经理,我可以让程序员的技术提高,但我无法培养一个项目经理,无论做出哪些努力,都收效甚微。

我也会一直思考一个管理者应该为公司带来什么样的价值。

我还会思考应该如何打造团队文化,像程序员这样的智力劳动,你其实是很难给他们做绩效的,我去观察过厨师和编辑这样难以制定绩效的工作来参考别的行业的解决办法,这依旧是个难题。

码客人生:你怎么提高自己的管理能力?

李飞:我是一个野蛮成长的管理者,除了看书,就是在业务中去积累我的经验,一直是靠自己摸索的。但我现在觉得自己达到了一个瓶颈期,很多问题我现在也没有答案,或许我应该换个环境,去读个管理学的研究生,再学习一些管理学的知识。

码客人生:你是如何挑选程序员的?

李飞:我觉得首先看他逻辑是否ok,就是是否聪明。我曾经花费了很多的时间给一个人讲解一个问题,他就是听不懂,但我把另外一个新人叫过来,问他听懂了吗,他很快就讲解出了解决方案。事实证明,他后来确实成为了开发人员中的中坚力量

我觉得观察一个人的能力怎么样,最好的办法就是和他一起工作,在完成一个项目中,你可以很清晰地了解到这个人的各方面情况。

码客人生:你如何看待公司中的中层这一群体?

李飞:我觉得中层是一个很尴尬的群体。很多中层他有一定的管理能力,但他可能没有办法管理得很好,他的技术能力又不是特别出色,就会造成一个现象,一旦失去现有的平台,他可能很难找到工作。所以我觉得中层要有自己的拿手绝活

来源:至顶网码客人生频道

0赞

好文章,需要你的鼓励

2022

06/16

16:23

分享

点赞

邮件订阅