作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
管理就是人. 无论是管理者还是员工, 他们都在思考如何实现个人和职业目标. 这些目标和相关人员的个人特征相结合,形成了这种关系, 在时间, 可以是积极的, 富有成效的, 和满足, 或者有时只是单纯的压力, 要求, 和人口.
当然, 在后一种情况下, 产品质量下降, 人员流动增加, 实现目标变得越来越困难. 因此, 在经理和员工之间建立奖励和激励的关系是提高效率的关键, 生产力, 以及他们的自我实现.
在管理软件开发人员时尤其如此, 因为他们工作的技术复杂性和创造性, 为了产生结果而被压缩到通常很短的时间内. 就像所有的老板和员工关系一样,有很多因素涉及,比如:
在本文中, 我们将侧重于主要的管理方面, 而不是在技术上, 我们认为任何想要成功留住软件开发人员的人都应该考虑到这一点.
但在这里, “成功”不仅意味着取得成果和遵守公司政策, 时间线, 和预算, 但也要有一个积极进取、富有成效的软件开发团队,他们会尽自己最大的努力,并长期留在公司.
这就引出了我们的基本主题:是什么让软件开发人员发挥作用? 记住这一点, 我们将介绍一些方法来留住我们在成功的软件开发团队中发现的员工.
在软件开发中, 你所雇佣的人才将决定你的成败, 在团队中进行持续的改变总是需要花费大量的时间和金钱. 因此,良好的选择过程对项目的成功至关重要.
在招聘软件开发人员时,技术招聘人员知道这一点, 这一切都要从一个精心平衡的招聘启事开始. 帖子必须具有激励性,以便让合适的开发人员对其做出响应——太多或过于专业化的需求可能会令人沮丧, 但如果你说得太含糊, 你的公司可能会收到大量无用的简历.
详细说明工资和福利待遇也是一把双刃剑,因为你的竞争对手可以利用这些信息来调整他们的薪酬计划, 开发者可以在招聘时将其作为讨价还价的基准. 当然, 因为在招聘过程中总会有一些谈判的余地, 我们建议招聘启事在薪酬方面不要太具体, 使用范围而不是固定值.
与此形成鲜明对比的是, 招聘启事应尽可能明确工作职责和要求, 既强制又有好处. 从一个坚实的契合度开始,是我们其他员工保留策略的最佳背景.
在这个过程的这一点上,最好是 获得一些评估候选人的建议 和 看看在面试过程中可以避免哪些陷阱. 除了上述资源的指导外,我们还想补充一点,即事先要求应聘者提供之前工作中的一些参考资料,通常是验证他们技能的其他方法的一个很好的补充.
招聘以向候选人提供工作机会结束, 当公司提交一份正式的文件,总结该职位的特点(姓名), 排名, area, 等.)、薪酬方案(工资和医疗、养老金或教育等福利).), 开始日期, 时间表, 工作地点, 并要求建立工作合同, 如果候选人接受了这份工作.
虽然在这个阶段,一切都或多或少地完成了, 候选人可能想要协商一些条件, 这取决于公司是否接受或讨价还价. 这取决于公司的做法.
然而, 肯定, 公司不希望因为原则问题而失去一名优秀的候选人, 所以合理的权衡不会伤害任何人. 在这种情况下, 明智的做法是要求候选人对他所做的每一次让步有所回报, 就像, 例如, 较早的开始日期, 在公司至少工作一段时间, 或者公司可能有的任何特殊要求.
一旦软件开发人员开始在公司工作, 他们的经理开始意识到他们是谁, 它们是如何工作的, 和, 最重要的是, 他们产生的结果. 因此,留住软件工程师成为一个明确的优先事项.
这就是对软件工程师性格的洞察所在:他们——尤其是表现出色的人——经常表现出一些共同的特征. 我们会指出这些模式, 但请记住,它们可能并不适用于每个人. 软件开发项目管理既涉及异常,也涉及模式.
因为软件开发是一项技术工作, 这需要对公司结构有非常精确的了解, 目标, 程序, 政策(包括信条和商业惯例), 标准(技术和非技术). 因此, 开发者越了解公司, 他们生产的产品越好,花的时间就越少.
这种基本培训可以通过文档、在线内部网课程或演示文稿进行管理. 但这是必要的,因为它会让新员工更清楚.
如果要引进新技术,一定要提供必要的培训. 软件开发人员喜欢接受挑战,但他们可能会讨厌在没有正确学习的情况下就被投入到一项新技术中.
互联网上到处都是有价值的学习材料, 当软件开发人员需要学习或重新学习技术细节时,它通常是他们求助的第一个资源. 如果你想留住软件开发人员, 提倡自学文化是必要的, 如果有必要的话, 给工作时间. 这种方式, 该小组将掌握最先进的技术和方法, 这是软件开发人员经常非常欣赏的.
有些人认为软件开发人员寻求最高的技术来完成他们的工作, 具有业内最好的规格. 相反,我们认为这取决于手头的工作. 例如,如果一家公司发展 第一人称游戏,它将有必要为开发人员提供尖端的计算能力. 但是如果工作是为事务系统开发后端web服务, 一台不那么强大的计算机可能就足够了.
真正重要的是为开发人员提供所有必要的工具来完成他们的工作,并听取他们对新工具的建议. 在逻辑上, 开发者建议的每一个新工具都必须经过公司的批准(甚至可能在此之前进行测试)并获得许可. 这是值得的, 拥有足够的资源是影响开发者积极性和结果的关键因素. (如果你让软件工程师失败,你就不能指望留住他们!)
软件开发人员喜欢在鼓励和尊重他们创造性努力的地方工作,因为他们的工作是从无到有,尽管受到设计的指导, 标准, 及资讯科技政策. 因此, 开发者需要有足够的信心,相信他们属于一个所有官僚主义和限制都最小化的单位, 只要他们遵守公司的政策和信条.
这并不意味着软件开发人员应该比公司的其他人有任何特权, 而是他们的经理在需要的时候帮助他们克服或解决官僚主义. 留住软件开发人员的一个非常重要的方面是,他们的老板对他们的个人需求持开放态度,并在需要的时候帮助他们.
内部开发单元的安排在这里也起着关键作用. 经常, 存在测试组, 保持开发人员和测试人员之间的团队合作流畅是软件工程经理的职责. 这可以简单地通过清晰的方法和过程来实现. 如果开发人员和测试人员都有共同遵守的规则,他们就会很好地合作, 保持低冲突或不存在冲突.
如果你想留住软件开发人员,让他们保持在循环中是必要的. 团队中的所有成员都应该定期更新目标, 影响他们的公司情况, 策略, 组织的变化和, 最后但同样重要的, 团队的成就.
即使让许多团队成员分享一些亮点,也有助于培养团队的凝聚力和团队合作精神. 正常情况下, 这些团队会议——最多两个小时——应该定期安排(也许每周一次),也可以在项目的最后阶段等特殊场合安排, 危急情况, 等.
除了与团队的沟通, 经理必须建立一种方法来了解每个成员的最新情况, 是否与工作有关?, 技术, 或个人.
正常情况下, 每周与每个团队成员开30分钟的会,可以让经理发现这些情况并提供帮助, 从而防止潜在的人事危机,提高团队成员在公司内部的士气.
澄清一下, 我们不是在谈论建立一个以会议为导向的开发单位, 所以严格会议纪律(守时), 尊重, 参与, 持续时间)是必要的. 此外, 这个原则向开发人员表明,他们为一个非常专业的组织工作, 他们通常欣赏的东西.
制定年度总体目标或类似的评估准则是没有意义的.
当与软件开发人员打交道时,这是一个明显的因素:无论他们的角色是什么(需求收集), 体系结构, 设计, 编程, 测试, 等.), 要尽可能清晰地向他们提供目标, 因此,制定年度总体目标或类似的评估准则是没有意义的. 由于开发人员应该在项目中工作,因此.e., 有明确的范围和时间表, 分配目标的最佳方法是在项目开始时,并包括如何评估和评估进展, 如果适用的话, 他们将如何被识别.
幸运的是, 现在, 有些方法的目的是尽可能快地产生结果, 比如敏捷和Scrum, 这简化了后续工作和项目控制. 有时,这甚至可以在留住软件人才方面发挥重要作用:许多开发人员喜欢这些方法,因为它们可以快速交付结果, 定期给他们一种成就感.
此外,开发人员通常更喜欢轻量级的方法. 他们知道像rational这样的高端项目——在一个长期的需求工程项目之后交付最终产品, 设计, 发展, 测试, 而且实施起来是有风险的,遵循起来可能会很痛苦.
这适用于软件开发团队和其他任何类型的团队:软件工程经理必须及时有效地处理冲突, 或者它会失去控制,摧毁士气, 团队合作, 和整个单位的有效性.
假设发生冲突的开发人员是专业的并且是善意的, 经理与相关人员召开会议,启动清晰的对话,并在之后迅速解决问题,这应该足以让团队继续前进. 也, 有时候,有必要给他们一个明确的警告,那就是个人层面的冲突, 如果真到那一步, 不被接受.
无论如何, 在这次和解的最后, 重要的是,双方都觉得解决方案是公平的, 即使其中一个不喜欢. 冲突有时是生活的一部分,但留住软件人才意味着 有尊严地对待每个人 每当出现这种情况时.
尽管我们已经触及了许多影响开发者动机的因素, 还有一个关键方面. 这不是情感问题,也不是技术问题. 我们讨论的是他们工作的报酬率.
尽管在本质上倾向于理想主义, 软件开发人员通常喜欢物质世界的美好事物. 对公司来说,确保工资和补偿计划与劳动力市场保持一致总是更好的行业研究 很容易找到,甚至可能比他们的职位高一点.
也, 大多数软件开发人员对津贴和奖励并不漠不关心, 包括课程和技术活动,他们可以学习有用的技术来丰富他们的工作.
当谈到留住软件开发人员时, 在公司内部支持他们的成长是很重要的, 不管它的具体方向. 当软件工程师没有表现出晋升领导职位或管理职位的强烈愿望时, 相反,他们欣赏在技术领域的进步. 这包括更高级的证书和正式的学术课程,如硕士学位甚至博士学位. 知识对他们来说是非常强大的驱动力.
然而, 当他们渴望成长为领导职位时, 明智的做法是对候选人的性格和在公司的经历做一个彻底的分析. 这可以在人力资源部或公司其他部门的帮助下进行, 因为良好的管理需要一套完全不同的技能,而不仅仅是技术熟练.
你可能有最好的意图,并遵循以上所有的建议, 但仍然无法100%留住软件开发人员——有时外部因素的影响更大. 但我们认为,人员流动可以是健康和充满机会的,只要:
员工保留策略应该写入公司政策, 而不仅仅是一个有价值的人想要辞职时的反应. 反动保留是非常昂贵的, 有缺陷的:对方可能会同意留下来, 但是他们自己想想, 这个人说:“我在这里工作了X年,离开的时候他们给我双倍的薪水。他们刚刚承认付给我的钱不够。!”
这个人的下一步是什么? 他们可能会找另一份工作,但现在的最低工资是原来的两倍. 在这一点上,试图不惜一切代价留住软件工程师可能是不值得的. 除非这个人对公司至关重要(不可替代), 最好是协商一个通知期,然后立即找一个替代者.
吸引和留住软件开发人员是一项复杂且不确定的任务, 就像科技行业的每个角色一样. 有很多公司在寻找有价值的软件开发人员,但是, 值得庆幸的是, 我们的目标不是打败这些公司,而是吸引优秀的人才,我们可以设法留住他们.
选择过程需要花费大量的时间和精力. 如果要匆忙地接近它, 很有可能你最终会选择错误的人——谁想要留住那些对团队有害的软件工程师呢? 花点时间把事情做好.
只奖励出色的工作,对错误要公平. 定期查看行业平均工资,并进行相应调整. Don’t try to retain a person who wants to leave unless strictly necessary; instead, 提倡保留员工作为公司政策.
有严格和公平的选拔过程,从不匆忙雇佣. 提供与就业市场相匹配或更好的薪酬方案.
为工作提供必要的工具. 在必要的时候对你的团队进行培训,并促进自学.
自信和清晰. 定期召开团队会议. 定期举行个别会议.
及时、公平、有效地处理冲突. 培养团队合作.
比起模糊的年度目标,更喜欢具体的项目目标. 应用可信的软件开发方法. 根据具体结果进行评估.
世界级的文章,每周发一次.
世界级的文章,每周发一次.