Programmers in the software team work well together, trust and support each other. But they don’t talk about their salaries – the most important reason why they work for the company. It is taboo. Tell them that one of their fellow programmers earn 50% more than others. You’ll see smiles disappear, people don’t look at each other and become silent. They will rebound, but these things leave scars on team morale and cohesiveness. Feel of unfairness is not the best companion in the software development.
But why does compensation is so important and sensitive for us?
- We work to live. We spend more than half of our conscious adult life earning money on work. We need money to live. Money enable for us almost everything material in this world. Any non-material incentives cannot compensate insufficient money income.
- Money are social status. The better compensation means you worth more and more attractive from social and even biological perspective. People strive for relative prosperity. They could accept less themselves than see a rival get more.
The software company is interested in the best productivity, high quality and most optimal software solutions. That usually translates into lower cost, higher profit and happier customers.
How a company can make it possible? People are the most important factor to achieve these goals. Company just need to
- Keep programmers motivated, interested and satisfied. Programmers will be happy if they perceive compensation as fair, work as interesting and environment as comfortable.
- Reward desired behavior for the company success – accountability, creativity, intelligence, self-discipline, learning and may other useful qualities. Compensation should link these qualities to the individual, team and company performance.
- Attract and retain the best contributors and talents. Programmers should have opportunities for earning more for better contribution. Many of them possess entrepreneurial spirit and stiff salary ranges and limits for growth can make them leave.
What is the best way for the company to approach compensation and support these goals?
A company should solve few challenges in order to build an effective compensation system.
- How can the company objectively evaluate individual accountability, creativity, intelligence, self-discipline, learning capabilities, experience, influence, coaching, attentiveness to details, vision, strategic thinking, cooperation, enthusiasm, work ethic, quality, speed, thoughtfulness, inspiring and motivation of other people and many other qualities? What of them are most important for the company success?
- How can compensation encourage collaboration, cement relations and avoid competition between team members?
- How to get great team productivity results, without negative impact on other teams and without sacrificing long-term perspective?
- Finally, what compensation system will be perceived as fair?
- Objective behavior evaluation is not possible. How can evaluation account for the huge number of behavior variables? It is almost impossible. In addition, some people traits play well only if they are complimented by other people traits: visionary needs detail oriented performer, creative person needs pragmatic opponent, innovator needs patient adapter. That is why all traditional evaluations will never give true picture of contribution and certainly will miss important points.
- Fairness is in transparent and equal criteria. There are different types of criteria possible: years worked in company, level of education and even produced lines of code :). However these criteria don’t guarantee desired results.
- The most effective economic criteria – profit. The most effective and simple criteria is found on the market where company operates – profit. It is a bottom line and result of the whole company activity. This is a reason why company hires employees and their compensation should reflect company economic results.
- Collaborate inside. Free market promote competition which could easily reach all levels in the company. Competition is good in a healthy dose, but too much can damage cooperative nature of the software development inside teams. Also competition between teams and business units is damaging too as it could cause suboptimal decision on the company level.
- Compete outside. The solution is to make people compete with the same competitors as the whole company facing on market. Link compensation to the whole company economic performance. Measure Up.
Fair Compensation System
There is a wide range of existing compensation systems:
- Closed vs. Open. Opens salaries will force compensation system to become fair. Secrecy is damaging and corrupting. Open salaries should eliminate personal bias, favoritism and undeserved power from management. People with higher salaries will feel pressure to justify them and show their best performance; otherwise their status will be questioned.
- Fixed vs. Performance based. Fixed rates promote inefficiency and detachment from the company results. People should have direct dependency between results of their work and the company performance.
- Driven by management or teams. Team members are in the much better position to determine most valuable contributors and ‘free riders’. Managers don’t have this insight into each team member work. They are not the best people to decide on individual contribution and compensation.
- Equal salary for levels vs. Individual negotiations. While individual negotiations are more flexible, they could promote bargaining and lack of transparency. People should be more concerned about performance of the team and company and less about individual negotiations. Some compensation parameters could be negotiable, but they should stay within baseline for the same contribution level.
- Non-money incentives and free perks. They are nice, but not important for all as oppose to compensation packages.
There is no one approach that works for all, but 3 approaches below could increase efficiency of the compensation system. Additional note: effective software team includes all contributors – business experts, designers, programmers, testers, system administrators, etc.
- Compensation Composition. A company should be flexible in packaging compensation. Some people expect secure and stable income, some are willing to work harder and risk for opportunity to earn more. Use mutual funds approach – allow custom packages (Stability, Income, Growth) with various components. They could include base salary, profit sharing (both depending on teams) and monetary options (partly covered by the company): training, health insurance, pension plans, vacation, stocks, equipment, car expenses, etc.
- Team Contributors. Team should have minimal number of contributor’s levels: Junior, Full and Senior Contributors. Most people in the team should be Full Contributors and only outstanding members should be Senior Contributors. Each level has fixed ratio of income (e.g. Full Contributor – 25% and Senior – 50% of Junior compensation). The same level makes roughly the same money (depending on packaging). The team makes decision about moving person from one level to another or removing from team at all.
- Company input. Company provides initial number of roles, budget and profit share structure. Team contribution is measured based on the profit or other criteria if the company on early market expansion (number of users / traffic, share in cost reduction, etc.). Each team receives part of the profit from their activity. Other part comes from the company pool (formed from remaining profit of other teams). Therefore, teams are interested in both their and overall company performance. Product teams have larger share of their profit, infrastructure teams have larger share from the company pool.
Fixed secretive compensation turn a team into strangers or even rivals, concerned only about individual achievements . Open fair and performance-based compensation motivates, retains and attracts programmers eager to create great, useful and profitable software.