A couple things conspired for me to write this post. First, I was browsing the cscareerquestions subreddit and seeing some variation of "How Do I get Hired as a Software Engineer?" question over and over again. Second, I've been helping a family friend and recent Computer Science graduate try to get his first Software Engineering job and I find myself giving similar advice for both. So, rather than continue to copy/paste my advice all over Reddit, I thought I'd try to consolidate some of my thoughts into a blog post. The answer to "How do I get Hired as a Software Engineer?" depends on what type of company you are targeting.
So we can better understand the range of talent, let's first describe a few archetypes.
Top Tier Engineer
- graduated from Berkeley, MIT, Stanford, Carnegie Mellon, etc. with a CS or EE degree
- multiple internships at FAANG companies before graduation
- can do LeetCode exercises in their sleep
- willing to relocate to a Tier 1 city (Bay Area, New York)
- exposed to large scaling challenges
- maybe a CS/EE degree, maybe self taught
- maybe took an opportunistic role in something Tech adjacent (IT, Data Science, Database administrator, Wordpress plugin development, etc.)
- works in a less popular language/framework (as defined by what is used in the Bay Area)
Please note that these archetypes are not binary. Some of the smartest Engineers I've ever met had no CS degree and didn't attend a top tier school.
A not-so-obvious problem then if you didn't attend a top university or intern at the best companies is that Common Engineers are less likely to be exposed to the same type of rich and complicated engineering problems as Top Tier Engineers. The Engineer that interned at Netflix and worked on a highly distributed, mission critical set of API's, has worked on higher stakes software than most Common Engineers before they've even graduated. Note: It's worth pointing out that this dynamic is rapidly changing as the Tech community increasingly embraces remote work.
So, how you do you get hired as a Common Engineer with limited work experience? You need to stand out. To catch the eye of a hiring manager you have to go above and beyond what your peers are doing. Here are a few ideas that always impressed me when I interviewed people.
Write a Blog
A small portion of your job as a Software Engineer is actually programming; the vast majority is documenting, designing, planning, negotiating scope, status updates, and the like. Demonstrating that you can communicate an idea clearly will set you apart from other candidates.
Go to Medium and start a blog; it's free. For every interview, side project, or script you author, write a blog post on it. Don't over think it. Introduce the problem, describe how you solved it, and wrap it up by describing how you could have or plan to improve upon it. Include code samples. Share liberally (LinkedIn, HackerNews, etc.) and include a link on your LinkedIn or resume. Go into your interviews ready to discuss in depth.
Down the road if you want to export your posts from Medium and create your own blog from scratch, this can be a good exercise. It will force you to become familiar with Content Management, databases, DNS, caching, and more.
Contribute to Open Source
Pick an open source project that you use, or are interested in using, and simply start contributing. Go to Github, look at their Issues, and take a stab at fixing bugs. Offer to write or fix typos in the documentation. Pair this strategy with the blogging strategy and start writing posts on how you fixed bugs in the project.
If you are too intimidated to write code or fix bugs, try writing a plugin for a popular framework: Wordpress, Ghost, Laravel, Ruby on Rails. Even if you fail and your code never see the light of day, write about it! You have likely learned things and hiring manages love to see humble people who know how to fail and grow from it.
A neat way to get some work experience is to do some contracting. In between interviews you might as well be getting some work experience and earning a few bucks. There are dozens of places for finding contract work. This Google search should get you started.
When you talk to clients, he honest and humble about your limitations. Work at a discounted rate in return for being granted some grace to learn on the job. Don't over think the accounting. It's simple 1099 income that can be sorted out by any competent accountant.
Attend some networking events for Tech, Startup, and Software people; Eventbrite and Meetup are great places to search for these. There's usually snacks, lightning talks, and networking time. Again, don't over think it. Prioritize having 1-3 deep conversations rather than trying to meeting everyone in the room.
Eventually you can combine this strategy with the blogging strategy and volunteer to give a lightning talk. Transform one of your blog posts by massaging the content into your favorite presentation software. People will flock to ask you questions.
If you don't already have a job, mention to everyone you meet that you're between jobs and looking.
Start a side project: website, app, browser plugin, etc. Combine this with the Blogging and Networking strategies. Share liberally and link them in your resume/LinkedIn.
If you are like me and you didn't fit into the Top Tier archetype, you will need to take a non-traditional path. The above strategies helped me hack my way into a well known (but still non-FAANG) Bay Area tech company and do pretty well for myself and my family. If you are looking for more in-depth guidance on how to get hired, I offer paid coaching for a limited number of people. More information can be found on my Coaching page.