How much should developers pay?
- Transfer
Not so long ago, an interesting post appeared on the stackoverflow blog from Joel Spolsky, co-founder of Stack Exchange, about payroll developers. Further, before the Habrakat, an excerpt from this post, and after - a free translation of the document on the compensation system in Stack Exchange.
Now is the time of year when we are reviewing the salary of each employee in order to make sure that it corresponds to his level. We depend on a dozen system developers and pay them based on the compensation system developed by our cousins from Fog Creek, which is so different from the Stack Exchange that some friction arose.
So we sat down and thought about compensating the developers based on the basic principles, and came to the understanding that this is the right way to pay for the work of good people.
One of the key principles of Stack Exchange is that we do everything we can publicly and we try to keep public artifacts for everything we do. In the spirit of this, I downloaded the full version of our current compensation plan, so you can see how decisions are made regarding the level of compensation in Stack Exchange. Only one thing did not become public - the final calculations that determine each individual check, this is because we must balance our philosophy of openness with the right of every developer to personal integrity.
This is a description of how developers' pay is determined on Stack Exchange.
The Stack Exchange development team is an amazing group of programmers that lives up to our slogan “be smart and achieve results” every day.
We want to offer them fair, easy to understand, transparent and competitive compensation.
Fair means without games. Our compensation is not based on how well you negotiate or how often you ask for promotions; it is based on a repeatable predictable system. There is no compulsory rating, so people can not interfere with each other to work well. We do not have possible salary levels for each level, we have one salary and a system for calculating it.
Easy to understand- means that any developer can find out what salary he should have according to the system. He can see what needs to be done to advance on the career ladder. Also, various managers can find out how much to pay members of their team and get consistent and fair results.
Transparent - reflects Stack Exchange's key beliefs about keeping our business open and secrets free. This means that if everyone’s salary list suddenly appeared on Wikileaks, no one would be so surprised as to be upset. Transparency is the basis for guaranteeing justice.
Despite our belief in transparency, we also believe in the right of our developers to privacy. We publish everything about how the system works, but we will not disclose how much everyone earns.
Competitive - means that you earn at least as much from the Stack Exchange as you could earn anywhere else. It is critical to be attractive and to be able to keep those developers whom we would like to see working for us. If our compensation system is uncompetitive, we will not be able to hire the people we want without offering “exceptional” salaries and exceptions in justice.
The top salary limit for C # developers around the world can range from $ 30,000 to $ 200,000.
We conducted extensive research on what other companies use to determine the salaries of programmers in order to be sure of the competitiveness of our system. We found that market salaries are a function of:
Even working in an abnormally talented group of people like the Stack Exchange team, there is always the opportunity to stand out. Skills are reevaluated every summer by your immediate manager. See the “Be More Stunning” Chart 2011 at the end of this document.
The category “field of activity” reflects how much responsibility lies with you. In large companies, this means how many levels of managers are above you.
In Stack Exchange, we do not have a clear distinction between code and heaps of levels of “areas of activity”, but we have:
Programmers tend to acquire skills at radically different prices. There are many 18 year old programmers who can run in circles around 20 year old veterans. However, there are periods of experience within which the market tends to compensate for them in different ways. For example, in companies of our size there is almost always a single, fixed starting salary for new graduates, regardless of skill (probably because a child cannot talk about “skill” until he works for some time). A year after graduating from such a school, skills determine salary much better.
Our experience periods:
We constantly compare our salaries with companies of a similar size. More specifically, we look closely at the salaries of other Internet startups in the USA, which have less than 100 employees financed through venture capital or already rated as profitable. We are definitely not trying to chase after Google, Microsoft, investment banks or hot startups.
Because our team is geographically distributed, we could try to set salaries based on location (for example, a Kansas developer gets a salary that matches Kansas), but we do not see justice in lowering the salaries of people who live in the wilderness when they do the same work. Thus, our salaries are globally agreed for working-from-home developers, even if it is for the benefit of people living in places with low cost of living.
Due to the unusually high cost of living in New York and the high market level of salaries in New York, as well as the fact that we do not want to accidentally induce people to move from the hinterland and quit remote work, there is a fixed cost of living slightly increased for New York.
One of the key values of Stack Exchange is the fact that we work publicly and the creation of public artifacts - an electronic, public trace of breadcrumbs on the work we do - is extremely important for us.
This is part of the compensation, because the better you know about you in the industry, the higher your salary.
There are several ways you can use to create public artifacts. No one will use them all, but doing at least some of these things is an essential part of everyone’s skill set. Here they are:
All these things increase your market value, thereby confirming our desire to pay you more money, and when you do this as a Stack Exchange representative, this reflects on us, strengthening our reputation as a place where elite, famous developers work, which, in their turn attracts even more upscale developers.
AAA +++ Guru Level. Makes and teaches. You are really famous for this skill. It’s rare even in our amazing team. Most people should have no more than one or two of these skills.
A + Amazing. Entirely and completely dominant skill.
A sufficient. The skill is sufficient to carry out the current work.
B To Be Even More Awesome. This is a good point to work on improving your skills next year.
If you have a lot of B, do not despair. It just means that you are closer to the beginning of your career than to the middle and there are plenty of opportunities for further growth.
We don’t have C because everyone here is awesome. If you were to perform work at level C, D or F, we would have seriously talked to you and would have worked closely to fix it.
So we sat down and thought about compensating the developers based on the basic principles, and came to the understanding that this is the right way to pay for the work of good people.
One of the key principles of Stack Exchange is that we do everything we can publicly and we try to keep public artifacts for everything we do. In the spirit of this, I downloaded the full version of our current compensation plan, so you can see how decisions are made regarding the level of compensation in Stack Exchange. Only one thing did not become public - the final calculations that determine each individual check, this is because we must balance our philosophy of openness with the right of every developer to personal integrity.
Stack Exchange Developer Compensation
This is a description of how developers' pay is determined on Stack Exchange.
Introduction
The Stack Exchange development team is an amazing group of programmers that lives up to our slogan “be smart and achieve results” every day.
We want to offer them fair, easy to understand, transparent and competitive compensation.
Fair means without games. Our compensation is not based on how well you negotiate or how often you ask for promotions; it is based on a repeatable predictable system. There is no compulsory rating, so people can not interfere with each other to work well. We do not have possible salary levels for each level, we have one salary and a system for calculating it.
Easy to understand- means that any developer can find out what salary he should have according to the system. He can see what needs to be done to advance on the career ladder. Also, various managers can find out how much to pay members of their team and get consistent and fair results.
Transparent - reflects Stack Exchange's key beliefs about keeping our business open and secrets free. This means that if everyone’s salary list suddenly appeared on Wikileaks, no one would be so surprised as to be upset. Transparency is the basis for guaranteeing justice.
Despite our belief in transparency, we also believe in the right of our developers to privacy. We publish everything about how the system works, but we will not disclose how much everyone earns.
Competitive - means that you earn at least as much from the Stack Exchange as you could earn anywhere else. It is critical to be attractive and to be able to keep those developers whom we would like to see working for us. If our compensation system is uncompetitive, we will not be able to hire the people we want without offering “exceptional” salaries and exceptions in justice.
Competitive salary components
The top salary limit for C # developers around the world can range from $ 30,000 to $ 200,000.
We conducted extensive research on what other companies use to determine the salaries of programmers in order to be sure of the competitiveness of our system. We found that market salaries are a function of:
- Skills: how good you are at what you do;
- Areas of activity: how many things you are responsible for;
- Experience: how long have you been a programmer;
- Company size: small companies pay less than large;
- Location: each geographical point has its own market salary;
- Public artifacts: how much you work publicly and how well you are recognized in the community.
Skills
Even working in an abnormally talented group of people like the Stack Exchange team, there is always the opportunity to stand out. Skills are reevaluated every summer by your immediate manager. See the “Be More Stunning” Chart 2011 at the end of this document.
Areas of activity
The category “field of activity” reflects how much responsibility lies with you. In large companies, this means how many levels of managers are above you.
In Stack Exchange, we do not have a clear distinction between code and heaps of levels of “areas of activity”, but we have:
- Beginner - while not trusting to write code on their own, in most cases small tasks are given that are performed under the guidance of a mentor. As a rule, he spends no more than a couple of days, without the need for further control by the manager. It is expected that he will quickly rise to the level of "member";
- Member - Writes large chunks of code on his own. As a rule, he spends several weeks without the instructions of the manager;
- Architect - develops large systems independently. Manages the design and development of large, meaningful pieces of code that take months. Offers and defends major new improvements and then leads them to completion. Manages several other developers as a manager or colleague.
Experience
Programmers tend to acquire skills at radically different prices. There are many 18 year old programmers who can run in circles around 20 year old veterans. However, there are periods of experience within which the market tends to compensate for them in different ways. For example, in companies of our size there is almost always a single, fixed starting salary for new graduates, regardless of skill (probably because a child cannot talk about “skill” until he works for some time). A year after graduating from such a school, skills determine salary much better.
Our experience periods:
- College student or intern;
- From 0 to 1 year;
- From 1 year to 5 years;
- From 5 to 15 years;
- From 15 years.
- Time spent working outside of programming is not considered;
- Time spent in college on training or internships or until graduation (for those who went to college) is not considered.
Company size
We constantly compare our salaries with companies of a similar size. More specifically, we look closely at the salaries of other Internet startups in the USA, which have less than 100 employees financed through venture capital or already rated as profitable. We are definitely not trying to chase after Google, Microsoft, investment banks or hot startups.
Location
Because our team is geographically distributed, we could try to set salaries based on location (for example, a Kansas developer gets a salary that matches Kansas), but we do not see justice in lowering the salaries of people who live in the wilderness when they do the same work. Thus, our salaries are globally agreed for working-from-home developers, even if it is for the benefit of people living in places with low cost of living.
Due to the unusually high cost of living in New York and the high market level of salaries in New York, as well as the fact that we do not want to accidentally induce people to move from the hinterland and quit remote work, there is a fixed cost of living slightly increased for New York.
Public artifacts
One of the key values of Stack Exchange is the fact that we work publicly and the creation of public artifacts - an electronic, public trace of breadcrumbs on the work we do - is extremely important for us.
This is part of the compensation, because the better you know about you in the industry, the higher your salary.
There are several ways you can use to create public artifacts. No one will use them all, but doing at least some of these things is an essential part of everyone’s skill set. Here they are:
- Participation in Stack Exchange sites;
- Writing posts on our blog;
- Writing posts on your own blog;
- Participation in open source projects;
- Public performance;
- Visits to joint programming events and developer meetings;
- Participation in discussions;
- Conference attendance;
- Record podcasts or act as a guest in such podcasts.
All these things increase your market value, thereby confirming our desire to pay you more money, and when you do this as a Stack Exchange representative, this reflects on us, strengthening our reputation as a place where elite, famous developers work, which, in their turn attracts even more upscale developers.
“Be More Stunning” Chart 2011
AAA +++ Guru Level. Makes and teaches. You are really famous for this skill. It’s rare even in our amazing team. Most people should have no more than one or two of these skills.
A + Amazing. Entirely and completely dominant skill.
A sufficient. The skill is sufficient to carry out the current work.
B To Be Even More Awesome. This is a good point to work on improving your skills next year.
If you have a lot of B, do not despair. It just means that you are closer to the beginning of your career than to the middle and there are plenty of opportunities for further growth.
We don’t have C because everyone here is awesome. If you were to perform work at level C, D or F, we would have seriously talked to you and would have worked closely to fix it.
Skill | Choose level | ||||
Fundamental programming Loops, routines, etc. Basics of programming | B | A | A + | AAA +++ | |
Web Development HTML, CSS, JavaScript / JQuery, Ajax | B | A | A + | AAA +++ | |
Our programming tools C #, .NET, LINQ, SQL | B | A | A + | AAA +++ | |
Other DVCS engineering skills , bug fixes, automation, teamwork, etc. All the things you talk about at programmers.se | B | A | A + | AAA +++ | |
Extracurricular programming training. Studying interesting new technologies for their own sake. | B | A | A + | AAA +++ | |
Creating Public Artifacts Blog Posts, Open Source Tools, Books | B | A | A + | AAA +++ | |
UI Design Good Skills in Understanding User Experience - Code That is Easy to Read and Use | B | A | A + | AAA +++ | |
Delivery Well-organized delivery. Skill in quick code delivery to users | B | A | A + | AAA +++ | |
Advocacy Joint programming, volunteering, evangelism, public speaking | B | A | A + | AAA +++ | |
Accomplishment of work Execution of plan, accomplishment of tasks | B | A | A + | AAA +++ | |
Performance and Optimization Constantly working to accelerate user experience | B | A | A + | AAA +++ | |
Retrieving data View user data to find ways to improve it. | B | A | A + | AAA +++ | |
Administration system Important technologies used on our hosting | B | A | A + | AAA +++ | |
Ideas Constantly generating new ideas | B | A | A + | AAA +++ | |
Modem connection sound The ability to emulate a 1200 baud modem using only your mouth (with error correction protocol) is good enough to upload GIFs to CompuServe | B | A | A + | AAA +++ |