如何保留优秀的程序员
获取的哲学
鉴于我刚刚换了一份工作,最近有很多关于我为什么换工作的询问,这并不完全奇怪。一般来说,当有人离职时,同事、经理、HR、朋友和家人都很想知道原因。
就我个人而言,对于这个问题,我往往给不出满意的答案,比如“我想要一个更好的职业发展机会”或者“觉得是时候改变一下了”之类,这相当于公司里经常讲的 "不是你--是我"。当我给出这种答案时,我并不是在使用外交辞令或回避。我给出答案是因为我真的不知道,到底是什么。
不要误会我的意思。无论你到哪里(或从哪里出发),总会有对组织上的不满或烦恼,假如有人走过来说:“如果穿着睡衣在家工作的同时,做着你想象中最酷的工作,赚两倍的工资,怎么样?”,或者碰到你现在的老板说:“我们要把你的工资减半,强迫你做脏活苦活,然后把你送到南极洲去做。” 当然,我也许有具体的离职理由,但这似乎更多的是规则之外的例外。
作为一般惯例,我喜欢审视自己做事情的动机,我认为这是一个很好的检查,以确保我的决策是理性的,而不是冲动或幼稚的。
因此,我把这种习惯运用到了我的职业生涯考虑过程中,结果就是这篇文章的内容。请注意,这是一篇前言,解释了让我沿着这些思路思考的原因,我把对自己情况的看法泛化到更多的软件开发人员身上。也就是说,我并不是想说:“我是最优秀的,有人会留我”。我认为自己的编程水平与岗位无关,我更愿意把自己看成是一个有能力、有成果的开发人员,突出表现在对学习的热情和对工作的自豪感上。我不认为自己是大咖,我觉得这种骁勇善战的自我评价是适得其反的,是愚蠢的。
别人怎么看
在过去几年里,我读到的一些我最喜欢的文章都集中在工程师流失这个话题上,我认为这些文章为这个话题提供了一个很好的背景。我列举的最古老的一篇文章,作者是 Bruce Webster,名为“湿件(Wetware)危机:死海效应”,它为一种现象创造了一个很好的术语,我们可能都在意识或潜意识层面上隐约意识到了这一点,“死海效应”是对一些公司过于注重人员保留倾向的描述,以至于他们无意中留住了平庸的人才,却赶走了更好的人才。
...发生的情况是,那些更有才华和更有效的 IT 工程师是最有可能离开的人,如果你愿意的话,他们会消失掉。他们是最不可能忍受困扰大型组织频繁的愚蠢行为和工作场所问题的人;他们也是最有可能拥有其他机会的人,他们可以随时转移到其他地方。
往往留下的是 "废柴"--最没有天赋和效率的 IT 工程师。他们往往对自己有一份工作心存感激,对管理层的要求也较少;即使他们觉得工作环境不愉快,他们也最不可能在其他地方找到工作。他们倾向于巩固自己的地位,成为关键系统的维护专家,承担别人不愿意承担的责任,使组织不能让他们离开。
Bruce 描述了一种范式,在这种范式中,有才能的人离开的原因往往是,他们厌倦了处于相对(默认)权威地位的、不太有才能的人,提醒他们要做的事情是一些“经常发生的蠢事”。在唯才是举的制度中,实际上存在着一种啄食秩序的颠倒,这就导致了一种不正常的局面,有才能的人要么回避,要么就想尽快逃离。
Bruce 的文章主要是从组织的角度出发,他谈到了为什么很多组织会出现一群根深蒂固的平庸的高级开发人员、主管和经理,而除了“经常犯傻”的评论之外,并没有过多地触及人才离开的动机。来自《每日WTF》的 Alex Papadimoulis 阐述了人才离开的动机。
实际上,在每一项工作中,员工为公司带来的整体价值(生产力与成本的比值)都有一个峰值。我把这个叫做价值峰值。
在第一天第一分钟,员工的价值实际上是零。随着员工熟悉新环境,并开始运用他的技能和过去的经验,他的价值迅速增长。当员工掌握了业务领域知识,并与同事分享他的想法时,这种增长会以指数级的方式持续下去。
然而,一旦员工分享了他所有的外部知识,学习了所有关于业务的知识,并应用了他过去的所有经验,这种增长就会停止。那个员工,在那个特定的工作岗位上,已经成为了他能成为的全部。他已经达到了价值的顶点。
如果该员工继续同一份工作,他的价值就会开始下降。曾经的 "今天还无法实施的新想法 "变成了 "永远不会做的老套无聊建议"。之前解决类似问题的方案,会被人以“我们也参与过那个项目”来迎接,或者干脆以“那是五年前的事了,我们都听过这种想法”来否定。这导致了自我实际化的丧失,最终削去了积极性。
熟练的开发人员明白这一点,越过价值顶点往往会引发一种天生的“可能是时候让我继续前进了”的感觉,一段时间后,会导致不可避免的埋怨和对工作的整体不喜欢。没有任何东西--即使是按摩师--能缓解这种失落。
另一方面,不熟练的人往往会有一条略微不同的曲线:价值趋同(Value Convergence)。他们最终会安于一个平庸的位置,并无限期地停留在那里。他们价值不降低的唯一原因,是他们囤积和创造的大量制度性知识。
这比简单的择优录取倒置导致技术型开发人员离职要更细致有趣一些。Alex 的解释表明,顶尖的程序员只有在能够为他们提供价值的工作中才会快乐,而且他们提供的工作价值也会越来越高。最优秀和最聪明的人不仅希望成长,而且希望感觉到自己越来越有用,越来越有价值。这说明他们对自己的工作感到自豪。
在几年后写的一篇题为《无聊的人辞职》的文章中,Michael Lopp 认为,无聊是开发者离职的前兆。
当我反思我下面的人离职时,事后诸葛亮让我可以指出这个人改变的那一刻。不管是察觉到的微妙变化,还是直接宣布他们的无聊,都有一个明显的迹象,表明他们面前的工作不再有趣。而我却忽略了我的观察。我以为这无关紧要。他今天心情不好。我以为事情会好转。实际上,无聊是一个种子。
原本是“我很无聊”, 后来长出了根,变成了“我很无聊,为什么没有人做任何事情?” 然后发芽了“我很无聊,我告诉了我的老板,而他......什么都没做”, 最后开花成了 "我不想在一个他们不关心我是否无聊的地方工作"。
我把无聊当成了一个时钟。在我的团队中,每当有人感到无聊,这个时钟上就会流逝一秒。在经过一些因人而异的汇总秒数后,他们看看时间,举起手臂,然后退出。
这个激励的主题更侧重于 Alex 的“为员工提供价值”,而不是“员工提供的价值”,但当然也可以说它包括这两方面。无聊意味着开发人员从任务中得到的东西不多,他提供的感知价值很低。但是,除了“价值顶点”的考虑之外,无聊的开发者还有一个更平凡的问题,那就是每天都不投入或不享受自己的工作。
共同点是什么?
我将不考虑明显的离职原因,如恶劣的工作环境、低于市场的薪酬、减少福利/薪水等,这些都是不需要考虑的,而将重点放在那些驱使优秀开发者离开的事情上。到目前为止,我们已经看到了一些非常有说服力的描述,从一些案例里面大致勾勒出了三种离职动机。
- 对优胜劣汰的挫败感("组织的愚蠢")。
- 程序员和组织之间,工作的相互价值回报递减。
- 简单的无聊
在这个列表中,我还要补充一些上面文章中所暗示的,或者我自己经历过的,或者从同事那里听到的事情。
- 认为目前的项目是徒劳的或注定要失败的,伴随着组织无力阻止它的发生
- 缺少导师或任何可能向其学习的人;
- 晋升是时间问题而不是业绩问题
- 没有明显的晋升途径
- 害怕被归入没什么销售价值的技术范畴。
- 繁文缛节的组织官僚主义削弱了任何人主动性的影响。
- 缺乏工作自由和创新控制(也就是 "微观管理")。
- 与大多数同事在理念上的基本分歧。
从这个列表来看,其中有一些是 Burce、Alex 和 Michael 所提出的观点的具体实例,所以它们不一定是这个主题本身的进步,尽管你可能会跟着它们点头,并想在列表中添加一些你自己的观点(如果你有一些你想添加的观点,欢迎文后留言)。
但事情变得更有趣的地方是,几乎所有的人,包括来自链接文章的人,都属于对自主性、精通或目标的渴望。想了解一些背景,可以看看 RSA Animate 的这个视频 (1)。这段视频值得好好看,但如果你没有时间,我总结它的要点:
人类并不是以经济为动机走向自我实现(如人们普遍认为的那样),而是受这三个动机因素的驱动:掌控自己工作的欲望,对事情精益求精的欲望,以及为实现某种目标而努力的欲望,而不是每周出勤 40 个小时,领取一份薪水。
对组织愚蠢的挫败感,通常是由于缺乏工作自主性,以及认为没有明显的目标。Alex 的价值顶点是在精通和目标作为动机减弱时达到的,而对工作的厌倦,很可能是由于缺乏三种 RSA 需求中的任何一种被满足而导致的。但我不打算用这三个激励因素来总结症状,而是要把它归纳为一条。你可以通过确保你的优秀开发人员作为员工有一个令人信服的愿景来留住他们。
说出你的故事
糟糕的或平庸的开发人员,是指那些实际已经退出职业生涯的人,他们通常没有精通的欲望,没有具体目标,也没有主动研究的兴趣,他们已经放弃了深入了解这些知识的可能性。
尽管工资未必高,但他们基本上已经和公司达成了一个糟糕的经济交易。换句话说,他们放弃了自我实现的机会,换来的是公司为他们提供房贷、买车的费用还有水电费等开销。
我听一个朋友说,这叫 "金手铐"。他们在工作中都有一个预设的说法。"我在这家公司工作,因为如果我不干活的话,收债人最终会出现。" 这些人不一定是坏员工或没有生产力的员工,但他们很可能不是你最优秀、最聪明的员工,你可以放心,他们会倾向于付出最低限度的努力,以维系他们处在坏交易的一端。
这些员工很容易被留住,因为这是他们每天默认的状态。出去找另一份工作已经超出了支付房贷等开销所需的最低努力,所以他们不会这么做。他们是 Bruce 描述的“废柴”,他们往往会坚持下去,并获得每年普调的晋升或者加薪,如果不加以控制,他们最终会破坏团队中其他新的开发人员的 RSA 需求,从而要么转化他们,要么赶走他们。你给他们提供的说法是:"坚持下去,每五年我们会给你升职和纪念金表"。他们接受了,认为升职和手表是肉汤。
但是,当你向雄心勃勃、充满激情、才华横溢的开发人员提供同样的描述时,他们就会离开。他们发现工作的无聊,无聊的人就会辞职。他们拒绝忍受这种组织上的愚蠢,他们寻找 "成长或离开",而且,他们意识到“离开”要快得多,也更有吸引力,于是,他们自行改变了自己的说法,变成了“再见,S* 们!”
如果你想让你的天才开发人员留下来,你需要为他们提供一个更有吸引力的描述,确保把他们带到一旁,经常向他们重申这个叙事。并且确保这个叙事是决定性的,即他们自己的行动让他们朝着其中一个目标前进。以下是一些可能会让开发人员留下来的愿景。
- 如果你能按时或提前完成 X 功能,我就会提拔你
- 通过未来几个月给你的工作,你将成为我们组织中最重要的 NoSQL 专家。
- 我知道你对 Bob 的 Ruby 功力非常钦佩,所以我想让你和他一起参加一个项目,并且他作为你的导师,这样你就可以向他学习,并有机会达到他的水平。
- 我们正在构建一个对我们的业务至关重要的会计包,而你将全权负责其中的安全和日志部分。
- 如果你在 Y 项目上的工作完成得好,公司可以允许你根据你最有兴趣使用/学习的语言来选择下一个任务。
请注意,这些愿景都以不同的方式呼吁自主/掌控/目标。这些激励措施并不是在开发人员面前悬赏经济或权力激励,而是以诸如职业发展/认可、增加自主性、学习和实践新事物的机会、知道自己的工作很重要而获得的满足感等方式来进行。
而一旦你给了他们一些说法,就问他们希望自己的想法是什么。换句话说,“我们会给你更多的责任,让你做好工作”是一个好的说法,但它未必是开发者最想要的。因此公司的说法不一定能给程序员他最想要的东西,但至少可以激发想法,并且引导更有吸引力的想法。
一个新的团队成员说:“我想成为部门的首席架构师”,他或许有些过于冲动,但你也许可以找到一个小的、一个人的项目,然后说:“你可以从这个模块开始负责架构,从小处着眼。”
在任何时候,你和你团队中的开发人员都应该知道他们的想法,这确保了它们不仅仅是周期性的、感觉良好的措施--迈克尔的 "跳水救人"--而是工作满意度和目标的恒定点。开发人员的职业生涯是一个持续不断的旅程,要去某个地方,而不是一个西西弗斯式的情况,退休前发现时间不够了。
通过这种方法,你甚至可能会发现,你可以从一些“废柴”员工中哄骗出一个想法,重新点燃一些兴趣和生产力。或者,定义一个想法会让你们双方都意识到,他们之所以是“废柴”,是因为他们一开始就被误判了,还有比编程更合适的事情可以让他们去做。
结论
你所定义的愿景也许并不完美,但至少是个开始。不要忽略它们,不要让它们萎缩,无论你做什么,都不要让倒置的功利主义“废柴”干扰对后起之秀或表现优异者的想法。这将使你的团队陷入恶性反馈循环。与开发人员一起研究愿景,并在一段时间内对其进行完善。获取关于愿景进展情况的反馈,并根据需要进行更新。
Alex 认为人才的离开是不可避免的,这可能是真的,但我不知道我是否完全同意。我认为,只要有才华的员工有一个理想和愿景,他们的价值顶点就不需要平移。这一点在比如说咨询公司尤其如此,在那里,新的领域和特设的组织模式是常态,而不是例外。但我想从 Alex 的文章中得到的是一个也许是激进的想法,即如果有才华的开发者想法不一定在五年或十年内涉及到公司,那也没关系。这很好,它允许替换规划和一般的、相互的成长。
无论愿景是什么,都要标明朝向它的进展,完善它,并确保你的开发人员正在与朝向自主、精通和目标方向工作。
文中链接
http://www.youtube.com/watch?v=u6XAPnuFjJc
英文原文: https://daedtech.com/how-to-keep-your-best-programmers/
参考阅读:
- 如何低成本的完成一个副业项目
- WebRTC,音视频会议底层支撑技术解读
- Slack的512宕机故障分析:负载均衡策略的失误
- 双子座(Gemini)协议:Web 协议最简单的一种替换
- 十年以上程序员才懂的一些 coding 心得
- 哔哩哔哩「会员购」业务网关的研发赋能实践
本文由高可用架构翻译,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。