Junior developers

I don't like the sentence "junior developer". It's not meaningful. There is no universal definition of "junior" or "senior" developer because seniority is not a mono-dimensional path. There are many ways to grow as a professional and we're always going to be junior at some things. For these reasons, I feel the need to clarify what I mean when I say "junior developers".

I use the term to describe people with no professional experience. They seem to deserve special treatments in our industry. Some leaders argue that:

  • You shouldn't bother hiring junior people because:
    • The overhead on senior people slows you down.
    • There isn't enough time to mentor them.
  • Junior developers are good to change the copy on the website.
  • Junior developers are just good for testing features, so we prefer to write tests.

This is awful and awfully common. Other leaders have a better approach to junior developers, but they still suggest special treatment:

  • You should put junior people all together so they can learn.
  • You should offer them simple tasks so they can learn.

I consider any special treatment for junior developers to be plainly wrong. The problem is exactly that: considering them special. There isn't anything special about being a junior developer.

I apply this principle so rigorously that I ran into an interesting problem once. A junior developer joining one of my teams felt under pressure because of their lack of knowledge. I didn't understand the problem until I did the most obvious thing you should do when you don't understand something: I asked. They were stressed by the idea that they had to perform and produce as much as everyone else in the team. After all, I was indeed treating them as everybody else. My mistake was obvious in hindsight: I didn't clarify as much as I should have that there is one difference between junior team members and the more senior ones: expectations. Since it may happen to you too, I suggest you tell junior developers what's expected of them with great care. Personally, I expect them to learn and ask many questions on a daily basis. All the questions are worth asking and no question is too easy to bother answering.

If you mentor juniors to never fear asking questions and create a safe environment for their learning process, they glue your teams together. Senior people often fall for the law of the instrument:

If all you have is a hammer, everything looks like a nail.

They also tend to mistake things they learned a long time ago for easy things. These issues explain some symptoms your teams may have:

  • Your teams do something unnecessarily complex because they did this in the past and it worked. You miss out on innovation. You miss out on simplifying your system because something more complex worked in the past and your teams know about it.
  • Your teams think they are always right. Of course no one is always right. Self-doubting your own solutions helps as long as it doesn't get you stuck.
  • Your senior developers may be senior only technically speaking. I ran into this problem often in my career because it's easy to get distracted by their technical knowledge. Expect senior people to mentor and encourage the growth of junior team members. Junior developers help you figure out if you actually have senior team members.

Junior developers ask you why you do something in a certain way no matter how long you've been doing it. They don't know about your status quo and assumptions yet. They debug your systems just by asking questions. They find what's wrong with your documentation by reading it with contextless fresh eyes. The benefits outgrow the investment every single day. You always need junior developers.

Our industry is so broken that most of us accept that everyone else needs to have the shitty experience we had as junior developers. I remember my first job and I look back at it often. It was awful and I was surrounded by people that thought I had to earn their trust before they could teach me something. I abhor this leadership style. We must do better than that. We must be better than that.

A reminder: you are still a junior at almost everything in life and you will always be. Teaching people what you know makes you better at what you do. Junior people make your seniors better because of that.