Yesterday I was involved in a conversation with someone that really challenged me, asking me questions that kept me thinking long after we ended our time together. One of those questions was what do I think of Junior Developers.
My initial response, my off-the-cuff conditioned answer, was something along the lines of describing how they fill an important role in the software development ecosystem by being the group that performs the grunt work. Now keep in mind, this isn’t a question that I had previously spent any time thinking about and as usual let my mouth answer before my brain.
I followed that up with a bit more thoughtful response, after a few seconds of thought, the most I’d given it. I responded that I thought a Junior Developer was also important as someone who I can learn from. I likened the role to that of children and how we can see things differently if we allow ourselves to see things through their eyes.
Now I’ve spent more time thinking about it, not enough yet to be sure, but at least a few hours letting my subconscious noodle around on it last night and today, and I’m stuck on what exactly makes a Junior Developer in my eyes and for my definition.
A Junior Developer…
…very well might be a faster coder than me
…might be aware of more, or at least different technologies than me
…could be able to code in more languages than me
…likely has more open source contributions than me
I think what differentiates me from a Junior Developer might be that I’ve failed more.
Thomas Edison once said (or at least is attributed to saying) something along the lines of:
we now know a thousand ways not to make the light bulb
For each new project or task I’m assigned, I bring to it all the failures I’ve collected over my career. I can’t say I won’t repeat those failures, but I’ll likely find my way out of them more quickly having experienced them before.
So what differentiates me from a Junior Developer? My failures. Now that I have a definition I can take a fresh look at the initial question and discover what I think of Junior Developers, what value do I think they hold.
A Junior Developer might code faster than me, there’s value in that. A Junior Developer might be aware of more or different technologies, there’s value in that. A Junior Developer might be able to code in more or different languages than me, there’s value in that. A Junior Developer might fail more or in different ways than me… there’s value in that!
If I always can allow myself to learn from failure then it doesn’t matter where that failure comes from. If I can learn to really embrace failure then I’ll become a better developer. If I can learn the thousand different ways to not make software, then I’ll be one step closer to learning the better way to do it.
There’s value in that.