如何管理过分追求卓越的软件开发人员

  【CSDN 编者按】作者分享了他们的软件工作室在承接一个大项目时,雇佣了一位新工程师的经历。这位工程师非常有才华,但随着时间的推移,他的一些消极特质开始显现,例如不耐烦、不喜欢被告知错误,以及不断试图证明自己。他的行为甚至危及到了项目的进展。文章进一步探讨了过分追求卓越开发者的心理特质,以及如何通过设立明确的界限、关注过程而非结果、帮助他们找到平衡、提供适当的关注和灵活性、鼓励团队合作、提供实验时间和指导等方法来管理他们。最后,作者强调了理解和支持过分追求卓越开发者的重要性,以及如何将他们视为团队的资产。

  原文链接:https://blog.howareyou.work/how-to-handle-overachieving-software-developers/

  未经允许,禁止转载!

  作者 | howareyou 社区 ? ? ? ? 译者 ? | 明明如月

  责编 | 夏萌

  出品 | CSDN(ID:CSDNnews)

  我们是一家专门提供高质量软件开发服务的小型公司,接到了一家在全球范围内经营业务的大型公司的订单,让我们负责一个重大项目。时间紧迫,仅八个月,我们选择扩充团队应对这一挑战。

  我们增聘了一名工程师,并将一些较小规模的任务如文档更新、错误修复和回归测试交给了他。他高效地完成了所有任务。我对他的工作效率非常满意,逐渐将更多客户项目的任务交给了他。

  他是一位优秀的工程师,潜力巨大。在招聘过程中,他出色地通过了所有测试,与团队其他成员也相处融洽。然而,我渐渐注意到了他一些出乎意料的个性特点,例如不耐烦、难以接受批评和强烈地渴望证明自己。

  虽然我们一直强调软件工作室的扁平化管理,鼓励每个人为改进系统和工作流程做出贡献,但我们没有预见到他的贡献会达到如此令人担忧的程度。

  他提出要在当前项目中引入自己开发的 JavaScript 框架。他当时仅是在饮水机旁边随口提了一句,我当时并未当回事。我告诉他我们的框架已经确定,此时更改只会造成生产的延误。他对此表示理解。

  然而,几天后,他在站立会议期间更坚决地表达了自己的观点,流露出一种自负的态度。我再次强调,我们不能采纳他的建议。

  接着,他开始单独对不同的代码部分进行系统化处理。代码审查环节出了什么问题?是不是审查员松懈了,让问题轻易通过?这成了我必须解决的另一个问题,充分体现了一位工程经理的日常挑战。

  后来,在我们开始第三个模块时,他在站立会议上提出要改变编码方式,理由是他背地里进行的所有工作都会阻碍生产进度并造成严重延迟。

  到那时,我已经感到无法忍受。但在采取行动之前,我需要充分准备,并深入了解过分追求卓越的软件开发者的心态。

  探析过分追求卓越的软件开发者的心态

  要有效管理那些具有颠覆性、自我驱动、过分渴望成就的软件开发者,你确实需要深入了解他们的思维模式。只有在理解了这种性格类型及其背后的激励因素后,你才能够在不消耗公司资源的前提下管理他们。

  以下是我对过分追求卓越的软件开发者的一些深刻见解:

  他们从超越预期的成果中获得满足感。然而,当寻求的挑战越大时,获得多巴胺的满足感也越为困难。

  他们容易感到单调乏味,一旦感到厌倦,便可能离职。

  他们常一心专注于某项任务,可能会忽视其他重要细节或机会来满足自我。

  虽然他们可能显得注意力不集中,但请相信我,他们确实过度关注自己所负责的领域。

  他们非常敏感并对批评反应强烈。

  他们对未来的过度关注,渴望在职业生涯中达到自设目标。

  金钱不能激励他们,但具有挑战性的项目和实验却能激发他们的积极性。

  你是否曾告诉过一个过分追求卓越的开发者自己的错误?是。

  你是否曾过度管理过一个过分追求卓越的开发者?是。

  他们自视甚高,认为不需要他人的帮助或指导,甚至觉得自己能指导导师。

  如何管理过分追求卓越的软件开发者?确立明确的界限

  当你的团队中有一位具有颠覆性、自我驱动、过分追求卓越的软件开发者时,你应该立即安排一次一对一的会议,以便从一开始就预防可能出现的问题行为。

  一般而言,你应该在问题出现时立即采取措施。忽视问题无论大小都会让问题积压。当你在问题达到临界点时才处理,可能会引发强烈的情感反应。请牢记,过度追求者通常难以接受批评。

  在我的经历中,我明确向那位过度追求成就的开发者阐述了他的职责和期望。我向他表明,我所管理的软件开发的商业方面与人员方面同等重要。我认为他应当理解软件构建的团队性质,即软件是人们为人们所构建的。

  此外,我明确表示他不能单方面决定去做自己认为必要的事情。这样的决策需要得到我的认可和团队的一致同意。在我们的组织中,我们采取团队优先而非技术或开发者优先的方法来解决问题。他如果想在公司中有所成长,必须理解并接受这一理念。

  坦白地说,我必须坚守我的立场。如果我允许他用客户的资金自由实验,而最终结果却失败,那将会损害我的形象。随后,团队的士气和生产力可能会下降。我的直接下属可能会失去对我的信任,高层管理人员可能会开始质问我。

  专注过程,而不是单纯追求结果

  解决问题后,我开始寻找方式来协调他的性格与我们的目标。过度追求成就的人对于在高水平上的表现充满渴求,但他们往往过分专注于最终目标,忽略了过程中不可控的因素。因此,这里的核心想法是引导他们将注意力集中于过程,这是他们可以有效管理和控制的部分。

  让过分追求卓越的开发者准备一个可执行的计划,并确保其中的每一步骤都详细、明确并能够逐一完成。此计划将帮助他们聚焦于当前达成目标的关键事项,而非过度关注遥远的未来目标。通过达到每一个里程碑,他们将获得成就感,满足他们对成功的渴望。

  协助他们寻找平衡,避免身心疲惫

  与多位过分追求卓越的人合作的经验告诉我,他们的努力常常超过一般人的水平。在一个项目中,他们会工作到深夜,甚至连续几天不休息。

  虽然过分追求卓越的开发者深知健康和幸福的价值,但他们往往盲目投入,不知疲倦地工作。他们会把自己逼到极限,长时间工作,甚至忽视饮食和睡眠。即使生病,他们也会坚持工作,从而增加患抑郁症和疲惫不堪的风险。

  因此,作为工程经理,你必须强制执行休息和休假政策。不仅要告诉过度追求成就的开发者休息,还要确保这成为所有开发者的通用政策,并在与老板的一对一会议中提出任何违反情况。

  此外,有一些具体方法可能有助于实现平衡。例如,由于过度追求者非常重视目标,你可以将 " 寻找平衡 " 融入他们的目标中,并确保可以跟踪和衡量。例如,可以将参加正念课程、咨询心理医生、休假一天或投入时间放松和学习新知识等纳入他们的 KPI 中。

  平等对待,因材施教

  我们采用扁平化的管理结构,确保每个人都享有平等的机会。然而,某些特殊人群,如那些过于追求目标的员工,需要得到特别关注。我所提的并不是某种明星般的特权待遇 。

  鉴于他们工作的高效性,你应为他们提供更便捷的资源和工具。安排一对一的指导关系,协助他们塑造职业规划,提供适当的培训和教育机会。最重要的是要给予他们挑战任务的灵活性和自由度。要知道,这些人总是全力以赴,投入 110% 的工作热情。

  允许灵活的工作时间、在家工作(WFH)或其他福利,将有助于提高这类追求卓越的开发者的忠诚度和工作满意度。总的来说,你绝不应因固守某种 " 这就是我们的工作方式 " 的观念,而限制你的开发者们。

  作为工程经理,你的职责不仅在于按时、按预算交付产品,更应成为卓越的领袖,营造健康的公司文化,并辅助开发者每天提升自己,无论是作为程序员还是作为人。

  不难理解这样一句话:开发者离职的原因并非公司本身,而是他们的经理。所以,请勿成为那样的经理。你是否更愿意通过辅导开发者、助他们走向职业生涯的新高峰来成就他们呢?这样的说法确实让人深感共鸣。

  促进团队合作的结对编程

  高效能开发团队之所以在软件构建方面取得卓越成就,关键在于他们懂得如何高效协作。向那些过度追求目标的成员灌输这一理念至关重要。而让他们以配对的方式工作则是实现这一理念的最佳路径。

  结对编程是一项软件开发实践,在此实践中,两名程序员在同一台计算机上共同工作,共同解决特定任务或问题。其中一人作为 " 驾驶员 ",负责编写代码,而另一人充当 " 导航员 ",负责代码审查、提供反馈,并进行战略方向的思考。

  在编程过程中,他们会频繁交换角色,驾驶员和导航员的职责不断切换。

  这种做法促进了实时协作、知识共享和及时反馈。它有助于提升代码质量,激发创造性思维,增强问题解决能力。那些过分关注目标的人员也将意识到,其他人的观点也是有价值的,有时甚至更为精准。

  若你能引导他们将部分精力投入到成为优秀团队成员的培养中,他们可能会变得更加稳重,减少混乱。这样一来,他们可以在重新融入 " 良好人际关系 " 的行列之前得到认可。

  时间投资与实验

  许多大型公司拥有一套完善的系统,其中包含多个复杂的模块,使得系统几乎不可能进行重大更改。为了维护这些重要且高价值的基础设施,大公司通常会设立强大的技术和流程保护机制。

  在这样的环境中,当一些富有创新精神的人员的新想法无法打破现有限制时,他们往往会感到失去动力,并可能选择离职。

  作为工程经理,这是你必须要考虑的问题。如果你希望团队中的开发人员仅遵循指示,步步为营地工作,你可以聘请人来执行这些任务。反之,如果你不欣赏那些有创新的精神,你应该让他们离开。

  然而,如果你承认开发人员具有很多有价值的见解,并且他们有概念验证能力,那么你应该让他们自由探索如何把精细的想法变为现实,但当然,不应该用客户的时间和资金。

  如果你的这些具有突破精神的人员在你的监管和客户的资金支持下失败了,他们可能会感到愤怒并选择离开,你将不得不承担后果。

  我们的实践:

  由于更改整体框架并不可行,我们允许他创建一个新分支,一个沙盒环境,这样他就可以验证他的其他方案是否更具可行性和优越性。

  结果如何?经过代码审查和测试后,性能略有提升,因此我们并未将这些修改纳入下一个版本。随后,我们进行了一次无过失的项目回顾分析,旨在为他提供反馈,使他能够从中学习和提高。

  导师引导方案

  具有过分追求卓越的软件开发者能显著提高团队效能,可以看作是团队的珍贵资源。他们热衷于接受挑战并始终寻求学习新知识,因此,我安排一位导师来辅导和引导他。

  这位导师是一位杰出的首席工程师,他运用 360 度反馈和能力矩阵对该开发者进行了全方位的评估,并深入了解了他的个人能力和需求。

  我们的导师为他展示了所有可利用的资源,推荐了值得阅读的专业书籍,并鼓励他在博客上分享见解,与开发者社区互动。这位渴望成功的开发者提出了关于自己架构理念的问题,并探讨了特定功能的可行性和可扩展性。他收到的回答并不总是支持他的观点,这让他的自尊受到了一些影响。

  总体而言,导师引导方案对他有以下帮助:

  以不干扰团队士气或代码库的方式进行创新和实验。

  认识到在团队内达成共识并提供解决方案的复杂性。

  确保他知道你对他的支持,并有助于提高他的技能水平。

  最后的建议:

  调整你的思维方式,深入理解过分追求卓越的开发者的需求和期望。

  作为工程经理,你应当将这类开发者视为特殊类型的人才。毕竟,渴望创新和突破并不完全是负面的特质。你需要具备深刻的情境认识,并了解你的商业环境和关键利益相关方。

  毕竟,你是希望团队中有一位立志成为 10X 工程师的成员,还是更倾向于选择那些执行力一般、需要花费大量时间完成基本任务的人员呢?

  你是否也曾遇到过分追求卓越的软件开发人员?他们是如何影响你的项目和团队的?欢迎在评论区分享你的经验。

  参开链接

  小型公司:https://codequest.com/?ref=blog.howareyou.work

  工程经理:https://blog.howareyou.work/what-is-engineering-operations/

  人员方面:https://en.wikipedia.org/wiki/Peopleware?ref=blog.howareyou.work

  疲惫不堪:https://blog.howareyou.work/the-essential-guide-to-burnout-in-software-engineering/

  一对一会议:https://blog.howareyou.work/one-on-one-meeting-software-developer/

  高效能开发团队:https://blog.howareyou.work/how-to-build-a-high-performing-software-development-team/