Your First Software Engineering Job: Six Steps to Six Figures
Ah, summertime. The air is heavy with the sweet scent of tens of thousands of somewhat-qualified Computer Science grads, unceremoniously dumped into the wider world. If you’re among them, or a self-taught programmer that’s competing with them for jobs, you probably feel like you’re sitting pretty. I have good news and bad news: It’s a hot market, but you’ll probably tackle the job search wrong, and your degree has mostly focused on irrelevant skills.
HackCollege Guide: How to Become a Computer Programmer
As a co-founder of Hack Reactor, a finishing school for newbie developers, I’m responsible for the most recent class’s six-figure average salary. Here’s what I tell our grads:
Have a Personal Site
Put yourself in the mindset of Bob, the person evaluating your job application. Bob is looking at a stack of undistinguished resumes with no related work experience. He’s supposed to pick one of them to receive many months of job training from his company. He’s got very, very little information with which to make this decision.
Help Bob out by having a personal site that makes him like you and tells him what he needs to know. He’ll be ten times likelier to remember your resume than the others in that pile. Your personal site should include the following:
- A two-sentence summary of yourself. This summary should make you sound awesome, competent, and likable.
- At least two technical essays/blog posts. They shouldn’t take more than an hour or two each.
- Links to your other web presences, like Twitter and GitHub.
Build Your Code Portfolio
It looks great if you have a GitHub profile that establishes that you’re able to do this work. At Hack Reactor, we make sure our grads have 20+ practice/learning repos and 1-2 very serious projects/open source contributions. It takes a long time to get there, but you can easily accomplish all of the crucial points below in a single day:
- Push all code that you’ve ever written on to GitHub. Don’t be embarrassed of any of it.
- Pick one or two marquee projects, and do the following: Write a readme that describes the project, the tech stack, the challenges you faced, and instructions for running the code.
- Clean up the code a little bit. Make sure you’re conforming to a style guide and that you’ve removed unused code. Ask an expert to give you a review.
- Ask a friend to star the project. This will ensure that it appears at the top of your list of repositories when someone is reviewing your profile.
Follow a System
The default job application process involves wasting about two-thirds of your time paging through stuff and ambiently reading somewhat-relevant material that you won’t act upon. The key to optimal outcomes is to time-box your time per application and monitor your own progress, setting daily goals and check-ins to maintain accountability. You want a process that looks roughly like this:
- Page through your job list (e.g. Craigslist, Dice.com, etc), spending one minute per company assessing your fit for each available role. Of every 3-4 you look at, you should probably find one that you deem worthy of applying to. (5 minutes)
- You’ll now be starting a new job application and assembling your materials. It’ll take you a couple of minutes to get the standard stuff together – resume, cover letter template (which you’ll revise below), links, etc. (5 minutes)
- You want to customize your materials, but keep this within tight, tight bounds. You’ll want to reuse most of your cover letter, but customize two sentences: one about the company and what drew you to them, and one about what you can contribute. You should be able to do this in a few minutes. (5 minutes)
Set hourly and daily goals, and monitor them closely. If you notice that you’re reluctant to do this, or that you’re not meeting your goals, start working side-by-side with a friend.
In parallel with sending out applications and setting up interviews, you’ll want to be prepared to ace those tricky technical questions. We highly, highly recommend the book Cracking the Coding Interview.
If you’ve taken the above steps, you’ll find you’re receiving a lot of interest. When you get your first offer, you’ll find a surprising challenge: you might feel like you need to give an answer before your other applications are completed. You can usually make those situations work in your favor. Here’s how:
- Tell the company that’s made an offer that you’ll be able to conclude your job search and give a solid answer by a particular date. Try to give yourself at least a week.
- Tell all other companies that you’re interviewing with that you’re already receiving offers and that you’ve made a commitment to conclude your search by that date. They’ll usually hurry their process up.
Don’t ever accept an offer without negotiating. This is easy for me to say, but if you’re like most people, you’ll feel terrible about doing it. You’ll invent all manner of reasons as to why you shouldn’t negotiate. Don’t listen to yourself. Nobody has ever lost a job offer by asking for more money. There is no possible negative outcome. The company won’t be offended by your offer. (In fact, they probably expected a counterproposal and have deliberately made a too-low offer for that reason.)
It doesn’t have to be complicated — it can be a two-line email. “I love the team and am very excited about this prospect. Can you do X + 10?” The only way to lose this game is to not play.
You’ve set yourself up for success in a nationwide job scramble. Keep your wits about you in the last mile and you’ll do well!
Image: Abstract Machine
This guest post was written by Shawn Drost, co-founder of Hack Reactor, a coding academy for aspiring software engineers.