Landing junior software engineering job in 2023. How to combat the recession, AI, and dense hiring market?

Oleksandr Tryshchenko
11 min readApr 19, 2023
Quick note: while images are generated with AI (Midjourney), the text is fully written by me.

So, let me start straight — the situation is highly unpleasant for you, but if you’re strong and motivated — you CAN still find a job. I interviewed nearly 100 engineers throughout my career. A third of them were juniors, 12 of whom I hired or took into internships. I have been held the idea of summarizing my experience for some time, so here comes the article.

Imagine the situation — you’ve learned some programming, a couple of frameworks, and a bunch of libraries. But your applications either go ghosted, or you get a rejection at some point during the interview process. What’s wrong?

I divided my thoughts into sections. Naturally, there are going to be exceptions from points mentioned in the articles, so please, don’t rush pointing out that “I didn’t do X and still found a job.”

Your value proposition

Currently, software engineers are trying shoes that most of the population have been wearing for a long time. Shoes in which business more-less clearly understands your efforts’ value, pay you X% salary and take (100 — X)% margin. While this is a rough simplification — the idea is that a business wants to spend less than it makes.

Most of Earth’s businesses work like this, but the Western economy has been pretty exciting for some time — it was in a state of cheap cash. National banks were giving loans at the sub-inflation level, which effectively meant that borrowing money was a good deal. Highly affordable loans made investments more attractive, and even profitable businesses were taking loans to boost their growth (and make even more money next year). When cash is pumped into the company without strict commitments on return of investment — it’s pretty easy to “let’s just hire people and let them build things.”

Now we entered a recession, and money got expensive. Western European loans got worse than Eastern European were just three years ago, and subsequently started to count money more than they did before. Every headcount is being challenged, and your hiring manager needs to know why hiring you is better than alternative options.

With increased competition, companies can now choose between folks with random slices of skills and those who can understand WHY they learned specific skills and how to apply them. So even if it’s your first job — it’s better for you to understand what exactly you can offer to the company and how to make the idea of employing you — attractive. Stop thinking of “I can do React” and do more of “I know how to build a small front-end app altogether.” Put accents on it in your CV to indicate the degree of independence you can expect. Having fewer skills but having them helpfully related to each other is much better. This is why your side projects or open-source gigs matter so much for an entry-level position. Having something completed will prove that you can push things to completion and put various Lego bricks together.

Self-sufficiency

You’re starting your career and need active mentorship — that’s okay, good, in fact. However, different junior engineers tend to have vastly different degrees of independence. Let’s imagine two personas: Grzegorz and Malgorzata. Both have the same background (let’s assume both have got a CS degree, and both have tried to build a couple of pet projects before joining the company). But they behave very differently. For example, let’s think about adding a new endpoint using Redux. (Redux is a widespread state machine implementation used for data management in some of the React applications)

Krzyszek is focusing on a ticket. He considers solving a specific issue an ultimate goal and only thinks so much. He looks at and replicates former implementations without investigating how the underlying technology works. He does the job fast and starts working on the next ticket. Something seems slightly broken when doing something similar, and the person gets stuck and pokes around for a day or two. Thereafter he’s reaching out to you.

As an engineer’s mentor, you now have two options: explaining a specific problem in simple terms or explaining the whole Redux. And trust me; it’s more rewarding to invest time straight away.

Now let’s take a look at Malgorzata. She’s started working on a ticket, but he’s not very happy with copy-pasting former code and wants to understand WHY she is doing it this specific way. It makes her start much slower, but she comes to the meeting with you and asks specific questions about Redux. While her counterpart has finished three times more work — she’s just finishing her first ticket. However, after gaining the bigger picture of how everything works, she can take more ambitious pieces of work quicker and outperform Krzyszek in a matter of a few months. By gaining more understanding, she improves her proactive learning and becomes much more self-sufficient over time.

This is very similar to the saying, “Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime.”. This is the situation.

To summarize, try to understand how things work and why they work one way and not another and ask questions.

Critical thinking and ability to do own research

While good mentorship is necessary, your mentor is likely a human too. They have meetings, sick leaves, vacations, etc., and might not be available instantly once you need them. Unless you build an app using rare technologies — you have a vast knowledge base at your fingertips. The ability to navigate through it, effectively find answers, and filter out bad advice from good ones is vital.

While all said below might sound obvious for some of you — trust me, some folks would benefit massively from improving on that. Today you got a highly effective means of searching and tweaking the code from the internet — various generative pre-trained transformers (GPTs), with ChatGPT being one of the most popular ones. Try to reverse-search what you were prompted with, ideally finding a credible data source. With all the downsides, it’s a highly effective way to educate yourself once you develop digital hygiene and critically examine the provided data before taking it as truth.

Distinguishing a piece of high-quality information is a skill that gets better over time, but try to evaluate things you see on the internet into four categories:

  1. Completely wrong / lies
  2. Slightly wrong, but generally okay
  3. Legitimate but imperfect
  4. Good

Once you get 2 and above — iterate on top of the information you obtained until you get a feeling that it’s good. While doing so, you’ll likely learn more about the subject matter, and time investment will repay over time.

Since we’ve touched the ground with AI tools in general, at this point, it’s clear that they boost your productivity significantly. While some companies are abstaining for legal reasons, ignoring AI will put you at a disadvantage compared to people who use it. So instead of being scared of ChatGPT taking over your job — you better learn how to use it effectively. Don’t expect all companies to be willing to hire you as somebody who can do X work without AI. Most rather hire if you can use available tools to be more productive.

I said a lot about AI and searching, but books and articles remain a great way to learn. I had a good experience with some(!) Udemy courses too.

Deliberate time investments

There is a different return on investment for learning various stuff. I was pretty dumb in my early 20s and was brute-forcing my career by learning 10 hours a day everything that felt important. I can proudly claim the ability to build UI with ten frameworks. Nevertheless, I ended up using only half of them at work, so time for learning other ones… wasn’t used in the most effective way possible.

Some fundamental things will have crazy value for your career. I’ll list some examples, but it’s by no means complete:

  • Git. The ability to rebase, stash and cherry-pick will make a ton of difference in your day-to-day work. All git commands fit on one page; you can find git cheatsheets online. Checking how git flow and trunk-based development work would help too.
  • SQL. Whether you’re a back-end engineer or not — learning SQL will repay you a lot on your path. SQL cheatsheet also fits on one page and takes a couple of days to learn on a basic level.
  • HTML, CSS. Just like with SQL — I don’t expect you to be a full-stack. However, only some companies will be happy with you creating a ticket for another team requesting to change a button label.
  • Learn what debugging tools you have for a language of choice. It’s easy to get into the convenience of print/console.log debugging. Investing a day in learning your debugging toolkit would make much difference later.
  • Learn how the code is getting from your local computer to production. You can build some JAMstack apps and deploy them for free on Netlify or GitHub Pages. If you want to go deeper, you can always spin up a Docker container with Jenkins and poke around it.
  • And speaking about Docker. I know it sounds intimidating, and I won’t advise you to go ahead and build your containers. But understanding how to pull and run existing images locally would be very helpful.
  • Learn how to navigate effectively across the codebase. No matter your choice, built-in IDE search, grep, or whatnot. You shouldn’t be scared of finding a function in the 10,000 files codebase or opening a file by its name (cmd/ctrl + P in VSCode).
  • Basic control structures in your language of choice. Writing reduce/filter in JS or array comprehension in Python would save you time doing home assignments and make your code look more professional.
  • Your programming language tooling. Instead of manually formatting your open-source project, you can automate that and spend more time building features.

Algorithms

A lot depends on where you’ll be applying, but plenty of tech companies are going to give you a technical challenge of some sort.

This is something that CS graduates would have an advantage in comparison to self-learners and bootcampers.

I’ll let aside the whole debate if it’s a good idea or not, but it’s clear that the industry isn’t ditching code challenges any time soon. You can dedicate your life to protesting against the system by deliberately limiting the number of companies you can get employed in or just spend a month learning how to merge sort and breadth-first search work.

Most of the companies I’ve encountered aren’t going to give you hard-graded Leetcode challenges, so you can start by getting your feet into the water and getting a basic grip on algorithmic challenges.

Going to actual interviews

You can only pass an interview if you attend.

Most companies don’t respond to you. You’re not alone. To be fair, when I was moving to the Netherlands, my response rate was 57%, and I was applying as a senior engineer with past leadership experience during the hot market.

For juniors, it will likely be sub-10% or even below that. While ignoring people is no good — we have what we have, and let’s find a way to secure interviews.

  • Ask people to refer you instead of applying yourself. There are many reasons for this, but referrals are usually reviewed more thoroughly.
  • If you need someone in the industry to refer you to their company — go to meetups and conferences and do your networking there. Often people get bonuses if their referee is being hired, so don’t feel like you’re asking for a lot.
  • If you live far from any engineering gigs — try helping people online and doing your networking there. Please be mindful of people’s personal space and don’t overdo the persistence part.
  • If you did your research and have a clear idea about your value proposition to the company — don’t hesitate to contact the hiring manager for your position. As such, I don’t get such inquiries often. And those folks who did were well prepared and made a good impression.
  • Tailor CV and cover letter to specific positions. Show the recruiters that you did homework about the company and didn’t just spam 100 places in one day.

In general, doing your homework is an excellent sign. More often than not, I got people saying “Sir” instead of my name and “Your company” instead of the company name, indicating that this message was sent in bulk. CVs with nothing in common with our tech stack didn’t help them either.

While it’s crucial to be persistent with applications — “less is more” also applies here. 10 high-quality daily applications will likely produce more interviews than 100 generic ones.

Being a decent human

I left it to the end, so you’ll have higher odds of remembering this. A massive decision-driving factor is your cultural fit to the company. And while there may be tech companies out there which foster a culture of corporate sharks fighting each other for a piece of bonus — usually the opposite is true. The deal with software engineering is the necessity of multiple engineers to do creative work together. Maintaining a collaborative atmosphere in the team is critical, and the “toxic individualistic hacker dude” character from the movies is unlikely to find a job in the real world.

Couple of words for those who are searching for a job abroad.

If that’s your first job — be sober in evaluating your chances. On a global market, you’ll be facing massive competition. Even during the “good times” when I was hiring remote junior engineers, I got over 200(!) people responding to my post on LinkedIn in a matter of 2 days.

Needless to say, there were bright candidates among them.

Things will get even worse if you expect relocation to happen. Challenges will start with you not meeting the salary threshold for some countries, being a risky investment for the hiring company. You’ll be competing with people who want internships on the local market, and you’ll often be doomed.

Think, why would a company relocate somebody? You need to be either better, perhaps unique, or cheaper. Often both.

With gained experience, your competition will decrease, so don’t give up. If your ultimate goal is to relocate, you’ll increase your odds dramatically by getting some local experience first.

Summary

A bend in the road is not the end of the road… unless you fail to make the turn
- Helen Keller.

--

--