Developer Labeling10 September 2019
Photo: Annie Spratt- Unsplash
I have recently been discussing the way we label developers with a few friends. The conversation started after a couple of deep discussions with team members. These discussions where around how and when a developer moves between perceived stages. For example for mid-level to senior. This lead me to looked back and reflected on my career and start thinking more deeply about the issue.
What follows is purely a brain dump around the question of:
Why do we often label developers based on seniority?
Junior, Mid-level, Senior. The dreaded “Rockstar”. These are typical labels applied to developers throughout various stages of their careers. The trouble with these kinds of labels is distinguishing when or how you move between them?
It is almost certainly related to the salary structures companies need. Rating and categorising creative professionals is hard as we have seen from the fall out of other industries. What makes one actor more valuable than another? Why is one artist more valuable than another? By creating labels to apply, it makes valuing a developer easier.
The trouble is that programming skills vary from one developer to another. Some people start programming earlier in life. Some do not start until later. The proliferation of schools and firms offering to teach programming has been staggering. Does that mean that graduates from somewhere like General Assembly are worth less than a graduate with a CS degree? These schools condense the teaching into smaller time frames than a typical university. But these courses teach a more modern and real world focused set of programming skills over traditional degrees. This raises an interesting point. If you compare two candidates, one self-taught and the other straight from university who is immediately more productive?
A junior developer, by title, said in their review recently that they have completed two years on the project so were no longer a junior. This developer had completed a minor amount of programming training before joining the team. No degree, no bootcamp. They had decided to move into programming for better prospects. When they interviewed they struggled to even get a Hello World style program running. The current project is the only project they have ever worked on. I discussed this statement with the developer and asked them some questions. These revolved around their ability to build a new project. “Could you develop X?”, “How long would you need to do Y?” type questions. Through the process, they realised that while they might not be a junior developer on our project they would struggle on another project. By their own admission, they would need significant time to get up to speed on other technologies and projects.
So the question then becomes am I only labelling this developer to fit within our salary bands? In the case of my project, yes. One other thought though comes to mind. If I change the developers title to Fullstack Developer does that mislead others in the industry when that developer leaves my team? He is a Fullstack on my team but that’s not a fair representation for other teams. We have all interviewed candidates that do not have the right skill set. Is this waste of interview time just caused by mislabelling of their real skills and experience?
Perhaps as an industry, we need to move away from labels. I think we should return to focusing on titles that reflect what people do and not their level. Developers are Developers and Product Owners are Product Owners. We should focus on the length of experience and previous projects undertaken. Salaries should be based on the value that a Developer can add to your project and team and not because they fit within a £5k salary band. Some companies have already gone down this route. They will have flat salaries based on technologies and years experience. For my next teams this will be the route I will investigate.
From talking to friends about this there is a lot of strong feelings within the community. The majority find the labelling currently applied pointless. Some point out that this might not just be about salary but about old style business career routes. You used to join as an administrator in an office and then get promoted to a senior administrator and so forth. Whatever the reason, labeling developers based on arbitrary stages of their career seems to be detrimental to both the developers and the industry as a whole.