​In the tech industry, high turnover rates for programmers are all too common, and wildly detrimental to a company’s profitability. This phenomenon is especially problematic for companies in less subjectively interesting domains such as B2B software development. As people come and go, mounting technical debt and recruiting costs cripple the bottom line. How can a company escape this cycle and compete with major tech companies for talented individuals? In this article, I hope to shed some perspective on what companies can do to improve retention, from my point of view as an experienced programmer and team lead.

Before addressing the issue of retention and motivation, I would like to note that many companies function successfully with programmers who are motivated by the stability of a company rather than a passion for their jobs. I would argue that these programmers are not utilized to 100% of their ability and require additional supervision to execute their work (e.g. through additional effort in finely defining the scope of their tasks). This article addresses the motivation of programmers in a non-hierarchical organization where proactivity and conscientiousness are central to the business goals.

Motivation Misconceptions

The first step to improving motivation and retention comes from exposing misconceptions about motivation and identifying how good intentions may have negative effects.

Salary and retention

The market for programming talent is a highly competitive one, making it an appealing industry to be in from a salary standpoint. According to current projections, there will be a shortage of more than 200,000 ICT (information and communications technology) workers in Canada by the year 2020. It’s hard for smaller Canadian companies to compete with US salaries and those of tech giants like Shopify, Google, and Facebook. As a result, many specialized programmers in Canada are either leaving for “the valley” or being hired by larger companies. Those who remain move from company to company, lured by offers of an increase in salary.

The good news is that people are not solely motivated by money. In fact, from a developer’s perspective, a difference in $5-$10K becomes increasingly less significant as his or her salary reaches six digits. Based to Dan Pink’s research in the bestselling book on motivation, Drive, a salary needs to be high enough to no longer be an issue. An employer only needs to compensate their employees with industry-standard wages and give reasonable annual raises. Highly competitive salaries do little for retention and may, in fact, reduce productivity.

Productivity and motivation

Economist Adam Smith wrote in Wealth of Nations of the efficiency when dividing a task into subtasks performed by specialized workmen and women. In his example, a pin maker could make only a few pins a day alone but ten men, each working on a specialized task — like straightening the wire of the pin — could make thousands of pins in the same span of time. However, Smith goes on to note:

The man whose whole life is spent in performing a few simple operations, of which the effects are perhaps always the same, or very nearly the same, has no occasion to exert his understanding or to exercise his invention in finding out expedients for removing difficulties which never occur. He naturally loses, therefore, the habit of such exertion, and generally becomes as stupid and ignorant as it is possible for a human creature to become.

Programming is both a technical and an intellectual craft. Reducing a programmer’s work to a series of repetitive tasks and adopting a production line style of working takes away his or her natural ability to problem solve and, in consequence, increases the likelihood of technical debt.

It may be more productive to focus the abilities of a programmer on very specific tasks, limiting his or her knowledge of the latter’s source or ultimate purpose, but the lack of vision and a programmer’s lack of control over the process is detrimental to his or her motivation. I will explore these points further in the next section: the keys to motivation.

Keys to Motivation

Positivity and Vision

For the technical team to be motivated, it is imperative for their leaders to maintain a positive can-do attitude. I often hear programmers criticize the state of the code they are working on. They say how it’s hard to work on new features and how the entire system is fragile. In reality, there is no perfect code base. The grass is never as green as the UI might have one believe. It is the responsibility of the leadership to maintain a positive outlook on the present and leverage a solid vision to guide their programmers.

Steve Jobs was a mercurial personality. He would yell and publicly shame his teammates when he was dissatisfied with their work. Despite this trait, he was remarkably skilled at making Macintosh engineers believe they could achieve the impossible. Jobs pushed his engineers to perfection and, during their retreats, constantly enforced the vision that they would change the future of computing. His ability was jokingly referred to as the reality distortion field but its effects were real. As a result, the Macintosh was revolutionary for its time.

Positivity, together with a vision, ideally based on values (Simon Sinek’s TED talk is a great example of how this works), creates purpose and hope. In response to criticism, leadership can point out that poor quality is an opportunity for the developer to make a difference. In response to disinterest in a particular task, leadership can show how its completion makes a difference in the end user’s life. And so on and so forth.

Approachable Leadership

The second key to improving motivation is enabling the programmers to speak up and have their leadership listen.

Much has already been written on the subject of leading proactive people. In Quiet, Susan Caine writes that introverts lead proactive people with greater success than extroverts. Psychology Today writes “pairing extraverted leaders with employees who take initiative, are more independent and speak out can lead to conflict, while pairing the same type of employees with an introverted leader can be more successful”. The lessons learned from both Caine and Psychology Today apply particularly well to programmers.

The software industry is staffed with brilliant, proactive individuals. The open source movement is a poignant example of how skilled programmers take the initiative to solve a problem and share their solutions with the greater community. Giving such programmers direction and opportunity to express their passion is a great way to motivate their day to day work.

In the Toyota manufacturing system, line workers are empowered through an initiative called Stop The Line: any factory worker can stop production when he or she discovers a fault in the product. The same can be done with programmers.

At first, the programmer may hesitate part to speak up but, with time, he or she may reach out via email or Slack about an issue. It is then an ideal opportunity to ask questions and invite independent thought about possible solutions. Leadership can also be proactive in giving a voice to programmers through Lunch and Learns, during which programmers take turns sharing their knowledge with the rest of the team.

Ownership and responsibility

Holding programmers accountable for the results of their work through KPIs instills both ownership of that work and a sense of responsibility. It create a stronger attachment to the work and the company.

More often than not, a company is not set up to measure the results of new initiatives until the end of a quarter or year. Work is driven by the promises made by the employer’s salespeople to their prospective clients and passed down with deadlines to the programming staff. The result is demotivating and assembly-line-style work.

As an alternative to working on new functionality requested by the sales staff, a company can pursue its objectives by improving measurable KPIs (key performance indicators) using technical solutions. Such KPIs might include improving conversion rates of an eCommerce website, increasing time spent using an application, increasing download rates by new users, etc. The programmers may then demonstrate objectively how their work impacts business objectives in a measurable way.

I am not suggesting that a company be driven by the actions of their programmers. Rather, I invite the company leaders to see programmers as active participants in the business who can drive business growth, just as the marketing or sales departments do.

A gaming company called Valve is an excellent case study that clearly demonstrates the effect of this approach to motivation. They provide ownership and responsibility by letting their programmers choose the work they wish to pursue but they require of their teams to demonstrate the value they generate. It is meritocracy at its finest and the programmers are thrilled.

Freedom of work

Although Valve has a great model for leveraging programmers, it is not realistic for most other companies. When a company is struggling to establish profitability and clarity in the marketplace, or when measuring KPIs is impractical, it’s necessary for leadership to pursue business-plan goals with uncertain outcomes. In these cases, however, developers can still be motivated through being given some freedom in their work.

Take Atlassian for example. Atlassian’s business is focused on making tools for programmers. They are hard at work on features requested by their community and clients and they are always building new products. Yet they command an 80% recommendation rating on Glassdoor. One reason behind Atlassian’s employee satisfaction is an initiative they call ShipIt.

Atlassian gives their programmers the opportunity to pursue a project of their choosing once a month, so long as they are related to the business objectives. The initiative is a step in the right direction and shows programmers that their leadership is interested in leveraging their full potential rather than treating them like assembly-line workers.

Hire A-class people

So far, I’ve written about vision, approachability, ownership and freedom of work. None of these keys matter if the people a company hires choose not to take advantage of the motivating environment that has been carefully crafted for them.

As I mentioned at the outset,, there are many programmers who are not motivated by responsibility or ownership. These programmers may still be dedicated and hardworking but they are motivated primarily by the stability of a company, and use their programming knowledge as a means to generate an income, rather than as a skill enabling them to build something great. Their motivation is beyond the scope of the this article but one thing is certain, their employer is not receiving 100% of these programmers’ potential, and therein lies the power of a A-class programmer: his or her will to contribute 100% of their creative ability towards their job.

A-class programmers are easy to identify. They have a passion for programming. They read about their work, they share it readily in conversation with their peers and in writing (e.g. in the comments section of Hacker News), and their personal time is taken up with improving their abilities. When A-class programmers work together, the value of their creation is more than the sum of their abilities. Most importantly, A-class programmers go above and beyond the status quo.

Steve Jobs once said “Make sure you’re hiring only A-players. Hire a few B-players and they hire B’s and C’s, and pretty soon the whole operation is going to pot.” Once a company has established vision, approachability, ownership and freedom of work can it hope to retain such candidates.