软件工程师确实很贵,这一点无可辩驳,特别是如果你要找的是热门领域的工程师,比如 Web 全栈工程师、区块链工程师、AR 工程师和 AI 工程师。因此,如果你只能提供刚好与市场水平相匹配的薪资,未必能够吸引到优秀的人才,更不用说留住已经招到的员工了。
那么大多数企业是怎么做的?如果一家企业财力雄厚,通常会提供远高于市场水平的薪资。另一种做法是给工程师股票期权、奖金或类似的东西。如果资金紧张,通常是提供其他福利待遇,比如健身卡、免费的午餐等与工作本身无关的东西。
我看到所有这些方法都以这样或那样的方式实现了,但我敢说,这些方法迟早都会失效。当然,这些策略最初可能会吸引到一些人才,但从长远来看,它们并不是员工愿意一直和企业并肩作战的主要原因。
所有这些对工程师的“特殊待遇”可能会引起公司其他部门的不满。在其他业务部门,这种消极的态度会影响员工的表现,也会影响员工的留任,因为员工可能会觉得自己受到了不公平的待遇。这样一来,不仅浪费了金钱,还伤害了公司其他部门的员工。
我认为这个问题的根源是企业对工程师存在误解。也许是因为工程师的工作看起来有点神秘,他们可以把抽象的概念转化为移动设备或桌面设备屏幕上闪烁的像素。那么一般的工程师是什么样的呢?通过观察他们的行为,我们就可以回答这个问题,并对软件工程师有更好的了解。了解了工程师,也就有可能更好地吸引和留住人才。
首先要说明的是,我的观点并不完全只是基于外部观察,而是多年亲身经历的结果。我在软件行业工作了 20 年,在转做管理工作之前,我做了很多实际的工作,比如设计软件、定义架构和编码。
作为一名工程师,我亲身经历了与公司其他部门之间的双重关系。某一天,你可能是开发出了某个“神奇”功能的英雄,而下一刻却因为没能在很短的时间内开发出“简单”的功能或者拒绝做出某些“简单”的修改而成为他们口中的“混蛋”,即使他们的请求可能隐藏着破坏系统稳定性的风险。这种负面看法通常是因为外行人缺乏对软件工程复杂性的了解导致的。
因为这个领域太过技术化,企业的其他部门可能很难意识到软件工程其实是一门复杂的艺术。组件之间无形的依赖既能成就应用程序,也能破坏应用程序。一些非技术人员欣赏这一点,而另一些则不然。这可能就是为什么最优秀的工程师既可能受到尊敬也可能受到轻视。
事实上,工程师和其他人一样都是人。或许我们比大多数人内向,但这通常要归因于我们的工作性质。编码需要专注,所以最好可以单独完成。编码需要进行大量的学习和练习,其中大部分是在安静的环境里坐在电脑前面完成的。这个过程真的没有什么神秘可言,它需要坚定不移的奉献精神、敏锐的分析能力、好奇心和很强的解决问题能力。任何具备或愿意发展出这些品质的人都可以成为工程师。
既然工程师并不是神一般的存在,那么你就不需要用什么魔法来吸引他们或者留住他们。你只需要找到他们的兴趣点并给出相应的奖励。或许,你可以提供资金让他们参加苹果全球开发者大会(WWDC)或 Coursera 课程,而不只是在周五为他们提供免费的午餐。如果你在移动应用领域,可以每年为工程师购买最新的 iphone 或 Android 设备。这不仅是一项不错的福利,还可以让他们体验新技术。
既然这类福利也同样需要成本,那么你可能会问:为什么不直接给他们更多的钱或者更高的奖金?既然要花钱,为什么不直接把钱塞进工程师的口袋里呢?这不是一个更有效的留住员工的策略吗?要回答这个问题,我们需要研究绩效与奖励背后的心理学,尤其是对高级技术人员而言。
用金钱来奖励好绩效,这是一个非常普遍的管理原则。直到本世纪末,这一原则还基本上没有受到任何挑战。不过,针对这一关系的研究工作已经开始出现,结论可能与预期的有所不同。
“Large Stakes and Big Mistakes”就是这方面的一项研究。在论文中,作者证明将金钱奖励与绩效挂钩在很大程度上并不会提高具备复杂认知技能和创造性思维的高级工作者的产出。事实上,把金钱和工作表现联系在一起会降低工作的质量。工作之后的高额奖励往往会成为整个工作的焦点,这种结构会导致在整个过程中做出更糟糕的决策。
该领域的研究人员也分析了更多的金钱是否会带来更好的动力和更高的整体工作满意度。正如《哈佛商业评论》的一篇文章所总结的那样,结果很复杂。但从总体上看,对于高技能员工来说,金钱本身并不能提供足够的动力。
不过,这方面最全面的研究应该是 Daniel Pink 的《驱动力》一书。 RSA 的这个动画对其进行了总结。Pink 认为,金钱并不是高技能工人选择留在工作岗位的主要驱动力。相反,他提出了三个因素的组合:自我导向能力、在工作中取得进步和努力的方向。换句话说,一旦一个人的基本经济需求得到了满足,金钱就开始变得越来越不是工作满意度的重要标准,尤其是与目标、自我完善和自我导向相比。
不出所料,这一结论与我自己与工程师打交道的经历基本一致。公司是按市场行情支付薪资还是比市场行情高出 20%(甚至 30%)对是否能够更好地留住员工所起到的作用是微乎其微的。后一种情况可能稍稍会起到一点作用,但这样的投入往往是不值得的。提升工程师积的参与感和激励感将起到更大的作用,这就是我们接下来要讲的。
虽说世界上没有两个人是完全一样的,但我多年来遇到的好工程师都充满了好奇心,具备一丝不苟解决问题的能力。他们喜欢活动大脑肌肉,喜欢挑战,抓住一切让不可能事情成为可能的机会。
对一些工程师来说,就是优化现有系统,以获得更好的性能,而对另一些工程师来说,可能是从头开始开发新系统。还有一些在自动化方面取得了成功,例如确保产品新版本的无缝发布,还有一些则在构建复杂的多服务解决方案方面取得了成功。不过怎样,优秀的工程师最终还是想要在他们的领域做得出类拔萃,要么深耕某个领域,要么跨学科拓展宽度。
对于管理者来说,他们需要建立一种促进学习和自我成长的环境。最重要的是要尊重软件工程这门艺术,为软件开发提供合理的时间框架,不要在质量方面有太过苛刻的要求。
然而,即使有这样的环境,也不能保证工程师一定会对手头的工作兴奋盎然。一个常见的例子是,一家公司必须在开发下一个伟大创新产品的同时维护一个遗留产品。大多数工程师都想开发新产品,但老产品仍然需要人维护,因为它可能是公司主要的赚钱工具。经理在这种情况下能做些什么?
经理不能断然拒绝团队不喜欢做的事情,因为这对任何一家公司来说都是不现实的。她能做的就是在不太吸引人的工作和更有趣的工作之间取得平衡。例如,她可以在每次迭代中轮换两个项目的工程师,或者至少确保维护遗留系统的工程师可以参与新系统的设计。此外,她还可以帮助正在做不太有趣的项目的工程师了解他们手头的工作将给他们的职业发展带来哪些好处。
为此,经理需要全面了解每个团队成员的目标以及他们的动机。事实上,如果说只有一个技巧可以更成功地留住员工,那就是:经理对团队的了解和对软件工程的了解,这些才是真正起作用的。
如果手头的工作确实无法让开发团队具备目标感,那么可能需要重新审视一下团队的运作模式。例如,引入自我导向的研究项目。引入这些项目的目的是产生创新的想法,然后在后续阶段将其整合到公司的产品中,而不只是起到短期效果。
总的来说,要留住工程师,良好的工作环境比高薪资更重要。良好的工作环境不仅仅是指舒适的沙发和乒乓球桌,而是让工程师们可以在成长和自我完善,并在满足天生好奇心的同时锻炼大脑肌肉的地方。
招聘和留住工程师并不只是要在薪资方面打败竞争对手,更重要的是要为他们提供一个有利的工作环境。
在招聘工程师时,你要向他们展示公司能够提供给他们的学习机会和公司技术的独特性,以此来激发他们的热情。
在工程师加入公司后,确保他们能够意识到这些学习机会的存在。如果可能的话,让他们自己选择想做的工作。如果不能,确保他们能够在普通任务和有趣的工作之间轮换。
当然,这种策略无法消除人才竞争,也不能保证能够永久地留住员工。优秀的人才总是有人抢,而人员流动在任何行业都是不可避免的。但是,营造一种积极向上的公司文化可以确保薪资制度是建立在坚实而积极的基础之上,而不只是随机做出的决策,从长远来看,后者弊大于利。