My advice to the new generation of software engineers
The job market is tough for junior engineers right now, and many companies have drastically reduced hiring for these roles. Some claim this is due to AI, which still needs someone to operate it. Others blame outsourcing, a practice that's been part of the industry since, well, forever.
But the truth is, junior engineers have never had it easy. When I first started applying, I had seven years of experience writing software as a hobby and still struggled to get an interview.
It wasn't until I was on the other side of the table, hiring juniors myself, that I finally understood what I had been doing wrong.
But why has the industry stopped hiring juniors?
Ironically, the current situation is worse for juniors because, just a few years ago, things were too easy for everyone. Let's rewind to the COVID era.
Governments initiated a ZIRP (Zero-Interest-Rate Policy), meaning "safe investments" like bonds became less attractive. Investors with a lot of cash lying around needed another avenue to generate returns. As a result, tech startups became a huge target for investment.
Also, during COVID, people needed to digitize their processes. Tools like Zoom, which were rarely used in person, suddenly became multibillion-dollar companies.
And, with more people at home, industries like advertising, entertainment, and gaming also saw a massive infusion of cash.
These factors caused companies to hire like crazy, causing a shortage of software engineers.
With few senior engineers available, the high tide raised all the boats, and companies started poaching engineers from each other, including juniors. Recruiters were reaching even for boot camp graduates. I had a friend who was being paid and had a job offer lined up if he attended a boot camp.
However, the hiring frenzy created a long-term problem for juniors.
Everyone realized they were losing their junior engineers to other companies. Since juniors require training and would quickly get an offer elsewhere as “Senior" and leave anyway, companies stopped hiring them.
With the interest rates up, our industry is in a downturn (unless you slap “AI” in your product). I still believe juniors will make a comeback. The core principles of breaking into this industry haven't changed, and the demand for software engineers still exists.
So, how do you do that when the odds are stacked against you?
Stand out or Wash out
Even before COVID, many computer science graduates left the industry after getting their degrees. The problem was that many of them focused only on getting good grades and forgot about the actual craft of programming.
Imagine yourself as an employer reading resumes. What would set a candidate apart: their GPA or the fact that they worked on live projects that people are actually using?
I worked at a company that hired many juniors. When we reviewed their resumes, they mostly fell into two buckets, with a very imbalanced split:
95% of resumes just listed a bootcamp certificate or a college GPA. The rest of the space was filled with fun facts, big headshots, and flashy modern designs.
The other 5% listed side projects, college research assistant work, public GitHub repos, Jupyter notebooks, or personal websites.
We only interviewed candidates from that 5% bucket. We knew there were capable people with high potential in the 95% pile, but like most companies, we didn't have the budget or time to interview everyone.
Getting into the 5% Bucket
It used to be that you got the job, and then you got the experience. Now, it's the other way around.
If you're in college, you're in the perfect place to build connections and find opportunities, but very few students take advantage of them. Don't wait until your final semester or when you desperately need an internship to start thinking about your career.
Unless you plan to be a researcher and pursue a master's degree, college is primarily a launchpad for your employment prospects. It's also a chance to taste different areas of computer science. Most bootcamp grads end up as mobile, front-end, or back-end engineers, but in college, you can explore other segments like working with embedded devices, firmware, or even game development.
While you're there, find other students interested in building cool stuff. Many of the biggest tech unicorns were founded by people who met in college and shared a passion. You can also pursue research opportunities with professors. You'll learn a ton, and some have valuable industry contacts who can provide strong referrals.
If you're not in college, you can start your career by doing "odd jobs" instead of only pursuing full-time employment. For example, try creating a startup. Even if the idea is bad, it's the fastest way to learn.
Freelancing is one possibility, like doing a product for that friend-of-a-friend who owns a business. This path isn't for everyone, though. After a while, you might spend more time on business and negotiation than on becoming a better coder. Those are important skills, but they can get boring if your passion is the code itself.
Another option, if you're in a country where college is cheap or free, is to go to college and apply the advice I mentioned earlier. That's what I did, I knew how to code, but wanted to learn more.
The most important thing is to keep making things and sharing them. It doesn't need to be a viable business or make a single cent. It can just be something you find helpful that might be useful to others, too.
Even when you "fail," you meet many new people. Even silly projects can lead to amazing things. I enjoy making scrapers, so back when Pokémon Go was at its peak, I built a map for my city.
One of my first users was the CTO of one of the biggest companies in my city, who encouraged me to apply to his company.
If you do enough of that, your resume will eventually cross the 95%/5% gap, and people will start calling you for interviews.
These "odd jobs" are career-defining. You will be forced to learn about optimization, caching, Redis, N+1 queries, microservices, and DevOps. You can also drop their links in your resume.
So, after a while, you will start to get interviews! Which is only half the battle.
You Will Flop Your First Interviews
Interviewing is a skill that has almost nothing to do with your actual skill as a programmer, but LeetCode-style problems aren't going away. You need to read at least the *Cracking the Coding Interview*, even if you aren't aiming for a FAANG job.
And even after you've read it, prepare to flop a few interviews. Remember that CTO who invited me to interview? I totally blew it. They asked me how I would design a database system using the Windows filesystem and folders. I basically told them the idea was silly. "Why would you create a production database with TXT files on Windows? If you need a NoSQL-style system, why not use an actual RDBMS and avoid the Windows overhead?" That's exactly how their system was built, and they didn't appreciate my candidness.
You will make mistakes in your first interviews. That's fine. It's how you learn to navigate the corporate world. You'll learn what you can say and, more importantly, what you can't. In the end, despite no one saying so, most interviewers aren't looking for the best candidate. They're more concerned with avoiding hiring the worst ones.
Once you land that first job offer and accumulate years of real-world experience, finding the next job gets easier. (It's never easy, of course, unless you have great connections).
One final piece of advice: don't focus on money too early in your career. Career growth is way more important. Joining a large enterprise might offer more job security, but a startup often gives you more opportunities to shine and get promoted faster.