How much should developers pay?

Original author: Joel Spolsky
  • 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.

Stack Exchange Developer Compensation

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.

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:
  1. Skills: how good you are at what you do;
  2. Areas of activity: how many things you are responsible for;
  3. Experience: how long have you been a programmer;
  4. Company size: small companies pay less than large;
  5. Location: each geographical point has its own market salary;
  6. Public artifacts: how much you work publicly and how well you are recognized in the community.
Our system takes into account all these points.


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.


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:
  1. College student or intern;
  2. From 0 to 1 year;
  3. From 1 year to 5 years;
  4. From 5 to 15 years;
  5. From 15 years.
We measure experience as full time dedicated to software development .
  • 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.


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.
The idea is that you are expected to create public artifacts as a representative of the Stack Exchange team - a barely noticeable speech at the conference without introducing yourself as a member of Stack Exchange means nothing to us. Shirts are free. Dress them up.

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.
SkillChoose level
Fundamental programming
Loops, routines, etc. Basics of programming
BAA +AAA +++
Web Development
HTML, CSS, JavaScript / JQuery, Ajax
BAA +AAA +++
Our programming tools
BAA +AAA +++
DVCS engineering skills , bug fixes, automation, teamwork, etc. All the things you talk about at
BAA +AAA +++
Extracurricular programming training.
Studying interesting new technologies for their own sake.
BAA +AAA +++
Creating Public Artifacts
Blog Posts, Open Source Tools, Books
BAA +AAA +++
UI Design
Good Skills in Understanding User Experience - Code That is Easy to Read and Use
BAA +AAA +++
Well-organized delivery. Skill in quick code delivery to users
BAA +AAA +++
Joint programming, volunteering, evangelism, public speaking
BAA +AAA +++
Accomplishment of work
Execution of plan, accomplishment of tasks
BAA +AAA +++
Performance and Optimization
Constantly working to accelerate user experience
BAA +AAA +++
Retrieving data
View user data to find ways to improve it.
BAA +AAA +++
Administration system
Important technologies used on our hosting
BAA +AAA +++
Constantly generating new ideas
BAA +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
BAA +AAA +++

Also popular now: