Guide to building side projects, finding companies to apply to, data structures and algorithms and services to help in your journey :)
In a previous article I wrote about the 2 types of software engineering interviews. My point there was to distinguish between the two primary types of interviews you can expect from software engineer hiring managers. There’s the data structures and algorithms approach and there’s the build something or talk about what you’ve built approach. It’s not completely binary and in some interviews you may be asked to do both. There are also system design and behavioral questions to account for.
Technical interviews are hard. Investing in software engineers can be trying. Hiring, employee retention and business costs all factor in to who gets picked. As software engineers we need to know what to expect. Each person is taking their own path to career growth. My intention with listing out these resources is to provide for those navigating the job market terrain and to hold these resources up as a reflection for the industry. These are some study resources that you many find helpful in your journey.
This post is based on an open source GitHub repo maintained here.
Side projects are a great way to test out your skills and try new things in a low to no pressure environment. Sometimes interviewers will be even more interested in your side projects than the work you did at your 9-5 job! If you don’t have any traditional work experience in the tech industry making a web project from scratch is a great way to demonstrate what you’re capable of. Below are a few sites and articles to reference when building a side project:
In the article How to build a startup — without quitting your day job Aytekin Tank, founder of JotForm outlines a few tenants to live by with side projects:
In this post Tanner Christensen outlines How to Talk About Your Side Projects. Snippet from the article: “Talk about your side projects whenever you get a chance”.
If you’d like to dive more into storytelling and strategic narrative I highly recommend following Andy Raskin for tips :)
There doesn’t seem to be any shortcut for learning data structures and algorithms besides grinding it out. The problems are not always easy but the solutions generally do follow defined patterns. Learning the patterns takes a lot of work and practice. My favorite blog posts about the tech interview prep process come from Ali Mir, Software Engineer at Facebook. They’re not long articles; they’re straight to the point without a lot of fluff.
These are some commonly agreed data structures it’s helpful to know going into technical interviews:
These are searching and sorting processes to be aware of in technical software engineering interviews..
Breadth First Search (BFS)
Depth First Search (DFS)
Recursion: JS interview prep: Recursion (has runnable code examples)
Divide and Conquer
Grokking Algorithms - Free book designed to be easy to follow explaining common computer science algorithms.
HackerRank Interview Prep Kit - Curated list of exercises from the HackerRank team organized around key concepts you'll need to know.
Pathrise - Compiled list of guides to help you find a software engineering job.
Coderbyte - Lots of programming challenges, access 10 for free otherwise $30 per month
yangshun/tech-interview-handbook - GitHub repo with helpful non-technical tips. Additionally has section covering Algorithm, Front End and System Design questions
mr-mig/every-programmer-should-know - Don't let the title scare you. This repo covers at a high level things ranging from Career Tips to Data Structures, Security, Architecture and Algorithms. It's a lot but can be helpful to overview concepts and find new things to learn
jwasham/google-interview-university - One man's somewhat crazy task to become a google software engineer. 48k+ stars. I believe he ended up working at Amazon. go figure
30 second interview questions - A list and website of common interview questions you're bound to encounter during tricky JS interviews.
These are some free and paid services dedicated to helping you improve at interviews and in your tech career.
Interview Cake - Interview Cake is a thoroughly documented site on programming interviews and concepts. It can be expensive for the year membership but if you're serious about buckling down to learn the fundamentals can be worth it. They also offer a money-back gaurantee.
Daily Coding Questions - Coding question emailed to you everyday for free. If you want the answer emailed to you the following day it's $8/month.
exercism - Level up your programming skills with 2,629 exercises across 48 languages, and insightful discussion with our dedicated team of welcoming mentors. Exercism is 100% free forever.
codewars - Codewars has thousands of questions generated by the community. You'll never run out of practice problems. They're organized by difficulty, concept and programming language.
codesignal - Really great user interface and user experience. I like the gamification and points system they have going on.
Irfan Baqui: ace coding interviews - get one free problem to practice each week and get the solution next week
interviewing.io - Anonymously practice coding interviews with engineers from prominent tech companies.
Pramp - Real practice with actual engineers. Book a time and practice interviewing with real human beings
LeetCode - Pick from an expanding library of more than 190 questions, code and submit your solution to see if you have solved it correctly.
Coderbyte - Lots of programming challenges, access 10 for free otherwise $30 per month
HackerRank - Very popular platform for practicing coding questions. HackerRank is used by companies to evaluate candidates also
InterviewBit - Practice Coding Interview Questions. Give us time and we get you the job you deserve.
Codility - Become a better programmer. Develop your coding skills with our lessons. Take part in our challenges.
Codility Solutions - One engineer's solutions to the codility.com problem sets.
Testdome - Get certified and prove your knowledge
to potential employers. Score well on one of our public tests, and you will get a free certificate of achievement.
CodeEval - Find out how you rate against top coders. Unlock awesome startup jobs and hacker deals.
Outco.io - 1 month interview prep bootcamp in San Francisco
lukehoban/es6features - Overview of ECMAScript 6 features (21k+ stars)
Hack Reactor Prep - free course and practice problems from Hack Reactor
JS: Interview Algorithm - JS: Interview Algorithms questions and solutions
Efficient data structures for PHP 7 - Medium article about implementing data structures with modern PHP
30-seconds-of-php-code - A curated collection of useful PHP snippets that you can understand in 30 seconds or less.
SOLID Principles in PHP - SOLID represents a series of guidelines that developers can use to, if done well, simplify and clarify their code.
Object Oriented Bootcamp in PHP - covers fundamentals of OOP in PHP, including tricky concepts like difference between Interfaces and Abstract Classes
Khan Academy SQL course - Great course covering SQL principles. Highly recommended.
Udemy MySQL Bootcamp - Course by ex-Galvanize instructor. beginner to expert.
Eloquent Performance Patterns - Learn how to drastically improve the performance of your Laravel applications by pushing more work to the database, all while still using the Eloquent ORM.
Advanced Eloquent - Sure, you've learned the essentials of using Eloquent in your applications, but do you really understand what's going on under the hood?
Git flow - a git workflow that some companies follow to manage their deployments.
Git Game - The git-game is a terminal based game that teaches both new and advances users some pretty cool features of the git scm (source control management) system.
amilajack/reading - list of computer science readings with book pdfs
Jeff Atwood, How to Hire a Programmer
Joel On Software, The Guerrilla Guide to Interviewing (version 3.0)
Coding Interview Tips, How to get better at technical interviews without practicing
50 Coding Interview Questions - "In this guide, I’ve organized all of the interview questions we’ve ever covered on Byte by Byte into a convenient PDF for you to reference whenever you like. Over the years, I’ve been careful to select only problems that are directly relevant to your interviews. This guide combines them all in one place and is completely free for you to download."
500 Data Structures and Algorithms practice problems and their solutions - these are good because they are grouped by topic such as array, BST, Dynamic Programming etc
Project Euler - The classic
Epic List of Interview Questions - a list of software engineer skills or areas that can be tested and evaluated in an interview context
MaximAbramchuck/awesome-interview-questions - A curated awesome list of lists of interview questions.
This is tangentially related to interviews. Below is a list of companies that feature blog posts from guest authors. Blogging and teaching others can be a powerful way to comprehend new material, fine tune your writing skills, gain exposure and potentially even make money! If you have a technical blog open to new contributors please submit a PR
Scotch.io - this has been my go to source for web development tutorials for years. Code on the rocks
Charlie Munger, Warren Buffett’s partner, has three rules for a career:
1) Don’t sell anything you wouldn’t buy yourself 2) Don’t work for anyone you don’t respect and admire 3) Work only with people you enjoy
We've also written about 3 ways to get better at interviews:
The job market can move pretty fast. Companies expand and contract at rapid pace. The hot startup today could be laying everyone off tomorrow. The below links can help you discover companies and places to apply to. There's a whole world out there. Sometimes it takes work to find your place in it :)
https://employbl.com/companies - Employbl is a directory of tech companies and startups in the Bay Area. Find companies by type or location, upload your resume and find a company right for you :)
https://whoishiring.io/ - Most impressive job site aggregator I've ever seen in my life. Scrapes all the boards and has a map of where every company is located.
https://huntr.co/ - Tool for keeping your applications and search organized on a Trello-style board. they also have a chrome extension for quickly adding jobs from various sources.
https://breezy.hr - I used this one as a recruiter. It is actually built for HR departments but has a chrome extension and can be helpful for adding people and specific individuals you're reaching out to. This way you remember to follow up and can find like-minded people. One catch is that you need a custom email address like @your-domain.com. Signing up with your gmail account won't work.
https://betalist.com/jobs/collections - companies and jobs grouped by category like female led startup or decentralize all the things for blockchain related jobs.
https://github.com/connor11528/tech-companies-and-startups - shameless plug here. I've got another repo going with companies located in downtown San Francisco. The data is available as a CSV file and includes company addresses.
We've shared some notes about how to land a technical internship in the Bay Area. Tbh though I've never done an internship and the competition seems fierce. I think a lot of the same rules apply to finding internships as finding jobs, though more focus on deadlines and internship-focused positions. Looking forward to learning and sharing more about the tech internship process in the Bay Area. 📈