Not so long ago, an interesting post appeared
on the stackoverflow blog from
Joel Spolsky, co-founder of
Stack Exchange, about salary calculation for developers. Next to Habrakat, an excerpt from this post, and after - free translation of the document on the compensation system in the Stack Exchange.
Now is the time of the year when we revise 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 on the basis of a 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 developers on the basis of basic principles, and came to the realization that this is a fairly correct way to pay for good people.
')
One of the key principles of the 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 calculation plan, so you can see how decisions are made regarding the level of compensation in the 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 each developer to personal inviolability.
Developer Compensation in Stack Exchange
This is a description of how the salary of developers in the Stack Exchange is determined.
Introduction
The development team at Stack Exchange is an amazing group of programmers that justifies our slogan “to be smart and achieve results” every day.
We want to offer them fair, easily understood, transparent and competitive compensation.
Fair means no games. Our compensation is not based on how well you negotiate or how often you ask for a raise; it is based on a repeatable predictable system. There is no compulsory rating, so people can keep each other from working well. We do not have possible salary levels for each level, we have one salary and a system for calculating it.
Easily understood - it means that any developer can find out what his salary should be according to the system. He can see what needs to be done to move up the career ladder. Also, various managers can find out how much to pay their team members and get consistent and fair results.
Transparent - reflects the key beliefs of the Stack Exchange about keeping our business open and without secrets. This means that if the list of salaries of each unexpectedly appeared on Wikileaks, no one would have been surprised enough to be upset. Transparency is the basis for guaranteeing fairness.
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 in the Stack Exchange as you could earn in any other place. It is critical to be attractive and to be able to keep those developers that 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 an “exceptional” salary and exceptions to justice.
Components of competitive salary
The upper limit of the salaries of C # developers worldwide can vary from $ 30,000 to $ 200,000.
We conducted extensive research on the fact that they use other companies to determine the salaries of programmers in order to be confident in the competitiveness of our system. We found that market wages are a function of:
- Skills: how good you are in what you do;
- Business areas: how many things you are responsible for;
- Experience: how long are you a programmer;
- Company size: small companies pay less for large ones;
- Location: each geographical point has its own market wage;
- Public artifacts: how much you work in public and how well you are recognizable in the community.
Our system takes into account all these points.
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 re-assessed every summer by your direct manager. See the “Be More Stunning” Chart 2011 at the end of this document.
Areas of activity
The “scope of activities” category reflects how much responsibility you have. In large companies, this means how many levels of managers are over you.
In the Stack Exchange, we do not have a clear delineation of the code and heaps of levels of “fields of activity”, but we have:
- Beginner - while he does not trust to write the code himself, in most cases small tasks are given that are performed under the guidance of a mentor. As a rule, spends no more than a couple of days, without the need for further control by the manager. He is expected to quickly rise to the level of "party";
- Member - writes large pieces of code on their own. As a rule, he spends several weeks without the manager's instructions;
- Architect - develops large systems independently. Manages the design and development of large, significant 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 drastically different prices. There are many 18-year-old programmers who can run around the 20-year veterans in circles. 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 the child cannot talk about “skill” until he works for a while). One year after graduating from such a school, skills determine wages much better.
Our periods of experience:
- College student or intern;
- From 0 to 1 year;
- From 1 to 5 years;
- From 5 to 15 years;
- From 15 years.
We measure experience as
full time dedicated to software development .
- The time spent at work not related to programming is not considered;
- The time spent in college for 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 similar size. More specifically, we look at the salaries of other Internet startups in the United States who have less than 100 employees, funded through venture capital or already valued as profitable. We are definitely not trying to chase Google, Microsoft, investment banks or heated startups.
Location
Because our team is geographically distributed, we could try to set salaries based on location (for example, a developer from Kansas gets a salary that corresponds to Kansas), but we do not see justice in reducing the salaries of people who live in the wilderness when they do the same work Thus, our salaries are coordinated on a global scale for developers working from home, even if it is for the good 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 wages in New York, and the fact that we do not want to accidentally encourage people to move out of the backwoods and quit distant work, there is a fixed cost of living slightly increased for New York City. York
Public artifacts
One of the key values ​​of the Stack Exchange is the fact that we work publicly and the creation of public artifacts - an electronic, public trail of bread crumbs for the work we do - is extremely important to us.
This is part of the compensation, because the better known about you in the industry, the higher the salary you receive.
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 the main part of each set of skills. Here they are:
- Participation on Stack Exchange sites;
- Writing posts in our blog;
- Writing posts to your own blog;
- Participation in open source projects;
- Public performance;
- Attending collaborative programming events and developer meetings;
- Participation in discussions;
- Conference Attendance;
- Record podcasts or act as guest in such podcasts.
The idea is that you are expected to create public artifacts as a representative of the Stack Exchange team - barely noticeable performance at the conference without introducing yourself as a member of the Stack Exchange means nothing to us. Shirts are free. Put them on.
All these things increase your market value, thereby confirming our desire to pay you more money, and when you do this as a representative of the Stack Exchange, this affects us, strengthening our reputation as a place where elite, well-known developers work, which, in their turn, attracts even more high-end developers.
“Being More Stunning” 2011 Chart
AAA +++ The level of gurus. Makes and teaches. You are really famous for this skill. This is rare even in our awesome team. Most people should have no more than one or two such skills.
A + Awesome. Fully dominant skill.
A Sufficient. Skill sufficient to perform current work.
B Be More Stunning. This is a good point to work on improving their skills next year.
If you have a lot of B, do not despair. It simply 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 a C, because everyone here is amazing. If you were doing work at the level of C, D, or F, we would have talked to you seriously and would have worked closely to fix it.
Skill | Select level |
Fundamental programming Cycles, subroutines, 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 engineering skills DVCS, error correction, automation, teamwork, etc. All the things you are talking about at programmers.se
| B | A | A + | AAA +++ |
Extracurricular Programming Training The study of 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 - a code that is easy to read and use
| B | A | A + | AAA +++ |
Delivery Well organized delivery. Skill in fast delivery of code to users
| B | A | A + | AAA +++ |
Propaganda Joint programming, volunteering, evangelism, public speaking
| B | A | A + | AAA +++ |
Completing of the work Fulfillment of plan, fulfillment of tasks
| B | A | A + | AAA +++ |
Performance and Optimization Constantly work to accelerate user experience.
| B | A | A + | AAA +++ |
Data acquisition View user data to find ways to improve them
| B | A | A + | AAA +++ |
Administration system Important technologies used on our hosting
| B | A | A + | AAA +++ |
Ideas Constant generation of 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 load GIF into CompuServe
| B | A | A + | AAA +++ |