我们是家专注于提供高品质软件开发服务的小公司,最近和一家在全球有业务的大公司签了合同,负责一个大型项目。工程日期只给了八个月,实在是太紧了。所以,我们打算扩大团队来应对这个挑战。
我们新招了一位工程师。刚开始,我们分配给他一些基础性的工作,如文档更新、错误修复以及回归测试等。很快,他在短时间内以极高的效率完成了所有任务。因我对他的工作效率非常满意,逐渐将更多客户项目的任务交给了他。
我知道他是个很优秀的工程师,前途无量的那种。而且在招聘过程中,他成功通过了所有测试,也和团队成员相处融洽。
然而,在不久后,我还是在他身上发现了一些我曾忽视的特性,比如他无法接受他人的批评,不喜欢别人指出他的错误,总是试图证明自己的能力。
我们一直强调我们的软件工作室结构扁平,每个人都有机会为改进我们的系统和工作流程做出贡献。只是没想到他的贡献居然让事情变得如此棘手。
他提出想将自己开发的JavaScript框架融入我们现行的项目中。最开始,我并不认为他这个提议是认真的,因为这个提议他是站在饮水机旁边随口一提的。
我告诉他,我们现在的框架已经确定下来了,这个时候再去改动,哪怕不是完全停止,最少也会拖慢我们的进度。他耸了耸肩,轻描淡写地说:“当然,别担心。我懂的。”
然而,在几天后的站立会议中,他以更坚定的态度阐述了自己的观点,其强硬甚至透出些许傲慢。我再次强调,我们不能接受他的建议。
接着,他的叛逆行为愈发严重,甚至试图对代码的各个部分进行独立的系统化操作。代码审查员去哪了?是不是疏忽了才让这种问题发生?当然,这又是我必须解决的问题。这大概就是工程经理的宿命吧。
然后,当我们开始进行第三个模块的工作时,他又一次在站会上提出要换一种方式来编写代码,因为他做的所有工作(其中大部分是在我们背后进行的)阻碍了生产进度,导致生产效率大幅下降。
那一刻,我简直气炸了。但在我采取任何行动之前,我必须先做足功课。我需要先理解一个优秀程序员的思维方式。
理解顶尖程序员的思维方式
要有效地管理那些有颠覆性思维、自我驱动、成绩出色的程序员,你必须要了解他们的思维的运作模式。只有你深入理解这类程序员的性格类型及其行为动机,才能实现有效管理,避免公司资源的浪费。
以下是我对这类顶尖程序员的一些见解:
- 他们对于能够完成超出预期的任务会感到兴奋。但是,随着他们挑战的任务越来越大,他们就越难体验到多巴胺的快感。
- 他们容易产生厌倦感,一旦出现这样的情况,他们常常会选择离职。
- 他们在处理任务时总是全神贯注,因此经常会忽视一些重要的细节或者其他有利于自我提升的机会。
- 他们可能表现出心不在焉的样子,但实际上,他们是在全神贯注。
- 他们的情绪敏感,对批评的接受度较低。
- 他们过于关注未来,一心致力于实现自己职业生涯的目标。
- 他们并非金钱驱动,而是对项目和实验充满激情。
- 你是否曾向一位表现优秀的开发人员指出他的错误?是
- 你是否曾过度管理过一位表现优秀的开发人员?是
- 他们认为自己并不需要别人的帮助或者指导,反而他们觉得自己有能力去指导别人。
如何管理一个优异的程序员?
设定明确的界限
如果你手下有一个才华横溢但行为出格,自我驱动且成绩斐然的程序员,那你需要立刻约他单独谈话,将问题行为消灭在萌芽状态。
通常,我们应对问题的策略应是在其出现之初就予以解决。假若选择漠视,哪怕问题微小,也会因此逐渐恶化;待到不得不解决的时刻,极可能会激起对方强烈的情绪反馈。请牢记,天才不太可能会接受他人的批判。
对我而言,我已经向那些表现优秀的开发人员明确了他们的角色和期望。我告诉他们,我既负责软件开发的业务部分,也负责人员管理。我认为,他们需要了解软件开发团队的运作,要明白软件的开发是人对人的合作结果。
另外,我也明确告诉了他,他不能自作主张去做那些他认为有必要的事情,除非得到我和团队的同意。我们公司更倾向于以团队为主导解决问题,而非依赖单一的技术或开发人员。如果他想在公司有所发展,就必须理解这一点。
而且说实话,我必须得坚守自己的立场。如果我任由他用客户的资金去进行实验,结果却以惨痛的方式失败,那我的处境就会十分尴尬。你知道接下来会怎样吗?士气和效率都会下降。我的下属会对我失去信任,上头的人也会找我要个说法。
过程为主,结果为辅
问题得到解决后,我开始探索如何让他的个性与我们的目标相辅相成。优秀的人往往会被驱使去挖掘自己的最大潜力,但他们常常过分关注最终目标,而忽视了有时候,最终的目标结果是无法掌控的。
所以,我在想的是如何帮他们更专注于他们能控制的过程,而不是只看结果。
我可以让那些顶尖程序员们制定一份切实可行的计划,详细列出每个步骤,并在完成后进行标记。这将有助于他们集中精力于现阶段需要实现的目标,而非过于关注遥不可及的未来目标。
每达成一个里程碑,他们便能获得更多的多巴胺的释放,这可以满足他们对于成就感的追求。
协助他们寻找平衡,避免精疲力尽
我在与多位执着于追求卓越的合作伙伴共事的经历中发现,他们的付出的努力往往超越常人。比如在一个项目中,我下班后,他们还在办公室里埋头苦干;而在第二天清晨,我回到办公室时,他们还在那儿忙碌着。
虽然优秀的人深知健康和幸福的重要性,但他们总是保持警惕,始终不停前进。他们常将自我推至极致,长时间投入工作,忽视饮食,牺牲睡眠。甚至在疾病中,他们也坚持工作,这使他们面临患上抑郁症和疲劳综合症的风险。
因此,作为一名工程经理,你必须严格执行强制休息和休假的规定。不仅要让奋斗过头的开发者休息,也要让这成为所有开发者的规定。如果有人违反,可以在与上级的面谈中解决这个问题。
对于那些表现卓越且抱负远大的个体,建议他们将“保持平衡”纳入其目标清单,并保证这一目标的可追踪性和可衡量性。
例如,工程经理可以将参加静心训练、寻求专业心理咨询、适当休息调整或投入时间进行放松与学习等行为,作为他们的主要绩效考核指标(KPI)。这样既能确保他们的工作效能,也能维护其身心健康。
平等对待且因材施教
就像我之前提到的,我们实行的是平等的等级制度,确保每个人都享有同等的机会。然而,有些人,比如成绩优异的人,我们会给予不同类型的关注。当然,我这里说的并不是要给他们像摇滚明星那样的特殊待遇。
由于他们的工作效率极高,因此,必须为他们提供能够快速跟进的工具。同时,安排一对一的指导,协助他们进行职业规划。除此之外,提供培训和教育的机会也是十分必要的。但最重要的可能是给他们足够的自由度和灵活性,让他们能接受挑战。要记住,这些人总是全力以赴,投入 110% 的工作热情。
通过实施灵活的工作时间制度、家庭办公等福利政策,能有效提升优秀开发人员对组织的忠诚度与工作满意度。总的来说,我们不应该让“我们一直都是这么做事的”这种观念限制程序员们的思维。
作为工程经理,你的职责不仅仅是保证在预算内按期完成产品交付,同时还需要展现出卓越的领导才能,推动建设良好的企业文化,并协助开发团队在专业技能和个人素质两方面实现提升。
难道你愿意看到自己辛苦培养的开发人员离开,特别是在你帮助他们在职业生涯上达到一个新的高度之后吗?
我的意思是,开发人员离职,不是因为公司,而是因为他们的经理。所以,千万不要成为那种让人离职的经理!
通过配对编程,推动团队合作
高效的开发团队之所以能在软件构建方面取得成功,关键在于他们懂得如何有效地协同工作。对于表现卓越的开发人员而言,理解并掌握这一策略的重要性不言而喻。而让他们以两人一组的形式进行工作,是最佳的理解和掌握协作策略的方式。
结对编程是一种软件开发策略,它依赖两名程序员共享一台计算机,共同解决特定的任务或问题。在此策略中,一名程序员担任"驱动者"的角色,主动编写代码,而另一名程序员担任“导航员”的角色,负责审查代码、提供反馈并进行战略性的思考。
两人在整个编程过程中不断交换角色,驾驶员和领航员的角色要经常交换。
该方法实现了实时协作、知识共享以及即时反馈,对提升代码质量、促进创新思维以及增强问题解决能力具有积极影响。成绩优异的开发人员还将了解到其他人有很棒的想法(有时甚至是更好的想法!)。
如果你能引导他们把更多的精力投入到成为一名出色的团队成员,那么他们就能回归自我,化解混乱。他们可以先获取个人荣誉,然后再恢复与他人的和谐相处。
投资时间与实验
大型企业普遍拥有一套复杂的体系,其中包含诸多繁杂的组成部分,因此想要改变现状几乎是不可能的。此外,这些企业都建立了强大的技术防护和流程保障,以维护其宝贵且高价的基础设施。
在这样的环境下,杰出的开发人员如果意识到自己的想法无法突破现有模式,其积极性将会被严重打击,甚至可能选择离职。
作为工程经理,你真的需要考虑这个问题。如果你只希望团队里的开发人员盲从领导,按部就班地工作,那你不如雇个机器人来做这些事。如果无法给予优秀的开发人员足够的自由发挥空间,那么你应做好他们离职的准备。
但是,假如你愿意去了解他们,你的开发团队能提供的东西远超你的想象。如果他们有一些概念性的证明,你应该让他们有自由去探索如何把这些微妙的想法变成现实。当然,前提是这不能浪费你的客户的时间,也不能用他们的钱来做这些事,对吧?
如果你的优秀员工在你的管理和客户的影响下出现了失误,他们无疑将面临相应的处罚。然而,这可能引发他们的不满,甚至导致他们选择离职。届时,你将需要亲自承担处理后续问题的责任。
我对那位顶尖程序员的实践:
因为无法改变现有的框架,我们允许他开设一个新的分支,类似于一个沙盒。在这个环境中,他可以尝试自己的新想法,以检验其是否具有可行性和优越性。
结果呢?该代码虽然通过了代码审查和测试,但性能提升并不显著,因此我们并未将这些修改合并到下一个版本中。接着,我们进行了无责任归属的事后分析,并对他进行了反馈,以便他能从中学习和提升。
导师指导
一个杰出的软件开发专员,犹如团队的倍增器,其存在对团队无疑是一份巨大的资产。他们对挑战充满热情,始终渴望掌握更多知识。因此,我们为他们配置了专门的导师,以便在现有基础上助其实现更高层次的发展。
这位导师是一位杰出的首席工程师,他运用 360 度反馈和能力矩阵对该开发者进行了全方位的评估,并深入了解了他的个人能力和需求。
我们的导师向他展示了所有他能想到的资源,向他推荐了一些值得一读的好书,并鼓励他在博客上分享他的想法,与开发社区进行交流。这个优秀的开发者开始讨论他的架构构想,询问社区成员这个构想是否能处理某些功能,是否有扩展的可能性。但他得到的回答并不总是能证实他的想法,这让他的自尊心受到了一些打击。
总的来说,这次辅导帮助了他:
- 尝试以不会对团队士气和代码库产生影响的方式进行实验。
- 理解在团队中达成共识和提出解决方案的难度。
- 让他明白,你是来帮助他,提升他的技能的。
最后,我还要说的是:
换个思维角度,去深度理解那些始终追求卓越的开发者们的需求和期待。
作为一个工程经理,你需要开始区别对待不同的开发人员。归根结底,想做一些不同的事情并不是一件坏事。关键在于我们需要具备敏锐的环境感知能力,了解所处的业务环境以及利益相关者的身份。
毕竟,你是希望你的团队里的初级工程师能够突破自我,成为能力超群的工程师,还是说更喜欢那些执行力一般、需要花费大量时间完成基本任务的工程师呢?
原文链接:https://blog.howareyou.work/how-to-handle-overachieving-softw...
作者:howareyou 社区
译者:阮煜茜
出品:Masutaa大师
关于Masutaa
Masutaa是个互联网从业者自由协作交流平台,链接行业内TOP10%人才!目前平台上已经有将近400名互联网尖端人才,其中近70%的从业者从业年限超3年。
在这个平台上,你有机会获得远程项目,也可实现地理套利,成为数字游民!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。