Cover image by wilsan u on Unsplash
I first read about the notion of a mature developer in the blog post On Being a Senior Engineer by John Allspaw, way back in 2012. A lifetime in the tech industry, but this simple idea has stuck with me and hasn’t been bettered.
The thrust of this post is that being a mature engineer (or developer) should be valued much more highly than being a senior engineer.
You should really take the time to read that post—I’m not going to try to repeat it here as it’s long and detailed and worth reading multiple times.
What follows is just some random, less relevant information from my own life.
I’m uncomfortable with any talk about “junior” and “senior”
I dislike these terms so much that I often stop people when they mention them and then talk to them about why they are so problematic.
Today I had a constructive conversation with a person who asked me for career advice. They were labelling themselves as “junior” because they had less than 2 years of full-time experience as a programmer. And yet they also had 10 years of a career in another field before learning to code. All that experience is relevant to coding. Team dynamics, office politics, professional development skills, and so on.
For this person, their lack of expertise was only a lack of technical expertise. And that is actually a good thing, because technical skills are fairly straightforward to grow from novice to experienced. Tools like build-your-own-x are wonderful resources for that.
It’s the “soft skills” that are actually hard skills. How to learn them is not at all clear.
Bootcamp grads often excel at this immediately
When I worked as a post-grad coach for the Makers bootcamp in London I was continually surprised how good these people were with just 12 weeks of training.
A specific example is giving and receiving feedback. These bootcamp grads had been pairing and mobbing since the first day on the course, and had no experience of working alone. Instead they had learned to help each other succeed. To coach each other, to support each other, to really be a team.
Giving constructive feedback is just a natural part of that.
I regularly see so-called senior developers struggle with feedback. And it holds them back.
Bootcamp grads are so good with feedback that they often accelerate technically because they are so thirsty to improve. Whereas those who block out feedback don’t accelerate, they just stagnate.
This post isn’t really about bootcamp grads. It’s just a rant that our industry still seems stuck on this distinction of junior/senior. I wish it wasn’t. I want to work with relaxed, respectful people with a willingness to build awesome stuff together.
Top comments (12)
My current official title is Senior Developer. I have 7+ years of experience in IT. Until recently, I avoided such labels. I would much prefer Mature as a moniker instead. Why? It all breaks down to quality of code and work etiquette.
From a tech standpoint, years of experience amount to nothing if all you've done is rehash old code.
We're in a fast growing industry which requires experimentation, research and creativity to stay relevant. If one of those components are missing, you're not mature enough. No matter the years of experience under your belt.
Regarding soft skills, yeah, the point is on. Those soft skills also determine your maturity. You're not mature enough if you can't take feedback. Or if you cannot be honest in giving feedback as well. But in a constructive way.
So I would suggest that a Mature developer is most of all, a well-rounded one. One who adapts and evolves their technical and soft skills.
That being said, the conclusion is that even one with 2-3 years of experience can be called mature, regardless of seniority status.
Well written, but a lot to unpack here. I think what you are saying is a real issue.
It should be about technical experience. And we should recognize people that come from other industries. I have a PhD that did a career change via boot camp and now works for me. From a technical standpoint he is still junior. But those other skills come through in bug filing, his ability to test, and problem solve.
Boot camps give these young developers a false sense of ability. It is not always realized though. If the developer gets a job at a large enterprise that has a mediocre development team, they may fit in. If they get a job at a small shop where tech is not primary, same. But having hired 4 now, and interviewed dozens more, I can say there are for sure universal gaps that get filled with experience. And that is hard to adapt too. That and that they often don’t get to create projects from scratch, or even get proper ownership given the scale of a app a lot of the time. I am lucky that I can offer both, but others teams can’t.
I feel the titles are BS. Titles were designed to convey skill and experience between companies as a way to normalize hiring to some degree. Think about this from a blue color job, like HVAC, where there are certifications and things that have to be passed, including years of experience. Then someone gets the title “master such and such”. It works great for tradesman.
In the tech world it fails. It does convey some years of experience, even if we only slightly align too it. But I can say for sure, my peers high more junior people in higher level roles. For example, one person with 10 years in the field, was a higher level. When I finally worked with him, I would not of thought he was beyond a Intern. So we are not even normalized around title in my same division, let alone the whole company, or the industry.
I love the mature developer, as it really hits at what we should be looking for, striving to be.
Thank you for this insightful post. Especially on point 2, I think it’s important that we start taking more about the hiring of boot camp grads, because in my experience hiring managers often have little idea about what they’re getting.
I agree. Nowadays I reinforce to the novice developers that is much more important understanding the concepts behind the design patterns, business rules and focus on what kind of problem you should solve than instead just memorize code syntax.
Be a "senior" just demonstrate that you write if/else longest.
Nice post. Plenty to think about.
At some point, someone told me I was a Senior Developer. The implication -- which I'm only now beginning to recognise -- was that some of my colleagues had suddenly become my juniors. And yet my knowledge or skills hadn't changed. It was a pat on the head while, at the same time, putting those colleagues down.
Worse still: once someone is seen as a "Junior", it's difficult for them to change that perception. That includes their own self-perception. It's definitely a problem.
'... i dislike these terms so much that ... ' that ive turned down job offers unless they rename the role
I have seen job posts, where the recruiter is looking for a “junior” with 5+ years of a specific language, which seems very odd. They want to pay for a “mature” dev
The question of "years in the craft" as a parameter of "quality in the craft" is something that is being used by HR and recruitment agencies at a lot and I despise it.
The years don't convey the knowledge and craftsmanship you have in your field, it's really the output of your work that does that.
I understand it's hard to quantify for HR and Management how to deal with this and they use the Junior and Senior to convey the craftsmanship levels which is not wrong per say. It's about how that craftsmanship is established that is the core of the issue.
Interesting post, thanks you.
I have been recently called "Senior developer" by a colleague, but I was really surprised. I have 3 years of experience as a developer, I don't feel senior at all. The concept of senior developer versus junior developer has been really unclear for me since. What does it mean to be senior or junior ? I once had a colleague who said he was a junior java developer, when he had 20 years of experience of others languages. I learned so much from him, but he still called himself junior, because he "recently" changed his main language.
The concept of mature seems more logical.
Besides, the field evolves so much, that we should be eternally junior, or we would switch from junior to senior, and then a new shiny toy comes and we are back to junior and so on and so forth... (in fact, I completely love that, always something new to learn, never a boring day)
By the way, thank you soooo much for that "build your own" ressource!! Now I know what I will spend my week-ends on
This is a very inspiring article and I totally agree with you on this.
I have a question for you...
If "yes of experience" doesn't necessarily translate into " quality of experience", then how do you quantify the quality of experience?
I am asking this from the point of view of a developer and not an hiring manager so that I can better reposition myself on investing in the things that can translate into "quality of experience"
I also find it uninteresting arguing about Senior or junior dev
Thanks for the post, Daniel!