If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.

— Sun Tzu, The Art of War

Applying for a junior engineering position, or any job, is an exercise in marketing and sales. You are the product, and the employer is a potential customer. To market and sell anything effectively, you need to understand how the customer thinks.

In this article, I want to explore a bit of employer psychology when it comes to hiring juniors, and give some suggestions that I believe increase your chance of success.

What An Employer Wants

What a girl wants
What a girl needs
Whatever makes me happy sets you free
And I’m thanking you for knowing exactly

— Christina Aguilera, What A Girl Wants

Employers are looking for cheap labour — the highest productivity per dollar spent on wages. We’re (almost) all living in one big, globalised, capitalist economy, after all. There are other, less-cynical benefits that an employer might be hoping to gain from hiring juniors, but they aren’t particularly relevant to how you would present yourself when applying for one of these roles, so I’m going to gloss over them here.

However, I think hiring decisions for junior positions are usually based around avoiding risks, not immediately increasing productivity. Employers still want productive labour, but they usually understand that hiring juniors is a long-term play because juniors typically require time and investment to become productive.

With that in mind, it’s probably easier to look at what employers don’t want, instead of what they do want. Some commonly perceived risks are:

  • the junior requiring lots of time from senior engineers, significantly reducing overall team productivity

  • the junior isolating themselves and becoming secretive with their work, for reasons such as: perfectionism, excessive fear of embarrassment/failure, avoidant personality traits.

  • the junior not improving their skills fast enough, due to things like:

    • lack of mentorship from other engineers
    • lack of interest in programming, or lack of a growth mindset
    • being too much of a beginner, who could take many years to reach competence
  • the junior soaking up all the business’s investment into improving their skills, reaching mid-level proficiency, and then immediately quitting to take a better job somewhere else

Suggestions For Presenting Yourself As Low-Risk

You application will be screened for the risks mentioned above, and you will get interview questions designed to asses how risky you are. A big part of getting an offer for a junior position is demonstrating that you are a low-risk choice.

Below are some of my recommendations for marketing yourself as a potential junior engineer.

1. Demonstrate Genuine Interest

If you can demonstrate a genuine interest for programming and software engineering, that shows you have the intrinsic motivation to improve your skills.

This could be experiments with hot technologies (“I have a home server that runs Kubernetes”) or deep dives into specific topics (“I read the ISO8601 specification, and did you know its weeks start on Monday not Sunday?”). Blog posts are a good record of this.

I know someone who was the only Australian to have ever enrolled in the US bootcamp that he completed. One reason for this is that the 9am - 5pm class times are something like 12am - 8am in Australia. But he chose this particular bootcamp because it was high quality, and took a bottom-up approach to learning (learn the boring fundamentals before even attempting to make an app) instead of a top-down approach (make an app ASAP then maybe learn the fundamentals later). That shows dedication.

I also remember at one point having a conversation with him about the details of JavaScript’s prototypal inheritance. This is an example of a “deep dive” that I mentioned. After a bit of research and experimentation, he had a better understanding of the topic than the average mid-level JavaScript developer.

2. Demonstrate Independence

I think it’s important to demonstrate self-management skills, like the ability to work and learn independently. It shows that you’re capable of being productive even when the mentorship from other engineers is lacklustre (and it almost always is).

Personal projects are a good way to do this. The bigger and more polished they are, the better. The ideal personal project is one that you have shipped, and can be used by real users.

I know someone who started his transition from his previous career by taking solo software development courses online — not just following free tutorials, but actually completing whole courses — while still working his full-time job. That little PDF certificate you get at the end might not feel very impressive, but it does show that you can get things done by yourself. This is already a step further than a lot of aspiring engineers take.

But you don’t want to appear too independent, because you also need to…

3. Demonstrate Hunger To Incorporate Feedback

Demonstrate that you seek and incorporate constructive criticism, e.g.

I couldn’t fix a bug after spending a full day on it, so I asked my mentor what I was doing wrong. She said that the way I was debugging isn’t very effective, and she showed me how she would debug it. I took some notes about her debugging tactics and I’ve been using them ever since.

This shows that you have the motivation to improve your skills, and that you’re not paralysed by perfectionism or fear of embarrassment.

Junior roles are usually “up or out”, meaning that the role is temporary, and you can’t stay in it forever. Your employer will be expecting you to eventually reach the skill level of the other engineers you’re working with, so show them that you are keen for whatever mentorship you can get, and that you are going to absorb everything you can from it.

4. Present Yourself As Loyal

I want to preface this by saying that employers often benefit from instilling and then exploiting an unreciprocated sense of loyalty in employees. I’m not claiming that being loyal to a company is in your best interest.

However, some employers are concerned about not getting a suitable return on their junior “investments” due to “disloyalty”. Why? Because there is a stark difference between hiring for junior roles and hiring for non-junior roles. When you’re trying to get your first job, you’re competing against a lot of other hopeful applicants. Salaries are usually low, because if you want more money then there are 200 other applicants to choose from. But once you become proficient and have a couple of years of professional experience, suddenly you’re the belle of the ball. Good, experienced engineers are hard to find, and that usually translates into much higher salaries. So when a junior gets promoted to mid-level and gets a “huge” 10% raise, they might look at mid-level roles elsewhere and realise they can get a 30% raise by switching jobs. Certain kinds of employers do not like this.

So when you’re interviewing for a junior position, it can’t hurt to drop things like “I’m looking for a job I can grow into for at least the next four years or so”, or “I know that hiring a junior is an investment, and I look forward to improving my skills and contributing back to the business”, or something like that — you get the idea.