作者都是各自领域经过审查的专家,并撰写他们有经验的主题. All of our content is peer reviewed 和 validated by Toptal experts in the same field.
费尔南多·马丁内斯
验证专家 在工程

Fern和o is a veteran systems 和 computing engineer with 30 years of experience. 他使用Java、c#、SQL Server等语言进行开发.

阅读更多

以前在

IBM
分享

管理就是人. 无论是管理者还是员工, 他们都在思考如何实现个人和职业目标. 这些目标和相关人员的个人特征相结合,形成了这种关系, 在时间, 可以是积极的, 富有成效的, 和满足, 或者有时只是单纯的压力, 要求, 和人口.

当然, 在后一种情况下, 产品质量下降, 人员流动增加, 实现目标变得越来越困难. 因此, 在经理和员工之间建立奖励和激励的关系是提高效率的关键, 生产力, 以及他们的自我实现.

积极的关系是留住软件人才的最好方法.

在管理软件开发人员时尤其如此, 因为他们工作的技术复杂性和创造性, 为了产生结果而被压缩到通常很短的时间内. As in every boss-employee relationship, there are many factors involved, such as:

  • 个性
  • 目标
  • 预期
  • 政策
  • 组织文化
  • 项目技术细节

在本文中, 我们将侧重于主要的管理方面, 而不是在技术上, 我们认为任何想要成功留住软件开发人员的人都应该考虑到这一点.

但在这里, “success” means not only achieving results 和 complying with company policies, 时间线, 和预算, 但也要有一个积极进取、富有成效的软件开发团队,他们会尽自己最大的努力,并长期留在公司.

这就引出了我们的基本主题:是什么让软件开发人员发挥作用? 记住这一点, 我们将介绍一些方法来留住我们在成功的软件开发团队中发现的员工.

吸引合适的人

在软件开发中, 你所雇佣的人才将决定你的成败, 和 making ongoing changes in a team is always costly in terms of time 和 money. 因此,良好的选择过程对项目的成功至关重要.

招聘启事

在招聘软件开发人员时,技术招聘人员知道这一点, 这一切都要从一个精心平衡的招聘启事开始. 帖子必须具有激励性,以便让合适的开发人员对其做出响应——太多或过于专业化的需求可能会令人沮丧, 但如果你说得太含糊, 你的公司可能会收到大量无用的简历.

详细说明工资和福利待遇也是一把双刃剑,因为你的竞争对手可以利用这些信息来调整他们的薪酬计划, 和 developers can try to use it as a baseline for bargaining during their hiring. 当然, since there must always be some room for negotiation during the recruitment process, we suggest that the job posting be less specific when it comes to compensation, 使用范围而不是固定值.

与此形成鲜明对比的是, the job posting should be as clear as possible in the job duties 和 requirements, 既强制又有好处. Starting with a solid fit is the best context for the rest of our employee retention 策略.

面试

在这个过程的这一点上,最好是 获得一些评估候选人的建议看看在面试过程中可以避免哪些陷阱. 除了上述资源的指导外,我们还想补充一点,即事先要求应聘者提供之前工作中的一些参考资料,通常是验证他们技能的其他方法的一个很好的补充.

工作邀请

招聘以向候选人提供工作机会结束, when the company presents a formal document that summarizes the position characteristics (name, 排名, area, 等.), the compensation package (salary 和 benefits 喜欢 health, pension or education, 等.), 开始日期, 时间表, 工作地点, 并要求建立工作合同, 如果候选人接受了这份工作.

虽然在这个阶段,一切都或多或少地完成了, 候选人可能想要协商一些条件, 这取决于公司是否接受或讨价还价. 这取决于公司的做法.

然而, 肯定, the company will not want to lose a good c和idate over a matter of principles, 所以合理的权衡不会伤害任何人. 在这种情况下, it is advisable to ask the c和idate for something in return of every concession made, 喜欢, 例如, 较早的开始日期, 在公司至少工作一段时间, 或者公司可能有的任何特殊要求.

管理成功的软件开发团队

一旦软件开发人员开始在公司工作, 他们的经理开始意识到他们是谁, 它们是如何工作的, 和, 最重要的是, 他们产生的结果. 因此,留住软件工程师成为一个明确的优先事项.

这就是对软件工程师性格的洞察所在:他们——尤其是表现出色的人——经常表现出一些共同的特征. 我们会指出这些模式, 但请记住,它们可能并不适用于每个人. Software 发展 project management is as much about patterns as it is about exceptions.

培训

因为软件开发是一项技术工作, 这需要对公司结构有非常精确的了解, 目标, 程序, 政策(包括信条和商业惯例), 标准(技术和非技术). 因此, 开发者越了解公司, the better product they will make 和 the less time it will take them to make it.

This basic training can be administered by documents, online intranet courses, or presentations. 但这是必要的,因为它会让新员工更清楚.

If new technologies are to be introduced, be sure to provide the necessary training. 软件开发人员喜欢接受挑战,但他们可能会讨厌在没有正确学习的情况下就被投入到一项新技术中.

互联网上到处都是有价值的学习材料, 当软件开发人员需要学习或重新学习技术细节时,它通常是他们求助的第一个资源. 如果你想留住软件开发人员, 提倡自学文化是必要的, 如果有必要的话, 给工作时间. 这种方式, 该小组将掌握最先进的技术和方法, 这是软件开发人员经常非常欣赏的.

资源

Some think that software developers seek the highest technology to do their work, 具有业内最好的规格. 相反,我们认为这取决于手头的工作. 例如,如果一家公司发展 第一人称游戏, it will be necessary to provide developers with cutting-edge computing power. 但是如果工作是为事务系统开发后端web服务, 一台不那么强大的计算机可能就足够了.

真正重要的是为开发人员提供所有必要的工具来完成他们的工作,并听取他们对新工具的建议. 在逻辑上, 开发者建议的每一个新工具都必须经过公司的批准(甚至可能在此之前进行测试)并获得许可. 这是值得的, though: Having adequate resources is a key factor in developer motivation 和 results. (如果你让软件工程师失败,你就不能指望留住他们!)

组织

软件开发人员喜欢在鼓励和尊重他们创造性努力的地方工作,因为他们的工作是从无到有,尽管受到设计的指导, 标准, 及资讯科技政策. 因此, 开发者需要有足够的信心,相信他们属于一个所有官僚主义和限制都最小化的单位, as long as they comply with the company’s policies 和 are in line with its creeds.

这并不意味着软件开发人员应该比公司的其他人有任何特权, but rather that their manager helps them overcome or solve bureaucracy when needed. 留住软件开发人员的一个非常重要的方面是,他们的老板对他们的个人需求持开放态度,并在需要的时候帮助他们.

内部开发单元的安排在这里也起着关键作用. 经常, 存在测试组, 和 it is the software engineering manager’s duty to keep 团队合作 fluid between developers 和 testers. 这可以简单地通过清晰的方法和过程来实现. 开发人员 tend to work with testers very well if there are rules to be followed by both parties, 保持低冲突或不存在冲突.

通讯(定期会议)

如果你想留住软件开发人员, it’s essential to keep them in the loop. 团队中的所有成员都应该定期更新目标, 影响他们的公司情况, 策略, 组织的变化和, 最后但同样重要的。, 团队的成就.

即使让许多团队成员分享一些亮点,也有助于培养团队的凝聚力和团队合作精神. 正常情况下, 这些团队会议——最多两个小时——应该定期安排(也许每周一次),也可以在项目的最后阶段等特殊场合安排, 危急情况, 等.

除了与团队的沟通, the manager has to establish a way to stay up-to-date on the situation of every member, 是否与工作有关?, 技术, 或个人.

  • 与工作相关的 指员工与公司关系的所有可能方面.
  • 技术情况 出现在开发人员遇到问题时, 不管出于什么原因, 他们不是在寻求帮助.
  • 如果开发者分享它们, 个人的情况 that they are experiencing can affect their work 和 their relationships with their coworkers.

正常情况下, 每周与每个团队成员开30分钟的会,可以让经理发现这些情况并提供帮助, thus preventing potential personnel crises 和 enhancing the team member’s morale within the company.

澄清一下, 我们不是在谈论建立一个以会议为导向的开发单位, 所以严格会议纪律(守时), 尊重, 参与, 持续时间)是必要的. 此外, this discipline demonstrates to developers that they work for a very professional organization, 他们通常欣赏的东西.

分配目标并跟进

There is no point in assigning yearly general objectives or similar appraisal guidelines.

当与软件开发人员打交道时,这是一个明显的因素:无论他们的角色是什么(需求收集), 体系结构, 设计, 编程, 测试, 等.), 要尽可能清晰地向他们提供目标, so there is no point in assigning yearly general objectives or similar appraisal guidelines. 由于开发人员应该在项目中工作,因此.e., 有明确的范围和时间表, 分配目标的最佳方法是在项目开始时,并包括如何评估和评估进展, 如果适用的话, 他们将如何被识别.

幸运的是, 现在, there are methodologies whose purpose is to generate results as quickly as possible, 比如敏捷和Scrum, 这简化了后续工作和项目控制. 有时,这甚至可以在留住软件人才方面发挥重要作用:许多开发人员喜欢这些方法,因为它们可以快速交付结果, 定期给他们一种成就感.

此外,开发人员通常更喜欢轻量级的方法. 他们知道像rational这样的高端项目——在一个长期的需求工程项目之后交付最终产品, 设计, 发展, 测试, 而且实施起来是有风险的,遵循起来可能会很痛苦.

冲突管理

这适用于软件开发团队和其他任何类型的团队:软件工程经理必须及时有效地处理冲突, 或者它会失去控制,摧毁士气, 团队合作, 和整个单位的有效性.

假设发生冲突的开发人员是专业的并且是善意的, 经理与相关人员召开会议,启动清晰的对话,并在之后迅速解决问题,这应该足以让团队继续前进. 也, sometimes it is necessary to give them a clear warning that conflict at the personal level, 如果真到那一步, 不被接受.

无论如何, 在这次和解的最后, 重要的是,双方都觉得解决方案是公平的, 即使其中一个不喜欢. 冲突有时是生活的一部分,但留住软件人才意味着 有尊严地对待每个人 每当出现这种情况时.

动机

Although we have touched upon many factors that influence a developer’s motivation, 还有一个关键方面. 这不是情感问题,也不是技术问题. 我们讨论的是他们工作的报酬率.

尽管在本质上倾向于理想主义, 软件开发人员通常喜欢物质世界的美好事物. 对公司来说,确保工资和补偿计划与劳动力市场保持一致总是更好的行业研究 很容易找到,甚至可能比他们的职位高一点.

也, 大多数软件开发人员对津贴和奖励并不漠不关心, including courses 和 technology events where they can learn useful techniques to enrich their work.

当谈到留住软件开发人员时, 在公司内部支持他们的成长是很重要的, 不管它的具体方向. When software engineers do not show much desire to move on to leadership positions or management, 相反,他们欣赏在技术领域的进步. 这包括更高级的证书和正式的学术课程,如硕士学位甚至博士学位. 知识对他们来说是非常强大的驱动力.

然而, 当他们渴望成长为领导职位时, it is advisable to do a thorough analysis of the c和idate’s personality 和 history in the company. This can be with the help of the Human 资源 department or other company units, since good management requires an entirely different set of skills beyond 技术 proficiency.

如何留住软件人才:最后评论

你可能有最好的意图,并遵循以上所有的建议, 但仍然无法100%留住软件开发人员——有时外部因素的影响更大. But we think that personnel turnover can be healthy 和 full of opportunity, as long as:

  1. 这种情况并不常见. If it is, this would be a symptom of something wrong at the organizational level.
  2. 它只发生在最有价值的资源上. 在这种情况下, it could mean that they are using your company as a trampoline, i.e., they are with you simply to gain experience before moving to other companies.

员工保留策略应该写入公司政策, 而不仅仅是一个有价值的人想要辞职时的反应. 反动保留是非常昂贵的, 有缺陷的:对方可能会同意留下来, 但是他们自己想想, 这个人说:“我在这里工作了X年,离开的时候他们给我双倍的薪水。他们刚刚承认付给我的钱不够。!”

这个人的下一步是什么? They may look for another job, but now with double the salary as their minimum. At this point, trying to retain software engineers at all costs is 喜欢ly not worth it. Unless the person is absolutely fundamental (和 irreplaceable) to the company, it may be better negotiating a notice period 和 immediately finding a replacement.

这是一个不确定的任务

Attracting 和 retaining software developers is a complex 和 non-deterministic task, 就像科技行业的每个角色一样. There are many companies looking for valuable software developers out there but, 值得庆幸的是, 我们的目标不是打败这些公司,而是吸引优秀的人才,我们可以设法留住他们.

选择过程需要花费大量的时间和精力. 如果要匆忙地接近它, 很有可能你最终会选择错误的人——谁想要留住那些对团队有害的软件工程师呢? 花点时间把事情做好.

了解基本知识

  • 如何在组织中留住优秀的员工.

    只奖励出色的工作,对错误要公平. Periodically check the average salaries paid in the industry 和 adjust accordingly. Don’t try to retain a person who wants to leave unless strictly necessary; instead, 提倡保留员工作为公司政策.

  • 我如何确保我的公司雇佣最好的软件开发人员?

    有严格和公平的选拔过程,从不匆忙雇佣. 提供与就业市场相匹配或更好的薪酬方案.

  • 我能做些什么来帮助他们提高效率?

    为工作提供必要的工具. 在必要的时候对你的团队进行培训,并促进自学.

  • 什么样的管理风格是值得赞赏的?

    自信和清晰. 定期召开团队会议. 定期举行个别会议.

  • 我如何管理竞争力?

    及时、公平、有效地处理冲突. 培养团队合作.

  • 我如何衡量绩效?

    比起模糊的年度目标,更喜欢具体的项目目标. 应用可信的软件开发方法. 根据具体结果进行评估.

聘请Toptal这方面的专家.
现在雇佣
费尔南多·马丁内斯

费尔南多·马丁内斯

验证专家 在工程

波哥大——哥伦比亚的波哥大

2020年6月18日成为会员

作者简介

Fern和o is a veteran systems 和 computing engineer with 30 years of experience. 他使用Java、c#、SQL Server等语言进行开发.

阅读更多
作者都是各自领域经过审查的专家,并撰写他们有经验的主题. All of our content is peer reviewed 和 validated by Toptal experts in the same field.

以前在

IBM

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.