SoftwareMill’s badge-based open salary system explained
This is the third and last part of how we introduced the new salary system at SoftwareMill. In the previous parts, I have described why we decided to move away from the totally flat salary system towards a different solution that would be more adjusted to our needs. I’ve shown how we did market research on 4 main subjects that we decided the new system has to cover - market attractiveness, fairness, formalized growth route, and high-impact activities.
When it came to designing our own system, we started with some basic rules.
|1. The system should indicate what is particularly needed for the company so that people implementing their promotion plans create an increasingly competitive team.|
|2. There is no only one “good way” of promotion. People should be allowed to plan their own growth.|
|3. Promotion should be distributed - no single person will give a “promotion”.|
|4. In addition to the obvious technical development, soft development and the degree of involvement in the organization should also matter (the higher the position, the more important it is).|
|5. Not everyone has to become the CEO of a subsidiary, but by choosing the “calm in the project” path, at some point, the path of promotion ends (and there is nothing wrong with that). From a certain level, people who do not want to participate in company and organizational matters (neither help in recruitment, blogs, working groups, etc.) have it harder. Still, it is understandable due to the nature of the company (turquoise / holacracy).|
|6. The badge system is not carved in stone and will grow as the company grows.|
What we initially came up with was a badge-based system, where badges can be achieved in 3 different areas/groups - Technical (hard skills), People & Development (soft skills), and Organizational (an organization based).
Those badges also have 3 colors - Bronze, Silver, and Golden reflecting how hard or time-consuming they are to get and more or less applicable for Mid, Senior, and Senior+ staff.
Badges should be earned based on objective requirements and include as little human judgment as possible. Hence, we knew that sometimes it might not be possible.
The promotion path of your peers should, in time, create manuals you could easily follow. Imagine you join SoftwareMill, and there is someone who you look up to and would like to pursue a similar career - there should be a way of analyzing it. Therefore, all promotions should be transparent and browsable by everyone in the company.
So we knew what we needed to do, but how we implemented it is the main subject of this blog post.
Phase 1 - Invent the badges
Firstly we started with everyone in the working group proposing their badge suggestions. We decided that the original proposition would be aimed at the majority of the company - software engineers. So we needed technical badges for programmers (including backend developers and frontend, machine learning, and DevOps).
The problem with this approach was that those badges needed a structure. Some overlapped others, and we all came up with our ideas of what the badges should cover, but we still needed to cover everything that should be covered.
So… having those ideas in mind, we decided to find something we could derive the badges from.
Phase 2 - Invent the badges, again…
And that thing was our Mission and Vision. When you think about it, those two statements define your goal of how the company should operate and what it should be built for. What can be a better inspiration for what should drive people’s growth?
We took the mission and vision sentence by sentence, and for each, we asked ourselves what badge could be earned while ensuring the vision and mission were fulfilled.
For example, for the sentence:
Knowledge is the bedrock of our culture: it is exchanged freely between projects and all team members.
We needed badges that would promote exchanging knowledge within the company. So we came up with the following:
- Participation in Friday Markets (our internal knowledge-sharing meetings) and other similar events
- Initiatives to improve/support knowledge sharing
- Keeping knowledge up-to-date (confluence, documentation, etc.)
- Transfer of knowledge in projects - minimizing the bus factor
After we had badges for all those mission and vision parts, we merged them with the ones we created in the first phase.
We recognized that we need procedures that will allow everyone to suggest new badges in the future. For that, we devised a Badge Incubation process that allows suggesting new badges, which are then examined and introduced by the designated group.
Phase 3 - Assign badges to groups
Then we needed to assign those badges to the previously defined groups (Technical, Organizational, and Soft skills) so that we knew there was enough in each group for people to earn.
By the end of this exercise, we ended up with 29 Technical (currently, as of March 2023, we have 32), 29 Organizational (now 30), and 20 Soft badges (now 19).
Phase 4 - Come up with promotion terms
First of all, we needed to figure out the levels. After consideration, we devised 3 Mid (Regular) levels, 4 Senior levels, and 2 Expert levels.
|M1||Needs an indication of how to solve the problem.|
|M2||Can come up with a solution to a problem, but often not optimal.|
|M3||Collects the requirements themselves and will devise the optimal solution to the problem, requiring minor adjustments.|
Senior / Expert levels:
|S1||The first position where a person is entirely independent. They can easily be hired alone to an existing team at the client’s (although we try not to do that).|
|S2||A person who can be entrusted with starting a small project.|
|S3||A person who can be entrusted with starting and running most projects. Starts contributing to company matters. This is the top level to which you can get if you want to just work your way around in a project.|
|S4||A person who can be entrusted with starting and running most projects, who is already a little/moderately involved in the company..|
|E1||A technically outstanding person, additionally with a huge impact on the company. At the moment of promotion to this level, they receive specific responsibilities beyond just working on the project.|
|E2||The face of SoftwareMill in some of the main technical areas of the company's operation.|
Each of those levels has a single daily rate assigned (there are no negotiations; everyone has the same rate, no matter who they are and from what background or city/village. We really do not like rate gaps 😉 ).
Once we had those figured out, we needed to develop promotion terms. How many and what kind of badges should a person gain to get promoted?
|M1 -> M2||4B||2B||3B|
|M2 -> M3||4B + 1S||2B||3B + 1S|
|M3 -> S1||3B + 2S||1B + 1S||3B + 1S|
|S1 -> S2||4S||2S||3S|
|S2 -> S3||4S + 1G||3S||5S|
|S3 -> S4||4S + 1G||4S||4S + 1G|
|S4 -> E1||4S + 2G||4S + 1G||4S + 1G|
|E1 -> E2||4S + 2G||4S + 2G||4S + 1G|
Promotion to E1 and E2 additionally requires the acceptance of the jury consisting of current E1 + E2 + VPoE
B means Bronze, S - means Silver, and G - Gold badges.
All promotions up to the S4 level are semi-automatic. As long as all badges are accepted by the specific badge chapter (consisting of all who earned the specific gold badge) or the Badge Group (consisting of the VPoE, CEO, CTO, and a few other company members) when there is no such chapter, the promotion is given.
It changes a bit with the promotions to E1 and E2 - those must be accepted by the jury consisting of all E1 and E2 members. Those promotions are also more carefully planned upfront and adapted to the specific needs of one’s growth.
Phase 5 - Assign people to levels and come up with remuneration
Once we had the rules in, we needed to come up with initial people’s levels. Most of them just got the levels that corresponded to their current salary level - they were given the levels closest to their current daily rate, but we made sure everyone at the same time got at least a small raise - we needed to do that, as at the time (mid-2021) the rates were skyrocketing through the roof and we needed to catch up.
There were a few exceptional cases - we knew that some people were exceptionally good and were given E1 roles on day 1, even though no one had a matching salary at the time. There were also a few cases where we pulled people a bit more and offered them higher levels than a simple rate comparison would result. Those were usually individuals who were very senior but started working with us not long ago. As you remember, we had salary levels based purely on how long a person worked for us and in which position.
Once we had that in place, we ran financial simulations to make sure we could afford everything, and the most tiresome work started…
Phase 6 - Document all the badges and create the needed tools
… documenting all the badges.
We needed a canonical way of having all the badges documented and ready to be searched for and used. We decided to use Confluence as it already was the knowledge base solution at SoftwareMill. Firstly we came up with a badge page template.
Which consists of seven sections (screenshot in polish so below I will explain what is what):
It consists of the metadata of the badge. It’s the category, name, slack channel, and badge group, responsible for this badge.
Which requires not much explanation :)
A short description of what this badge is about. Whatever is put here will be used, via Confluence plugins, as a summary of what this badge is all about. If this badge is marked as discretionary (there are no objective rules on how it could be earned, but rather is given by some specific group), it should also be stated here.
These are the parameters that define the granularity of the badge. It can be for example a Level, or Year, or Technology - which means that it can be earned only once for a specific set of parameters.
For example, if a badge has a parameter Technology each of its colors (Bronze, Silver, Gold) can be earned only once in a lifetime for that specific technology. But if it had two parameters - Technology and Level - that would mean each color can be earned only once during one promotion (so you can earn that Silver badge on S1 -> S2, and then you can get the same badge on S2 -> S3).
The full set of parameters we use right now is Level, Language, Technology, Conference, Year, Project, Book title, Subject, Developmental Leap (which is a very specific parameter used to allow multiple earning of the same badge color if there was a serious developmental leap - we use it for example in a Badge called Linguist which can be earned for exceptional knowledge of programming languages).
These are the requirements for each badge color. Some badges might be served in all colors, some are not.
Frequently Asked Questions - these get added as people are earning their badges and have questions that often repeat.
A list of pages that mentions the badge. The idea is that when someone is ready to promote, they have to create a Confluence page, listing all the badges they earned with a short explanation of how they did it. In time these pages are ready-to-use recipes of how the promotion can look like so If you are wondering how to gain a specific badge, you can easily browse through the history of how other people achieved it.
Once we had the badges in place - searchable and well-described we needed a way for people to use them. Similarly, we created a template for the application for promotion where you should state which levels you transition to, what the needed badges are, and then the list of badges with a date of completion, with a short description of how it was achieved. As mentioned above, using the Incoming Links+ macro, it is easy afterward to find out which badges were used in specific promotions. Once the promotion application page is completed, it is publicly available for all interested in interviewing and, in case of promotions up to the S4 level, accepted by VPoE after checking for formal compliance. And that is it.
While a proper full-blown badge system is in the works, in the meantime we also use a few excel sheets, connected with google forms for badge capturing and reporting/statistics.
Phase 7 - Introduction
The whole design and implementation of the badge system started in November 2020 and was finished by April 2021. That was a hectic 5 months, but only when it began 🙂
As with every critical decision at SoftwareMill, the new system had to be proposed, discussed, and voted on. We showed an initial proposition on Apr 30, 2020. Then we had many discussions fine-tuning the description and some parts of the idea. As it was something completely new and very different from the straightforward way of dealing with promotions, there was a lot of resistance, mainly because of fear and natural human reluctance to change.
Once everything was more or less understood and ironed out, I made a live presentation on the new system with the Q&A session. The whole team designing the new system was available and answering questions.
And then the voting started. 68 out of all 74 voted (making the turnout 92% - very high). 37 voted in favor (54.4%), 17 against (25%), and 14 abstained (20,6% - abstained votes are added to the “majority votes” in our voting system). So, in theory, we had 75% in favor, but you could see from the results that people are not 100% convinced, and this will have to be treated with much consideration. We also promised a re-evaluation of the system after a year; if it does not work, it is possible to drop it.
And the fun has begun 🙂
Phase 8 - RECEPTION
Since everyone got a raise, we treated this as the “last promotion” for everyone in May 2021 and let people easily get to know the idea and start gathering badges, as they could not submit a promotion application for the next 6 months. There were 3 groups of people - the first one started gathering badges right away, the second one went through the requirements and planned to do something in the future, and the third one did absolutely nothing.
Then, in November 2021, we had our occasional company-wide retrospective. We have them more-less every quarter and talk about the challenges SoftwareMill has. During that one, we had 3 main subjects we talked about - Team. Tech Community and Customers (which are three pillars of our mission) and Badges were mentioned more than once 😉 Remember that this was when we already had the first 6 promotions given using the new system.
I remember that there were still a lot of voices that were not sure about the system. We got a lot of constructive feedback on what should be fixed. But what I remember the most was a very heated comment from Tomasz Krawczyk (thank you for being open! Really appreciated), who said that the badge system is going to kill the company, as it does not base on the integrated motivation, but rather lures people to do it for money. I remember I disagreed with that statement, but it made me think a lot about the problem (and to be honest, there were times I was on the edge of tearing the whole idea down).
Luckily, we have another initiative at the company, which is Soft-skills Reading Club, where we read together books on self-development. Jan suggested that we read Susan Fowler’s Why Motivating People Doesn’t Work… and What Does, and this seemed like a perfect piece to find out if really our system does “play” on the right motivations.
If you have not read the book - please do; it is a treat. I won’t get into many details because this could be another blog worth material. Still, in the end, we got the ease of mind that we might be doing things right, and Tomasz got convinced the system was, in fact, leveraging integrated motivation. He started creating his own promotion application (successful, he moved up on the ladder this March!).
In the meantime, a few badges were proposed and introduced via the Badge Incubation process.
Phase 9 - Company survey and changes to the system
For me, the introduction of the badge system is a partial success. Personally, it motivated me to take many actions for which badges are awarded. I managed to get a promotion in this way and it brought me satisfaction.
Anonymous survey response
Then, as promised, a year after badges were introduced, we created a survey on the system’s general reception and what should be changed. We had 25 responses (out of over 80 people at the time in the company), out of which 5 responded that either they did not like the system (3 responses) or they tried, but it was too complicated for them (2 responses).
And we got a lot of ideas on what has to be changed:
- It isn’t easy to get promoted by only fulfilling project duties
- A lot depends on the project you are working on
- Following promotions can be tricky - you run out of “easy” badges quickly
- It is difficult to get the needed amount of Soft and Organizational badges
So we decided to introduce some changes:
- Up to S3 levels, there was only a stated percentage of how many Technical badges have to be gained - we understood that, especially on the lower levels, technical expertise is the main factor in getting promoted.
- It has slightly lowered the number of badges that must be gained, having Organizational and Soft in one category for all levels.
- We have modified some key badges to allow them to be gained more than once for each color (like badges corresponding to technology or language expertise).
- We introduced a new badge, “Project Bedrock”,for those who work on a single project for a more extended period of time, becoming one of its critical assets.
- Twice a week, there’s a dedicated time slot to come and talk about your development plan, career goals, and questions about badges with our VPoE.
The new badge requirements look as follows:
|J1, J2, J3 → M1||7B, including at least 5 Technical|
|M1 -> M2||9B, including at least 6 Technical|
|M2 -> M3||9B + 2S, including at least 7 Technical|
|M3 -> S1||7B + 4S, including at least 7 Technical|
|S1 -> S2||9S, including at least 5 Technical|
|S2 -> S3||10S + 1Z, including at least 6 Technical|
|Promotion||Technical||Organizational and Soft|
|S3 -> S4||4S + 1G||5S + 1G|
|S4 -> E1||4S + 2G||3S + 2G|
|E1 -> E2||4S + 2G||2S + 3G|
While it took a lot of work to come up with the badges and then convince people it’s a good idea (😉) by constantly adjusting it and answering questions, I believe we are now in a good position to have a fantastic system in place that boosts our company productivity and growth.
What People Like About It
Independence (for lack of a better word) because I don't have to ask anyone for a raise, which "maybe will" only there is a clear promotion system.
It saves from all these time-consuming annual talks with the PM about development and goals leading, in some cases, to randomly awarded promotions. The downside is that sometimes it is more difficult to get recognized for a job well done as the received feedback (or lack of it) is not always easily matched to badges.
The system is fair and predictable. Once you join, you know exactly what to do in order to get promoted. Your promotion is not based on the whim of some random manager you got under.
Extension of the previous system (based only on seniority) with a component related to competencies - still in a well-formalized and non-discretionary way, but allowing for different ways to reach the same goal, which is promotion.
People have to plan for their growth. This is, in my opinion, the key to success - that you have to ask yourself a question about what you want to do with your professional life. Once you figure out where you want to be in a few years, you can consciously plan your development. In order to get promoted, you have to gain competence.
A good summary of your achievements so far and a broader picture of your own development.
From the company's point of view, by designing the badges you can guide your staff on what set of skills (both hard and soft) are needed for the company. This gives a unique opportunity to provide a buffet of things you would like your personnel to acquire, while at the same time allowing them to choose the things that work best for them. At the end of the day, given your team is diverse enough, you get the skills you need, while people get the skills they want to get. And everyone is happy 🙂
What the Company and the Clients Like About It
From the managerial point of view, the badge system allowed us to better track the progress of our employees. I would like to share three examples of different badges that translated to achieving specific business goals.
Certificates and Training
The badge “Top Student” can be received for passing certificates or taking part in training from a curated list by our senior specialists. Since the introduction of the badge system, a few bottom-up initiatives emerged in order to form learning groups aimed at specific certificates or training. Our engineers received 34 bronze, 29 silver, and 2 gold badges, which translated into 14 Kubernetes (CKA and CKAD), 8 AWS, 6 Kafka, 5 Lightbend Reactive Architect, and 2 Cassandra certificates and dozens of certificate-less training.
Then another badge, “Journeyman,” can be received for taking part in internal knowledge-sharing initiatives, and 15 bronze and 10 silver badges were given out (it has no gold flavor).
Deployments to Production
Lastly, the badge “Producer”, received for getting your code/project to production, was given out 11 times in bronze and 28 in silver. These activities strengthen not only our company but also the projects we work for, making our clients happy.
And this concludes my three-part story about our salary system. It took me much longer to describe it, but I hope you enjoyed it! Looking forward to reading in the comments what you think.
Last but not least, I would like to thank the fantastic team that has worked so hard to make this system possible - in alphabetical order - Tomasz Dziurko, Małgorzata Grochalska, Tomasz Łuczak, Sebastian Rabiej, Wojtek Urbański, and Adam Warski plus many many more, with Grzegorz Kocur, Michał Matłoka and Jan Zborowski worth mentioning especially. Thank you!