Becoming an effective software engineer is hard, but you’ve already done the work. You’ve studied for years, slogging through programming assignments and fighting with compilers in school. You’ve continued your education on your own time, building web apps, setting up your own Raspberry Pi-based plant watering robots, or building other admirable side projects I can’t even envision. You read the articles and comments on hacker news and /r/programming. And it’s paid off: you have a job working as a software engineer.
You’re doing alright.
But you’re not happy.
Your compensation is market rate, but you know other people are earning more money and working on more interesting projects, projects that you could do. This isn’t the life for which you stayed up so late exploring the nature of multiple dispatch or function currying! This isn’t what you were after when you read that book about dependency injection!
Fortunately, though, there are companies out there that desperately need people with your skills, companies which are eager to hire you and provide you with the respect, autonomy, and compensation you’re after. There are jobs where you can make a real difference instead of refactoring the authentication provider again!
So, how do you get those jobs?
Step 0: Know your stuff!
You already have this covered. You’ve got the degree and the job experience. If you’re not confident that you know your stuff, that’s okay! Most of us struggle with impostor syndrome.
Step 1: Show your stuff!
Really, I mean “know how to show your stuff,” but I think that’s clumsier wording and doesn’t scan with the three-word step pattern established above. The unfortunate reality is that being able to succeed in a job isn’t totally sufficient to being able to get that job; technical interviews are optimized around reducing false negatives, and so we as an industry have invented an interview format that all but demands unique preparation in addition to baseline competency.
Remember that Cracking the Coding Interview book from above? Purchase it if you haven’t already, this time for the interview advice. Read through it, and try to work through the problems as it advises; that means sometimes putting the computer away and using a pen and paper to replicate the whiteboarding experience.
As a supplement to the book, I used HackerRank’s Cracking the Coding Interview track during my last job search. The links are dead now, but sites like HackerRank, CodeSignal, and LeetCode offer an excellent means to practice and level up your skills for the type of programming questions that you’ll see in interviews.
Step 2: Practice interviews!
Don’t jump straight into interviews with your dream company, unless you have an advocate within the organization, a friend or former coworker who can vouch for your abilities. Instead, practice mock interviews on sites like CS Career Hackers and interviewing.io, which will help you overcome your nervousness and learn to be a better interview candidate.
It can still be a little unsettling to switch from mock interviews with strangers on the internet or friends who can’t offer you a job in reality and start interviewing with real companies that matter, so I also recommend applying for some “backup jobs” early on in your job search. You shouldn’t waste the recruiters’ or companies’ time by flying out for a job you have no intention of taking, but there’s nothing wrong with exploring a less-appealing option. Who knows, you might find out that one of those “backup” jobs ends up being more appealing than you thought!
Consider using LinkedIn to reach out to recruiters or engineers at companies where you’d like to work, too. You don’t have to wait for them to contact you, or go through the traditional application process on the web site; it’s often better to reach out and humanize yourself early on in the process.
Step 3: Triplebyte!
I realize that this blog post probably seems like a thinly-veiled Triplebyte ad, but it’s not. It’s a bald-faced request that you use my Triplebyte referral link. That’s for two reasons: in the first place, I’d be a fool to recommend Triplebyte publicly and leave the value of any referrals on the table, but more importantly Triplebyte is incredibly valuable to both job seekers and employers. I cannot stress this enough. If you take nothing else away from this post, even if you don’t use my referral link, you should use Triplebyte as part of your job search.
Not only does Triplebyte vet candidates with a very thorough interview, providing a strong filter to employers, they also provide a ton of validation to those candidates, which makes interviewing much easier. Every interview I booked through Triplebyte during my last job search started out with the assumption that I knew what I was doing, and in all but one case it felt like the interviewers were looking for reasons to say “yes,” whereas in past job searches I’ve often felt that they were looking for reasons to say “no.”
Much like the interview with your prospective dream company, I don’t recommend jumping straight into the Triplebyte interview. It’s a deep, rigorous interview that can cover a wide variety of topics. You should prepare with the “Cracking the Coding Interview” book and as many other resources as possible.
Choosing a company to work for
If you’re working with Triplebyte, they’ll be a huge help choosing the companies where their data suggests you’ll be successful and happy. But there might be as many as a dozen such companies on their list; moreover, Triplebyte doesn’t have the entire universe of companies in their portfolio, and most of you won’t end up using them despite my advice anyway.
So you need to know how to identify promising companies which will best serve the interests of your career and your quality of life. I think you should work at as early-stage a startup as possible; favor seed-stage and series A companies, if you can.
Small companies are often perceived as risky, which is a fair assessment if you’re an investor, but means almost nothing as an employee. Having a startup on your resume is more valuable than a stint at a successful large company, and you can’t have a stint at a successful early-stage startup without taking the risk of joining a startup.
The equity portion of your compensation will be harder to value since there’s a risk that the business might not work out, but base salaries are at market rates, because candidates have grown wise to the reality of startup equity. More importantly, the opportunities for personal growth are greater and you have a better chance of making a positive impact on the company’s nascent culture.
If that all sounds appealing to you, or if you found value in the advice above or just like to see what we have to offer, consider applying at Juniper Square. We’re a fast-growing SaaS company in the hugely underserved market for private equity fund management, providing sorely needed transparency, convenience and accuracy in a $4 trillion space.
Other posts about this stuff
Get that job at Google by Steve Yegge (2008, but a classic)
Get that job at Grab by Steve Yegge (2018, not a classic yet but maybe later)
Coding interview cheatsheet by Yangshun Tay (HN thread, links to the cheatsheet itself)
Startup interviewing is f***ed by Zach Holman