How to retain your engineering MVPs
![](https://cdn-images-1.medium.com/max/1024/1*1MgUtt-Aj58BoqsKL5QtDQ.png)
Companies incur substantial costs to attract and vet engineering talent, and engineers expend great effort preparing for the interview process when looking for a new job. Given the pain of the matchmaking process between employer and employee, why would good engineers ever leave a good company, and why would a good company not work hard to retain good engineers? This article explores some of the common causes and possible solutions for increasing the retention of engineering talent.
Why Good Engineers Leave
Being forced to work on the wrong things
As discussed in Why We Over-Engineer Software, engineers are often encouraged to build technically impressive software. Speed of execution is held to be a key metric for many engineering teams, and the expectation is that product managers, engineering managers, or technical program managers will be the arbiters of scope and will ensure engineers work on the most important things. The message to engineers is often, “just do it.” Engineers are usually not expected or encouraged to question scope or requirements.
Engineering organizations are often structured to separate the roles that define “what” software to build from the roles that determine “how” to build software, but it’s hard for engineers to avoid assessing the value of what they are creating and forming an opinion about the requirements they are given. If engineers spend too long building things they think aren’t valuable, they naturally become less happy. Job satisfaction suffers even more if they are penalized for being associated with a low-value or failed project in a performance review.
Losing mentors and respected peers
Engineers often choose to work in companies and teams where they like, respect, and trust their colleagues and managers. They also enjoy environments where they can improve their skills by working with people they can learn from. These relationships strongly correlate to job satisfaction and are a critical retention component.
When well-liked and respected engineers and managers leave a company, it is natural that the remaining engineers experience lower levels of job satisfaction. Engineers often follow mentors and respected colleagues to new companies or leave their current company because it no longer holds the same job satisfaction and growth potential.
Abusive managers
Even in good companies, it’s possible to find managers who treat their teams horribly. This can range from classic micromanagement, where managers nag their team for constant status updates, monitor their team’s Slack status, and make constant changes to priorities of work in progress, to truly abusive behavior where team members are belittled and verbally abused. Engineers who feel threatened by an abusive manager will look for a way out.
Low quality / high toil
In addition to engineers being unhappy about what they’re asked to build or who they work with, they can also be frustrated if they are required to build and support software in a way that reduces quality or increases toil. I have seen situations where engineers are encouraged to cut corners by skipping test coverage, prioritizing new features over fixing issues in existing code, or using the wrong technology because a key stakeholder is pushing it.
Good engineers value their time and want to automate mundane tasks and build and support software with high quality and reliability. If forced to constantly firefight or rush work in a way that creates ever-growing tech debt, engineers will often seek a more sustainable role in another company.
Inconsistent or unfair performance evaluations
Software engineers abhor non-deterministic systems. We consider these systems to be “flaky,” and we work hard to identify the root causes of these inconsistencies and return systems to a state of stability and predictability. Unfortunately, the performance evaluation system for engineers in many companies is not deterministic or objectively fair. Whether you receive proper recognition for your work can be affected by factors as arbitrary as what manager you report to, what department you work in, what project or feature you work on, or what policies are instituted at your company.
For example, you may have performed very well relative to your peers during a performance evaluation cycle, but your manager didn’t understand your contributions and didn’t give you proper credit in your evaluation. You may have done excellent work, but you worked on a project that was cancelled, so it didn’t matter. You worked long hours and sacrificed family time to deliver a key project on time, but the company did poorly, so you got a smaller bonus or no bonus at all. You are on a star team that has performed extremely well relative to other teams, but your company has instituted a policy where the bottom 20% of every team will automatically be given a poor performance rating.
One of the most detrimental things an organization can do to engineering culture is to be arbitrary or unfair. Life is unfair, but companies should avoid making that problem worse for their employees.
Hiring senior talent from outside
Sometimes, you need to recruit for a special or advanced skill that needs to be added to a team, or you need to raise the level of seniority in a team that needs experienced engineers. These can be valid reasons to recruit from outside a team or to bring in a new hire from outside the company.
In many cases, companies attempt to “raise the bar” by opening a senior position in a team as an external hire before looking within a team or inside the broader organization for someone who has the needed skills or experience. It is often extremely difficult to hire software engineers at more senior levels with confidence when you haven’t seen them in action, and mishires at these levels are much more common.
In the worst cases, engineers hired at seniority and compensation levels above current team members can even underperform their colleagues. Making a hiring mistake of this nature can severely harm morale within otherwise healthy engineering teams and cause unplanned attrition.
Poor compensation
Many companies purchase access to compensation data collected by companies like Radford and use that data to calibrate their engineering pay bands relative to other technology employers. While this data and how it is used are often closely-guarded secrets within companies (benchmarking via shared data to reduce wages could be considered a form of wage collusion), there are an increasing number of crowd-sourced data sites that can help engineers research pay bands and leveling across companies to level the playing field:
Good engineers are often good at researching and can easily identify when they are being paid above, at, or below market rates. Because compensation at most companies involves base, bonus, benefits (like 401K matches), and equity, companies need to stay competitive in these areas to retain talent. Because public companies must disclose executive compensation in 10-K filings, it’s easy for engineers to see if any compensation sacrifices they are asked to make are being shared by their executive leadership.
Failing to keep compensation competitive
Many companies consider the initial offer letter the first and last time they must compete with other companies in compensation. In many companies, existing engineering employees may get smaller increases based on performance or equity grants only to make up for exceptionally poor stock performance, but more is needed to ensure engineers are still being compensated in a market-competitive way.
Recruiters are constantly reaching out to already-employed engineers, and if current compensation is not kept competitive, engineers will become more receptive to these outside opportunities.
Mixing engineering and management roles
It’s generally accepted that individual contributors do the coding and design work, and managers are responsible for coordination with other teams, escalations, career development, and generally anything non-technical. In some smaller teams, you may see the role of Technical Lead/Manager (TLM), but even in small teams, it’s usually a bad idea.
Examples of this anti-pattern include:
- Promoting the most senior engineer on a team to manager
- Converting a manager that isn’t working out to a senior technical title (like principal or staff software engineer) because the pay level is similar
- Allowing mixed titles like “Engineering Manager and Principal Software Engineer”
Individual contributor and management roles require substantially different skills, and each path requires specialized training and experience. Conflating these roles does a disservice to both career paths and often makes everyone unhappy.
No career path for individual contributors
Many companies claim to have a technology track and a management track that are separate but equal. In too many of these companies, you will find lots of managers, senior managers, directors, senior directors, VPs, SVPs, EVPs, and C-level executives, but no individual contributors above a certain level. This indicates that while these levels are theoretically available, they don’t exist in practice. This sends a message to engineers at the highest levels that they have nowhere to go but into management or to another company with real technical career paths.
Work policy mandates
I have worked in a few companies where good engineers left because they were required to work in a specific way that was stressful or unproductive for them. Some examples include:
- Mandating pair or extreme programming
- Mandating solo programming (actively discouraging pair programming or other multi-person collaboration)
- Tracking work time (when hourly billing of a customer is not required)
- Strict start, end, break, and lunch schedules
- Rigid application of agile methodologies and processes like Scrum
- Aggressive return-to-office (RTO) mandates
Engineering work is easier enough with struggling with arbitrary processes, and better engineers will have less patience for these mandates.
Irrational optimism
Many companies understand that high morale and optimism translate to good reviews and higher rankings on sites like Glassdoor, LinkedIn, Greatplacestowork.com, and Blind. Good reviews and higher rankings on these sites directly correlate to job seekers’ desire to work for a company.
For this reason, many companies work hard to ensure that the message and tone at internal meetings are always positive and actively suppress or discourage employees from raising difficult questions or topics in internal discussion forums or meetings. Additionally, honest discussions about what the business is doing poorly, especially in company-wide forums, are often frowned upon.
These practices of only accentuating the positive are in stark contrast to engineering best practices. Engineers almost never need to focus on things that are going well, as these areas should be monitored but require no corrective action. By only focusing on “good news” and eschewing “bad news,” companies create a cognitive dissonance that is especially uncomfortable for engineers. Engineers often consider this dissonance a form of dishonesty and actively seek out opportunities where objective truth is valued above artificially curated optimism.
Why Good Companies Let Good Engineers Leave
Managing by the numbers
When companies are small, everyone can know everyone else. In a few of my past jobs, the employee count at the company was under 100, and it was possible to know everyone by name and their role in the company. In the early life of most companies, there is a time when the number of employees is below 150 (Dunbar’s Number), and you can know the leadership, and they can know you and what you do for the business.
As companies grow beyond this size, it becomes unrealistic for executives to know everyone personally, and they begin to manage “by the numbers.” When managing by percentages, you assume that one person leaving is the same as another and that there’s little difference as long as it’s not a critical role. Not everyone represents the same value to a business, even in “commodity” roles like “software engineer” but aggregation hides those differences and creates attrition mistakes, often referred to as “regrettable” attrition in HR circles.
Thinking attrition is a good thing
Many leaders believe that attrition is necessary to maintain a healthy workforce and that a certain percentage of people leaving is a good thing. While this practice is discouraged by top management consulting firms, I’ve seen this belief manifest in quite a few companies that were otherwise considered good places to work.
Senior leaders and HR pondered why the natural attrition rate wasn’t higher and what they could do to “improve” the number (i.e., get more people to leave organically) to get it closer to an industry benchmark they were tracking against. The answer was often to institute policies that would make everyone a little less happy, hoping that this would move the attrition trend in the right direction.
It may be true that there is always a subset of any workforce that is underperforming and should be “coached out,” but it’s much better to identify, document, and take targeted action to manage low performers out than it is to create general malaise and hope the worst performers leave. Experience shows that top performers are more likely to exit.
Managing by proxy
Another common mistake as companies grow is to rely too heavily on hierarchical reporting structures to aggregate responsibilities and escalate critical issues only when necessary. In practice, there is a wide range of quality and experience among managers at all levels, and the data quality is different across all of these channels.
Middle management is often used to shield upper management from concerns and decisions that are deemed “less important,” and this can result in the hiding of information about employee satisfaction from higher-level leadership.
In addition to bottom-up concerns, top-down translation problems can occur. When seemingly sensible policies are defined at high levels and communicated down through a complex and varied reporting structure, the compatibility of the policy with the work of departments, teams, or key individuals can be poor. If exceptional teams or individuals are met with boilerplate policies and suboptimal performance, regrettable attrition often result.
Rewarding titles and not results
Further to managing by numbers and by proxy, there is another mistake of aggregation that larger companies routinely make. This is the mistake of assigning roughly equivalent value to a role and not to individual performance or value delivered to the business. The core assumption of this approach is that an important person will have an appropriately important title and that compensation ranges are based not on what the person actually does for a company but rather on what the title they hold indicates they should do for the company.
This approach assumes “eventual consistency,” meaning that if a person with the title of VP doesn’t deliver what the company expects of a VP over time, they will eventually be let go, and if a capable person is performing above what their title or level indicates they will be promoted.
Unfortunately, upward calibration rewarding over-performance often does not happen for lower-level staff such as engineers, which encourages more regrettable attrition.
With us or against us
Leaders too often consider criticism and complaints a form of subversion, and that no criticisms of leadership or corporate strategy are acceptable or constructive. Leaders are often isolated from individual contributors like engineers, so there is less rapport than with senior managers and vice presidents with whom C-level executives interact more frequently. Because most employees have anxiety about interacting with managers well above their level, interactions, when they do occur, are often synthetically skewed toward the positive.
Engineers are encouraged to actively avoid groupthink and look for correct answers even if they are uncomfortable or inconvenient. These values are in stark opposition to supporting leaders unconditionally, and unless leaders pursue mindfulness and self-awareness, it can be very easy to allow “difficult” employees to leave without regret. This is unfortunate because truth-tellers are extremely valuable to a business, even if they can often create discomfort for leadership.
How to Retain Good Engineers
Now that we’ve covered why engineers leave and why companies often let them go, we should discuss some ways to address the problem.
Identify engineering MVPs and keep them happy
Most companies do not truly know who their engineering MVPs are, because they don’t ask the right people the right questions. A novel approach to identifying your top engineers is to leverage a simplified version of a now-familiar pattern used by Google to rank search results. To identify who you most need to retain, start by surveying everyone in your engineering organization and asking questions like the following:
Which person in the engineering organization…
- adds the most value?
- would you most like to work on a team with?
- do you most respect?
- would you consult to help you solve a challenging engineering problem?
- would you want to represent your interests to company leadership?
- most embodies engineering best practices?
Using the responses to the above questions:
- Total the number of times a person is cited as the answer to one of the above questions — this will be that person’s baseline score.
- Sort the list by baseline score.
- Moving from lowest to highest score, calculate a relative weight based on the baseline scores, and apply that weighting to the scores of the people they cite.
In our example using six questions, you could divide the baseline score by six and add that to the scores of the people that person cited.
Using this approach, you can quickly create an overall ranking of influence in your engineering organization to help you understand who your engineers most value working with. At the top of this list are the people you need to retain and frequently consult to keep your engineering teams happy, productive, and excellent.
Replace Arbitrary and Unfair Policies With Fair and Predictable Ones
As we discussed above, engineers do not like inconsistent and arbitrary systems, especially when they result in unfair outcomes for their personal careers and compensation. Much of this inconsistency stems from engineering managers being called upon to handle HR concerns that often need more training or experience in. This is understandable given that engineering managers are often recruited from engineering staff’s ranks to handle concerns beyond just building good software.
To combat these inconsistencies and skill gaps, remove HR duties from engineering managers and transfer them to engineering-focused “HR business partner” team(s). These teams would own the following responsibilities often assigned to managers:
- Documenting performance
- Performance evaluations
- Career coaching
- 1:1s
- Training and development
- Staffing and hiring
- Expense submission and approvals
- Planning Team Building Exercises
The result of taking this approach is that engineering managers can focus on helping teams build software while performance and career concerns can be addressed more consistently by professionals well-trained in these disciplines. Outcomes will be fairer, and engineers (and engineering managers) will be more happy and productive.
Measure true employee satisfaction and take real action
Culture in the context of a company is a broad and potentially vague concept that tries to encapsulate a company’s core values and how to act in ways that support those values. Company leaders create explicit values statements to communicate what matters to them and provide guidance on exhibiting these values in practice to create a matching corporate culture. A good culture in many companies is a core contributor to employee satisfaction and business success.
Many companies use culture survey tools to determine cultural health and employee satisfaction and to identify any issues that need to be addressed. In too many companies, the results of these surveys are selectively reviewed to paint a picture of a workforce that is more happy and productive than it actually is.
In other cases, leadership doesn’t take meaningful action if employee satisfaction issues are found, giving the impression that it’s not a top concern. In some companies, anonymous feedback is eliminated, and employees must identify themselves to voice concerns or raise issues. All of these barriers reduce the quantity and quality of feedback and hide the issues that contribute to attrition.
In summary, allow anonymous feedback, survey employees regularly, and share the true results and concrete actions that will be taken to improve when there are issues.
Foster and reward good engineering culture
Defining engineering culture can start with interpreting a company’s values and simply applying them to the engineering part of the business. In addition to business-specific values and culture, engineering culture often includes core tenets of what engineers have been taught constitutes “good engineering.” Good engineering includes things like:
- High Standards
- Clean Code and Architecture
- Well-Tested, Error-free Code
- Simplicity and Avoiding Premature Optimization
- Peer Review
- Collaboration and Helpfulness
- Humility
- Agility
- Honesty
- Morality
- Fairness
Defining and using these qualities as part of every engineer’s performance evaluation criteria allows good engineering principles to become a meaningful part of the culture. Engineers are rewarded for exhibiting these qualities, and objectively good engineering practices can offset some of the performance variability of project and team assignment.
Calibrate incentives to what matters for each engineer
We know that every person is unique, but we often don’t consider individual differences when considering retention and incentives. After building the HR business partner team(s) as discussed above, these team(s) can work to understand what engineers really want to be happy and productive. The following are examples of factors that might have different value to different engineers:
- Flexible work schedule
- Flexible work locations
- Choice of equipment or tools
- More/extended time off
- Career growth and promotion
- Improving total compensation
- Exceptional pay for exceptional performance
- Learning new skills or languages
- Optimizing health and wellbeing
Some engineers would happily work longer hours on a more aggressive project if it meant they would be financially rewarded. Other engineers would prefer to deliver consistent, high-quality work within a more conventional work week to maintain better work-life balance. Some engineers might come from countries where extended summer vacations are the norm and place a high value on maintaining that tradition. For others, a flexible schedule to allow more time with a young child or a sick family member would be a better incentive.
It is critical to understand that each person is motivated by different needs and goals and that these factors change over time. Optimizing this understanding can greatly improve job satisfaction, productivity, and retention, often in ways that do not cost the business.
Get engineers involved in determining what to build
A great way to retain engineers is by getting them actively involved in defining scope and requirements, so they have real accountability to what is being built. Suppose engineers are more involved in strategy and scope definitions and can propose incorporated ideas. In that case, they feel that a product carries their brand and will work harder to ensure success than if they are merely building software that someone tells them to build.
Suppose product and engineering managers can explain the justification for why requirements are being proposed or ranked in a certain order. In that case, this can help engineers internalize this knowledge and use it to assess future requirements.
Financially reward good behavior and “stepping up”
When engineers offer great ideas that become part of a product, especially if they make or save the company money, they should be financially rewarded in proportion to the value they have created. When engineers take on a difficult task and do it well, especially outside their job description, they should also get financial recognition. This encourages engineers to think more like business owners, making them more valuable to the business.
While not every engineer is trying to maximize personal compensation, it’s important to remember that nobody works for free in business. Financial rewards are always appropriate when employees add financial value to the business, so tools like spot bonuses and other pay for performance should be an integral part of employee compensation and retention at every level.
Since 1978, the ratio of CEO pay to that of employees has increased by 1,460% despite decreasing business performance as measured by return on assets. Tying executive pay to actual business performance is considered a stronger predictor of business success, but it has become commonplace to grant enormous compensation packages to “turnaround” executives to encourage them to take on poorly-performing businesses.
These executives are often paid extremely well regardless of whether they succeed. For employees at every level, rewards should be calibrated to objective performance results, and equity and other bonuses should be more evenly distributed. Financial impact should be rewarded at all levels of a business because you can’t pay your rent or mortgage with kudos, and any employee can create value.
Why Good Engineers Leave Good Companies was originally published in Better Programming on Medium, where people are continuing the conversation by highlighting and responding to this story.