in Software Engineering

Character in a junior developer

I’ve worked alongside and mentored some junior developers over the past few months while contracting. This post is written for the junior developer to help them build a better working relationship with their mentor.

1. Respect your mentor, don’t idolise them

Listen, observe, and synthesise your understanding from working with your mentor but beware of falling into the trap of idolising them. You might think that you’re paying your mentor a compliment by being enamoured by them and that may be true for day 1. But the longer you put your mentor on a pedestal the further away you are to having an authentic working relationship.

I was floored by the achievements of some of my colleagues. The breadth and depth of knowledge I was seeing in individuals was Godlike; from the heights of Terraform down to the magic of Webpack. Over time I learned that the greatest compliment I can pay folks like this is to pay attention and understand the idea being expressed to the point where I can hold an intelligible conversation.

2. Think for yourself

I was asked by the UX lead about changing our UI theme in real time to pin down the fonts, colours, and metrics. I said our style guide would need to be rebuilt and re-published which would take time. The junior developer I was working with said that there’s probably another easier way; we could change the theme variables and run the style guide in dev mode – he setup the repo on the UX lead’s mac. It worked.

Beware that you don’t fall into the trap of deferring all decisions, but more importantly the decision making process itself, to your mentor. They may have more experience than you and a sharper technical vocabulary but for you to understand why decisions get made is essential, for both you and your mentor. Your mentor wants to know that when they air an idea, it’s at least being sanity checked by you.

It’s not easy. I’m not the fastest thinker. I’ve struggled with quick-witted engineers pelleting technical arguments at me while I nod my head when I’m not completely following along just to see if the next sentence will make everything click. It almost never does.

In those situations I try to get really clear on what I don’t understand. Perhaps drawing out the chain of logic on a notebook on the train journey home, or talking to other engineers after sleeping on it. Often times things will click asynchronously.

3. Have character

Our integration tests started failing out of the blue. Maybe the queries are wrapped in a transaction? Not this time. The junior developer and I went through the commits, divide and conquer, from the point at which our integration tests last passed. I found the commit that broke our tests; domain specific context injected into the core application. Git blame; an experienced engineer. I was angry. I ranted on why “this should never have happened” and how the commit was plain bad. My fellow junior developer said to me in a very grounded way, “Kunal, everyone makes mistakes”. That single sentence parted the red mist. I think it had that affect more because of where it was coming from, rather than what was said. Underneath it was a deep respect for his fellow engineers.