Note: The views and opinions expressed in this article are those of the author and do not
necessarily reflect the official policy or position of Scratch.
Other note: There are a few referral links for Hired and Triplebyte. Feel free to just go to the site if you don’t like going through referrals, but we both get free money if you end up getting a job on the platform 🙂
Your career is a big deal, no matter how you think about it. You spend about 35% of your waking hours (not including the commuting time and all the logistical stuff surrounding work) working. You’ll spend more time with your company, your boss, and your co-workers than you do with your best friend, spouse, or family. Your career is also your livelihood. Whereas some people can work leisurely hours with six-figure salaries, some people struggle with mid five-figure ones working overtime week after week.
With something as important as your career, it’s worth investing time into maximizing your opportunities. One of the highest leverage things you can do is to figure out how you can put yourself in a place where you’re happy and can grow.
I’m a relatively inexperienced engineer, so I can only speak about the experiences I’ve had so far. But my lack of experienced hasn’t stopped me from systematizing various verticals of my life nor doing pretty well in my career so far. So I will lay out how I approached my last job hunt.
Although I believe my advice applies broadly to most new grads and junior engineers, I understand that there are advice and observations that may not apply to you. Just to lay out my cards upfront and give you chance for bias correction, here was my background before my job hunt.
- UC Berkeley 2016 Graduate with 3.6 GPA
- Experience interning at Lexity, Yahoo, and Pinterest
- Worked at Reddit for 2 years on ad-related technologies
- Live in Berkeley
Here’s my LinkedIn.
Time Commitment and Scheduling
One of the most important prerequisites to get right is figuring out the logistics of your interviewing schedule. Interviews take time, and doing enough interviews to have a healthy amount of options of table takes considerable time. Finding my 2nd internship in my career took approximately 120 hours spanning 9 weeks. My recent job move took approximately 110 hours spanning 7 weeks. It’s a big time commitment to do recruiting right, and it’s going to be worth every hour of your time to get yourself an awesome job. At least 50 hours+ of work should be the bare minimum of due diligence I think new grads and junior devs should put in.
Most interviews these days are:
1 recruiter screen (1 hr)
0-1 take home assignment (3 – 6 Hrs)
1-2 technical phone screens (1 – 2 Hrs)
1 full day onsite (8 Hrs)
= 13 – 17 hrs/company
Not only that, there are some preliminary exercises and research that you are going to want to do:
- Values reflection (2 – 5 hrs)
- Company research and lead generation (5 – 10 Hrs)
- Interview practice (15 hrs +)
So you have to figure out how you’re going to dig up 50-120 hours of time in your current schedule. For many of you, you’ll be in school, which offers some flexibility with phone screens and onsites. But some of you have full time jobs, in which it is much harder to schedule and coordinate recruiting calls.
Some questions you might want to address when thinking about where to find time to interview:
- How much can my academics suffer in order to find a good job?
- Am I taking on too much school work this semester such that I cannot put into time into recruiting? Should I drop some classes?
- Am I doing too many extra curriculars that will distract me from spending time recruiting?
- How am I going to take days off for onsites?
- Should I quit my job to recruit full time?
- You don’t have to worry about scheduling
- You can concentrate full-time on recruiting. Trust me, you’re going to get busy
- You’ll have more clarity when deciding
- You don’t have to keep things undercover from your existing boss
- You don’t get paid
- You have to maintain your current work responsibilities while recruiting
- You are considering staying at your current company as an option
- Should I tell my current manager that I’m recruiting? This was one of the most emotionally draining decisions I’ve had to make. In a small-sized poll amongst my friends, 70% of my friends say you should wait until you have an offer to tell your manager, the other 30% thinks I should tell my manager out of respect for your manager.
- How will I be able to take time off for onsites? Ideally you’ll be able to do at least 3 – 5 onsites for your next role to have a healthy number of options on the table.
However you decide to make the time to do your recruiting, it’s important to get that set aside as early as possible. Now that you have time set aside you’ll understand approximately when you’ll have a job lined up. With due diligence, you can reasonably expect something to happen within 8 weeks.
Scheduling is a bit of an art. There are two general considerations when it comes to scheduling — how much do you like the company and how long each company interview process takes.
With preference ranking, you want to backload companies you’re most interested in towards the later stages of your interviewing season. You’ll naturally get better as you start interviewing, which means you’ll be closer to peak performance right when you’re talking to companies that really interest you.
If you want to know how long the interviewing circuit takes at each company, Glassdoor has interview reviews that will give you good sense of how long the whole process takes. You want to line up all your onsites as closely together as possible, since it lines up your offers around the same time and is slightly easier logistically to handle. The coordination also helps you move fast and avoid exploding offers. My interview experience so far has been that even though Google and Facebook are great places to work (and therefore should be backloaded for some people), their interview process can sometimes take multiple weeks. Some companies didn’t even get back to me when I accepted my most recent offer.
Beggars can’t be choosers, but thankfully it’s an engineer’s market. If you don’t think you’re in a position to choose, make sure you exhaust all the resources listed in the “Recruiting Skills” section to make yourself a top-tiered candidate. You want to market yourself as best as you can.
I somewhat regret not going through this Work Values exercise when choosing my first full time job. I never realized how important certain qualities were until I spent some time reflecting on it (and some experience living out my preferences).
For a sample model and writeup of ranked values here’s the one I wrote for my previous job search. I highly suggest reading the example doc, as some of the values on there were only discovered when I talked to other peers about what they look for. I didn’t realize I had some criteria until I had polled other friends.
Another consideration you probably want to nail down in your doc is exactly what you want to learn. “Learning a lot” is not a meaningful objective as your learning goals will be entirely shaped by business needs, which often ends up in some weird, esoteric crannies. Do you want to do front-end, backend, machine learning, devops, product management, or something else entirely? If you leave those to chance, you might end up going down a career path that you’re not happy with. If you’re unsure, it’s also worth noting and trying to find jobs that resolve those questions as quickly as you can (e.g. working at startup to try many things, joining a rotational program, etc).
There are a few write-ups that evaluate opportunities based mostly on business success. I personally like this one.
Lead generation is knowing what great companies exist out there. I think the classic list to scrape is Wealthfront’s Career Launching Companies List. I think their evaluation criteria overlaps a lot with some of the values you seek in a company. It’s worth looking through all the companies, understanding what value their deliver, and what their engineering culture is like.
If you’re still in school, asking your respected peers is also a great way to find interesting companies to join. Seeing where all the 10% of graduates join is a good proxy for know which companies are sought after.
Angelist also has search criteria for you to find companies that match your interests. They’re much more focused on smaller companies and startups though.
I’ve also scraped top VC firms to see what companies they’re funding. Andreessen Horowitz, Sequoia, and Kleiner Perkins Caufield Byers (KPCB) are great places to start scouting companies.
If you’re looking for smaller companies (think <50 people), here’s my favorite technique for finding small startups to join: Go to LinkedIn, sign up for a $70/month premium membership (you’re only going to have it for a month or so), and then go to this custom search query I created. Although crude, it’s a search query that scouts out where all the smart people in the industry are working, filtering out all the trendy, big players. “Smart people” here being defined by people: 1. who attended a top tier CS school and 2. who worked a trendy company before. I found some strong candidates for startups to join by scouring the search results.
Just because I know you’re lazy and probably not going to do it, and because it’s pretty easy for me to do publicize it, here’s my lead generation spreadsheet. YOUR SITUATION IS NOT THE SAME AS MINE. DO YOUR OWN RESEARCH.
After you’ve generate more leads than you can handle in your schedule, you’ll need to start paring down the list. I found Glassdoor reviews to be a great site for getting a peek at company culture. If there are any red flags that stick out there, you can feel comfortable removing them from your lead generation spreadsheet.
I found most of the signal that comes from preliminary research here to be very noisy. For example, it’s very hard to evaluate engineering culture by reading a company’s website, or understand how viable their business model is without someone internal showing you the numbers. Most of the information you’ll extract will actually be from the interview, but getting a sense of the company here is important to weed out any companies that have some immediate red flags.
Finding the right channels to getting in touch with companies is a high leverage activity to maximize your chances of getting hired. Some of these channels also double as a lead generation tool too, so I would recommend jumping into some of these early.
Here are the company sources from the most to least likely to land you a job.
- Hiring Platforms/Talent Portals
- Head hunters/Recruiters
- Cold email
- Applying online
Referrals are probably your best bet to getting an interview at a company. A cold referral from someone whom you’ve met once at a party is still better than most of the other channels on the list.
You can dig up referrals in surprisingly places. Searching on your LinkedIn and finding nearby connections is a great start. Otherwise even consider getting referred to places that you’re not super interested in. Sometimes your friends can see a valuable opportunity that you’re missing.
Triplebyte deserves its own mention because of how pleasant and comprehensive I found the interview to be. Triplebyte is a hiring platform that acts as a gatekeeper to a bunch of other great companies. Triplebyte will give a comprehensive interview to you and (if you pass the interview) will be your promoter and introduce you to other companies. You skip all phone interviews onwards and go straight to the onsite. They have scheduled calls with me that asked me about what I look for in a company and matched me with companies they thought would fit my preferences.
Triplebyte is a lot harder of an interview than most company phone screens (I think the statistic is that only 15% of applicants pass), so I would suggest acquiring some practice before going on Triplebyte. However, the company matching process can take some time so I wouldn’t delay scheduling your interview too late into your interview schedule. Scheduling your Triplebyte interview approximately 2.5 – 3 weeks before your expected onsites is most ideal.
Hiring Platforms/Talent Portal
Hiring platforms like Hired or AngelList’s A-List are a great way to increase your presence in the job market. Think of these platforms as scalable ways to get your resume out there. I would do the due diligence of comprehensively filling out each profile to maximize reach.
A hidden gem is that most VC’s have talent portals too. Greylock has a talent network for both students and full time engineers. I know A16Z has one too, but requires some networking to get in touch with their recruiters. Literally search “[VC firm] talent” and try to join all the hiring platforms you can, either by applying online, reaching out to a recruiter there on LinkedIn, or attending their workshops/events.
Headhunters and recruiters who act as a middleman can be great ways to get in touch with companies. Although I will say that 50 – 70% of these recruiters are a waste of your time, I’ve worked with a select few who have been phenomenal at matching me with companies I liked.
Next time you receive a pesky email, I would suggest responding to the recruiter. My rule of thumb when dealing with recruiters is that if I ever felt like they aren’t listening to what I’m looking for, but instead pushing their clients on me, I would immediately drop them.
LinkedIn is most likely going to be your largest source of incoming interview requests. There are going to be good requests and bad requests, but the most important thing for you to do right now is to go to LinkedIn’s career interests setting page, and check that you are indeed looking for a job. This switch will signal a miniature beacon to all the recruiters that you are indeed available, and since freshly available talent generally doesn’t stay in the market too long, there will be a lot of emails.
If there’s a company you’re particularly interested in and they’re not in any of the channels above, it’s worth writing an email to a hiring manager to signal your interest. It helps to tailor your email such that it doesn’t sound like a shotgun email.
The very last resort. You should only use this option if you’ve exhausted all other options, don’t have a particularly strong interest, or don’t have enough time to write a cold email. Beware, response rates could be anywhere from 5 – 20%.
Feel free to employ more than one channel for large companies. Sometimes you’ll slip through the cracks in one channel but get picked up in another. I’ve applied to companies online and never heard back from them until I reached out to them through a different channel.
The bulwark of the literature on the internet covers this section, so I’ll try to avoid reinventing the wheel here. Personally, I like scraping through Hacker News for good articles on how to prepare for the interview. I also found Triplebyte’s blog post particularly helpful, but only if you follow through with their prescribed advice.
One thing specific to more junior/new grad developers is to be able to sell your potential. You don’t have many marketable assets besides convincing companies of your potential upsides. You want to convince companies that you’re going to grow into an amazing engineer in a few years. Why is this particularly attractive to companies? Let’s explore this topic by viewing recruiting from a company’s perspective.
You’re a startup, probably 200 – 300 people large. Your system was built by your cofounders back in 2010 when PHP was still a thing and jQuery was considered cutting edge. Now you can no longer rely on junior engineers to grow and mature your product, you need engineers who have experience building scalable and mature applications.
But where are you going to find these people? Great engineers enter the job market once. After companies realize how awesome an engineer is, they will pay out their noses to keep them. And if these engineers are unhappy with their jobs, they’ll have known people at other companies by now to vouch for them and hand them a job. They never have to do a coding challenge ever again.
So these “10x engineers” probably won’t leave their current positions unless they’re paid large sums of money like Google or Facebook. You’re a startup, so you’re obviously strapped for cash. So what are you going to do to attract senior engineers?
This is a difficult and endemic problem for companies to solve. Every tech company can use more senior engineers, but not every tech company can make use of more junior engineers. Junior engineers can do take specs and implement features on a node stack, but for most reputable companies these days, you need to solve harder technical problems, like designing and architecting a CI build system or transitioning the company into using a new language. So junior engineers aren’t as urgent, scarce, or needed in most companies.
However, if you know that a junior person, with sufficient training, will become an awesome, senior engineer, then of course you’re going to hire them. It’s cheaper than hiring a senior engineer straight out of the job market. It’s a longer term investment, but there are enough success stories passed around the Valley for companies to heavily invest in growing junior engineers.
So when interviewing, be very clear that you’re eager to grow in this company and eager to learn as much as you can. This will put you further ahead than other candidates who just want something to pay the rent. You can lead a horse to the water, but you cannot make it drink. Be the thirsty horse.
Most new grads and junior engineers forget that interviews are also an opportunity for you to learn about the company. The terrible thing is that all companies will paint themselves in the most positive lights. They’re not strictly lying either. Some people genuinely like working for the companies, but that doesn’t mean it’s a good place for you. If you have done your exercise figuring out what you’re looking for in your next gig, now’s a good time to brainstorm of ways to accurately extract accurate information of what you want, while avoiding your typical company spiels.
As a precursor to good journalism skills (the skill of extracting accurate information in an interview), I recommend reading “Seven Lessons I Learned from My Failure of My First Startup — Dinnr” as a useful anecdote for understanding how customers will (unknowingly) lie to you. A useful antidote I’ve found around this is The Mom Test by Rob Fitzpatrick. From the book you’ll get a better sense of how to get the information you actually want.
Some general principles:
Get the facts
Opt for finding out facts over interpretation. When you give people the opportunity to interpret their own experiences, they will generally paint this stories in a positive light. You can avoid this by asking specific questions that leave no room for interpretation.
Example: I want to know about the health of the business
Bad: “How is your company doing?”
This promotes storytelling and painting. People might even throw in cherry-picked numbers to make things sound factual.
Good: “How much has your revenue grown in the past year?”
This is much harder to fake, and if they have legitimate reasons why it’s not as bright, they’ll tell it to you. If they dodge your question, you can make a mental note in the back of your head.
Avoid prompting questions
A litmus test of whether or not you’re asking a good question is ask yourself whether it’s socially acceptable to give different answers. If there’s only one “right” answer, then the company will say that, and then fill in the rest with confirmatory details.
Example: I want to know whether people are collaborative when projects span across multiple teams.
Bad: “Do you collaborate when tackling new challenging solutions?”
Who’s going to say “No, we don’t collaborate”? Asking the question prompts the company to sell you on a highly collaborative story.
Good: “When’s the last time you needed something from another team? What was the process for acquiring their help?”
This follows “Get the facts” without giving your interviewer the hint of what answer you may be looking for. It’s easier for them to honest truthfully than to take a gamble of what you might want to hear.
Know your interviewee
A company that’s great for senior engineers may not be great for junior engineers. When interviewing, I prefer asking junior engineers questions since their situation is more similar to mine than a senior engineer. Some of my favorite questions:
- How long have you been at the company? What are your roles and responsibilities now?
This gives me a sense of how much the engineer has grown this they’ve joined the company. If someone’s been a junior engineer for 3 years and is still doing random feature work, it’s a red flag for me.
- What projects did you work on?
Did they work on projects that would grow their career or did they do mostly shallow work that would stagnate their careers?
- How did you decide which project to work on? Was it your decision?
How much influence did they personally have in deciding their career?
- What kind of help and support have you received from your coworkers?
How much mentorship is this person receiving? Who are they receiving it from?
I consider it a red flag when an eager junior engineer hasn’t taken up significant responsibilities within their first year at a company. Those data points are difficult to obfuscate when companies don’t train their engineers.
Don’t ask questions in public
If you ask questions in public, you’ll risk getting answers that people are willing to answer openly. Questions asked in public will have answers that you can’t take at face value, so opt for 1-1 coffees over group lunches and spend group time gauging team members from a personality level (i.e. do you like them?)
Other general things to note:
- Your manager will be the most important person in influencing your future career. They will be picking projects for you, fighting for your promotions, and managing your team. Make sure you trust them as a human being and make sure they are competent.
- You should be largely wary of companies that rush you to sign an offer before you meet the team. It’s a poor signal that a company doesn’t screen carefully for team culture and it’s too large of a variable for you to handle before signing. Think this through — you will be spending more time with these coworkers than anyone in your life, even your signifiant other or wife. Would you risk marrying someone whom you never met?
Now That You Have a Job Offer…
Dive Deep into Company Evaluation
Once a company is excited to have you potentially join their team, they generally will be very accommodating to any requests you might have. You’ll want to at least meet your future manager in person and possibly interact more with your team members. You want to use this to your advantage and it doubles as a way to buy you more time to complete your other interviews and onsites.
Spend more time reading Glassdoor reviews. If there is any theme that stands out, it’s worth discussing with your future manager about it. For example I’ve had a conversation with a manager about people overworking, and they were able to assuage my fears by telling me how they addressed the problem. You’ll want to suss these issues out before joining.
Go and find out where former employees of that company work now and see if it’s in line with where you want to be in your future career. Did they transition from junior engineers to senior engineers or directors? Did they end up at higher paying jobs or did they end up in career dead ends?
Learn How to Negotiate
Spend some time to learn how to negotiate. As Kalzumeus puts it:
“If I told you I would pay you a hundred thousand dollars if you did five minutes of poetry recital while standing on one foot, would you do it? […] Of course you would. You’d be screamingly stupid not to. In fact, not only would you read poetry, you’d probably take a poetry class to make sure you did it right, or go to the gym to verify ‘Yep, sure enough, I can stand on one foot. Phew. Pass me the Shakespeare.’”
Having the ability to negotiate at this critical time junction could be worth $100,000 over a lifetime, and it takes less than 5 hours to go from inexperienced to being better than 80% of the engineers in the valley. Another thing about negotiating is that it doesn’t have to evoke the image of you bending your recruiter’s thumb backwards while whispering “sign on bonus” in their ear. Having learnt some minimal amount about negotiating, I’ve discovered it to be more about how to communicate your preferences and how avoid diametric payoff functions with the other party. Negotiating works on multiple axes, ranging from work hours to certain stipends to which project/team to be on.
So learn salary negotiation, Hacker News has some good resources. Practice with a friend so you don’t get tripped up, but don’t be upset if nothing materially changed in the end. Having discussed your offer with your recruiter, you minimize future regret of “what could have been.”
Now That You Have a Job…
Your journey’s not over yet! In fact it’s just started. Here are some generic platitudes that everyone knows, but I’m going to reiterate them because I need a natural conclusion to the guide.
Do a Kickass Job
The valley is extremely small and word spreads around of how great an engineer you are. Conversely, if you don’t do a great job people will know about it as well. Every post-grad job I’ve had so far I’ve gotten from previous coworkers who can vouch for my technical competency, and they were all amazing places to be. So live to your potential and do awesome work!
Meet and work with lots of awesome people
The more senior you become, the more you realize how important soft skills like communication are. It really helps if you invest some extra time to befriend people earlier in your job. As you become more senior, your scope of work will grow and you’ll have to work with other teams. Building these connections earlier on will pay dividends down the line.
Good luck. Happy recruiting, and the current company I’m at, Scratch, is hiring to help borrowers change their relationship with debt 😉