Your progress will stall after the bootcamp

The value of your bootcamp came in its carefully curated curriculum. Instructors spend hours planning every aspect of the course: deliberating why webpack is easier to setup and understand than gulp, choosing the handful of node modules and ruby gems you’ll need, teaching a database that plays well with the data you’ll be storing.

As a result, you spend very little time on configuration and dedicate all of your precious time to creating. You can still namedrop webpack and babel and es-2015-presets, but a few months later when you decide to start a new project from scratch, you realize you have no idea where to begin (unless you choose your bootcamp’s MERN stack again).

Casual learning

You’ve been very content at your new position doing a lot of JavaScript. In your free time, you casually play around with other programming languages, learning a little bit of Python here, a little bit of Haskell there. Nothing too serious, and definitely nothing that cuts into your precious social life that your six-figure engineering salary buys.

The first sign comes with the StackOverflow developer survey – you notice the Node.js usage chart is relatively flat while Golang jumps 25 spots. Next you read myriad articles on Hacker News condemning Facebook’s React licensing and celebrating Vue. A large company using a NoSQL database where it shouldn’t causes MongoDB to lose favor among the developer community. WTF are containers?!

Inception of an idea

You hear a lot of buzzwords being thrown around your company and decide to learn some of the more important-sounding ones. After about a week of asking reddit for advice, you decide to build microservices with Docker that use tensorflow to trade cryptocurrencies. That sounds like a side project that would look incredible on a portfolio and give you solid experience with a bunch of hot technologies.

All right. Sounds good.

Let’s get started.

New episode of Rick and Morty first…

$ npm init

Pit of despair

Where do you even start? Docker? You follow a few tutorials but because everything is community-maintained nowadays, the steps aren’t always easy to follow and you sometimes get cryptic error messages. You find others on Github Issues who have seen the same error but the last update was four months (and one major release) ago.

Okay, what about Tensorflow? Surely a Google product must have immaculate documentation and an active support community? You do a little better this time – you manage to get through Tensorflow’s MNINST tutorial, but this only makes you more anxious. Maybe you need to take Andrew Ng’s machine learning course first? How many books do you need to read before you can do practical machine learning?

While your ego is already beat, you start thinking about cryptocurrencies. How much finance knowledge is required to understand arbitrage strategies? You’re definitely going to need faster computers to race against the banks already doing this.

This leads to a lot of time spent wondering if you really know how to code or if you can only perform under ideal conditions (aka. when there is boilerplate to follow or an existing codebase to copy and paste). You watch a lot of semi-related videos on Youtube to feel at least somewhat productive. You churn out a few simple JavaScript projects because that’s what’s familiar. You start a blog called postbootcamp.

Reliving the bootcamp

As rewarding as the bootcamp experience was, we need to forget about how fast we were able to learn while enrolled at the program – we were putting in 14 hour days completely immersed in the subject. We willingly gave up friends and family so we could consume all of the information over those three months. We were surrounded by 40+ peers who had the same questions and could be used as a support group and as mentors.

Now that we’ve graduated, we forgot about the miserable days spent staring at a recursion problem and wondering about base cases. We’ve forgotten about that one time we created a dumb rails migration and ruined our entire backend. All we remember is how quickly we learned and grew as developers.

Now, it’s just you and the internet. Except this time, you have the hours of 8pm – 9:30pm after work, assuming you haven’t made plans with friends or colleagues (and you aren’t too tired of typing yet). With your new schedule, you can expect a week of learning at this new pace to be equivalent to half a day during the course. It will feel slow.


You’ve got the job – now what?

You’ve spent the past 4 – 6 months studying a very carefully curated curriculum: first you learned how to ‘hello world’ in Ruby, then you learned how to template that message in Rails, finally you learned how to make the letters change colors when you clicked on them using JavaScript.

You’ve learned so much in the past few months that you’ve managed to trick a company into paying you a crazy amount of money each week because they believe you can take their product to the next level.

You show up on day 1, go through a brief orientation, and install Atom. Now what? You’ve only ever worked on small codebases where you were intimately familiar with every line of code. Your new company’s project is thousands of times bigger and growing each day. It feels like a new pull request is merged into the repository every time you reload the page. How are you going to become familiar with something this fluid?

Read the docs

This is usually a great place to start – engineers will usually hide useful information in here like ‘how to run tests’ and ‘API documentation’. It might be in a markdown file, it might be in the Github Wiki, it might be on a third party site. Find out where the docs are and read them.

What? You just talked to the tech lead and you’ve been informed the docs haven’t been well-written or maintained? Well…

Write the docs

I know it feels like you’re trying to write a calculus textbook when you’ve finished third grade math, but you’d be amazed how much you can contribute during your cursory look at the project. The maintainers have been working on the codebase for much longer, and probably assume a non-trivial understanding of the code when writing documentation. As an outsider, you bring a new perspective to the project – ask about the unclear parts, and update the docs!

Did you have to install any programs to make setup easier? Did it take you thirty minutes and a conversation with an engineer to figure out an obscure command to build the project? Get it all into the docs!

While you’re reading the source code, if an API looks extremely complicated, trace through its calls and try to write down (or diagram!) what is happening at each step. This will be very valuable if anyone needs to refactor this logic in the future.

Next time someone new joins the team, give them your new docs and watch how fast they ramp up!

Run the tests

Tests should give you a good idea of what each module was designed to do. Pay attention to expected inputs and outputs of the tests. Look at the mocked data for any external calls to better understand the contract between clients.


Remember that extremely complicated API you documented in the previous step? Think about if there is an opportunity to make it more obvious. Would it make more sense if parts of the method were broken out into their own reusable methods? Would the code be more clean if it used promises instead of callbacks?

Start small

In the task backlog, pick up projects that are relatively independent of the rest of the code. This makes debugging much easier when you aren’t confident in your knowledge of how the system works as a whole. As you get comfortable with the codebase, you will naturally get a better grasp on the entire codebase.

My coding bootcamp job search

I wanted to share the numbers behind my bootcamp job search as well as how I juggled my time between appointments. I’ve tried my best to color code each company so it’s easy to see the delay between communications.

You’ll notice that it’s the same handful of companies through the entire process. Three of my five on-sites were companies I spoke to during the first week of the job search. This is not an anomaly or because I’m super personable – your coding bootcamp has prepared you extremely well for the job search, and a company that takes the time to talk to you on the phone will be impressed enough to keep you through the entire interview process.

It’s a numbers game – your goal is to apply to more companies than your peers. You are graduating with your cohort of 60 students and you all have identical portfolios, linkedIn’s, and resumes (your mugshots are probably all from the same camera, too!). Chances are there are several other bootcamps in your city churning out students just as quickly. I haven’t even gotten to the fresh computer science graduates from local universities and professionals sending their resumes out to test the waters.

Some would argue to spend an inordinate amount of time finding out what a company does and tailoring your resume and cover letter to the company, but my opinion is a simple, friendly cover letter sent to 100 companies is much more effective than the world’s greatest cover letter sent to three companies.

From App Academy to Offer

Week 0

1/13 – Persado [graduation showcase]

Week 1

1/17 – Persado [phone interview]
1/18 – Google [phone screen], [phone screen]
1/19 – Triplebyte [code interview], Stride [code challenge]
1/20 – Listenfirst [phone screen]

The companies you hear from during the first week are usually companies who attended the graduation showcase and have seen great success from bootcamp graduates. That’s not to say any of these companies can be taken lightly – you’ve just finished 12 weeks of hell and phrases like “bootcamp bubble” and “year-long job search” are bouncing around in your head. Your adrenaline spikes every time your phone rings, even though on the other end of the line is a super friendly recruiter eager to tell you about their company.

Week 2

1/23 – Stride [coffee date], Google [interview practice session]
1/24 – Stride [code challenge]
1/25 – Bloomberg [phone screen]
1/26 – Listenfirst [code challenge], Ralph [phone screen]

The second week was filled with coding challenges from the companies you spoke to the previous week. Follow the instructions – if a company wants TDD, it will be extremely obvious if you wrote unit tests after the fact. I got burned and wasted all of the time I spent working on the Stride code challenge.

Evenings this week were spent memorizing algorithms from CTCI.

Week 3

1/31 – VaynerMedia [phone interview, coding challenge]
2/1 – Persado [onsite]
2/2 – Ralph [onsite], Bloomberg [phone interview], Fubo [phone interview]
2/3 – VaynerMedia [phone interview]

After the first onsite, you have leverage to accelerate the processes at other companies (“I expect to be hearing back from XYZ very soon; these startups are notorious for extending offers with very short fuses – could we possibly accelerate the timeline?”).

Week 4

2/7 – Google [onsite]
2/9 – Listenfirst [phone interview], Voxy [phone interview]
2/10 – Fubo [onsite]

This week was all about Google. I spent the weekend cramming and I spent the day after recuperating. Luckily, every interview after Google feels like a cakewalk.

My best advice at this point is to never let your foot off the gas – don’t stop applying just because you expect an offer. Remember – offers beget more offers.

Week 5

2/13 – Persado [meet the team], Fubo [meet the manager]
2/14 – Valentine’s day, forever alone. Listenfirst [onsite]
2/16 – Listenfirst [meet the manager]

I didn’t realize I accepted my offer on Valentines Day.

Wrap up

Of the 150 applications I sent out during my job search, about 40 companies sent me rejection emails and 100 flat out ignored my application. 7 companies talked to me on the phone and 5 of them invited me onsite for an interview. Two of them bought me lunch.

It really is a numbers game.

Essential tools for the job search

Here are a few tools some friends recommended to make the job search suck a little less. They were extremely helpful in helping me manage my hectic job search life, so I want to pass it on to future hunters.


Streak for Gmail – This tool deserves its own article. It puts together so many wonderful features that will streamline your hunt.

Streak automatically monitors my inbox for emails companies and groups them accordingly – multiple people who may contact you on behalf of the company (recruiter, tech lead, engineers) will show up in the same group so you can look at past events and never miss a detail or mix companies up.

It also offers bins for your email correspondences. I organized mine into six categories: Reach out, phone screen, technical interview, code challenge, onsite, offer. When I first message a hiring manager or employee you met at a networking event (you are following the guide on networking, right?), I tagged the email as ‘reach out‘; as you progress through the process, you can move the group forward, which provides a good estimate of how many coding challenges you should plan for between your onsites in the near future.

One of my favorite features is email tracking – Streak silently tracks all of your messages using an embedded image so you can see exactly when and where someone has viewed your emails. If you see a hiring manager checking out your email several times each day, you’re probably a good candidate with quite a bit of leverage; if it’s been a week and your email hasn’t been opened, you could definitely send a follow-up.


Another Gmail plugin, Rapportive hooks up to your LinkedIn account and gives you the credentials for people in your subject line. That means if you aren’t sure what a company’s email username format is, you can quickly guess and pray for a rapportive hit. jsmith, johnsmith, john.smith…


All the tools mentioned previously are Gmail tools, but it’s also helpful to have a copy of Microsoft Office purely for its MailMerge capabilities. This makes automating cold-emails a breeze – you enter email addresses and a companies (maybe an industry if you’re feeling creative!) and MailMerge will fill in a template you provide and send it to all of the contacts!


If you’re living in a fairly techy city, there will be dozens of free tech Meetups. Not just free, pizza and beer included. Not only will you get to hear interesting talks and network with the hosts (people active in the community are excellent contacts to have), you’ll also get to check out a lot of swanky tech offices in your city!

Budgeting for a bootcamp

The $15,000 or $18,000 price tag advertised on a bootcamp’s website can be misleading when you’re trying to sort out your finances. Make sure you understand exactly how much you need to save before quitting your job and committing to a new career. Getting this step correct will avoid so much stress, as you’ll know exactly how big of a runway you have.

Most people will calculate living expenses for the 12-week duration of the bootcamp and forget to factor in the job search period which can be just as long.


This is the big number most people have in their heads when considering a bootcamp program, generally between $10K and $20K for a good program. Some programs charge upfront, others have a deferred tuition model where you pay based on your starting salary.

If you opt for a deferred tuition program, read the contract very closely – the bootcamp may require you to perform your job search in the specific city of the bootcamp for 6 or 12 months – this additional time should be factored into your living expenses.

Housing ($7,000 – $15,000)

Most bootcamps worth attending are able to brag about their placement rates because they train students in a market that is thirsting for people. This usually means you’ll need to move to a city with astronomical rent prices like SF or NY. You’ll not only be living in one of the most expensive rent markets in the world, you’ll also want to live relatively close so the commute doesn’t eat up 4 hours every day. Six months in these cities can cost as much as the bootcamp tuition. Make sure to add 10% for utilities and internet.

Food ($2,000 – $5,000)

If you are not an avid cooker already, you probably won’t make any huge changes during the program. It doesn’t help that you’re moving to a city with some of the best and most accessible restaurants in America. Plan to eat out twice a day for at least 12 weeks. After the core curriculum is done, you will have a bit more time to plan out your meals and make better life choices (I didn’t).

Soylent is made for these programs. An entire day’s nutritional requirements in prepackaged bottles. No prep, no cleanup, and you can ‘eat’ while studying. Try it out for a week before committing – it’s not for everyone.

Transportation ($750 – $1,400)

Hopefully the housing accommodations you chose are close enough to the bootcamp that you can rely on public transit. Having to pay for parking or scour the city streets looking for an open spot drains precious time and money. Forcing yourself to study which days you can and can’t park on a certain side of the street takes away coding time. Besides, public transit is the best place to review materials and study algorithms.

Entertainment ($700)

Beers with classmates, a museum ticket to keep yourself from going insane, a night to go see the latest Avengers movie, your Netflix subscription. The process is a grind and you need a few nights out to keep from hating your life.


Ways to save

Depending on the program you selected and how cushy you want your bootcamp lifestyle to be, you should try to save $20 – $40K before enrolling.

If you already live in the area, consider tolerating a longer commute so you can stay with parents or a relative rent-free. Don’t waste the commute by napping or browsing Facebook, use it to do some offline studying (your recall will be really good when you practice with no internet!). If you do this, use the bootcamp’s address on your resume – companies are more likely to take a chance with someone when they’re local.

Opt for the deferred tuition model. On paper, a 23% commission of an average starting salary of $110K is much higher than a $15,000 flat fee. But that’s $25K you’re paying while you’re working versus $15K you’re spending before you have anything to show for it. Programs have more vested interest in your success when they offer a deferred tuition model, and they will hire more career coaches to get you employed and out the door.

If you have any other tips, feel free to leave a comment!

Job application flow

This is part 2 in the ‘job hunting’ series. Check out ‘Things to do before starting your job search‘.

Getting a job after graduating from your bootcamp is part luck, part skill, and 100% concentrated power of will mostly a numbers game. You can polish your personal portfolio until it sparkles, but you can’t stop companies from seeing ‘attended coding bootcamp…’ on your resume and instantly place it in the discard pile.

The process is a grind. It can take hundreds of applications and months of waiting before you land a suitable gig at a company worth working for. The monotonous process is magnified tenfold by the fact that you just spent 12 weeks learning exciting and novel things every day, and now you’re copying and pasting the same cover letter into job application templates.

To get through these next few months without losing your mind, I’m sharing the routine that I followed. It involves sending applications, following up on leads, and enhancing your programming skills.

To save yourself some time in the long run, make sure to read ‘Things to do before starting your job search‘.

The unemployed life is super comfortable – roll out of bed at whatever time is most convenient, check your emails, browse Facebook while sipping coffee. It’s a wonderful lifestyle for those who want to stay unemployed.

Bank hours

Be active during business hours. You want to be prompt in your responses to companies. If they email you at 9 AM asking for interview availability, get a time slot as soon as possible. I’ve seen people put off requests for a few hours, and when they finally replied, the company had filled its interviewee quota. You don’t need to wait an adequate amount of time before replying to their messages, this isn’t Tinder.

Job Applications

As a bootcamp graduate, you will send literally hundreds of applications before getting an acceptable offer. The process is most definitely a numbers game, and you’re competing with the classmates sitting next to you as well as the graduates from the bootcamp across the street.

Your resume, your portfolio, your cover letter – no matter how much work you put into these items, you still look more or less like every other bootcamp grad out there. They’ll receive a hundred identical applications each day and randomly pick five for interviews. By applying to as many places as possible, you’re increasing your chances of being in those five applications selected for a phone conversation.

Set a number and try to hit it every day. Find companies on your job board of choice (Indeed, Monster, LinkedIn are good ones to get started), and attach a copy of your resume. Five a day is easy mode; ten is hard – but doable.

I found it easiest to knock this out early in the morning. I filled out as many job forms as I could stand; as soon as I felt the fatigue of job applications, I moved on to…

Coding Challenges

As a junior developer, companies will often want you to dedicate 5+ hours on a coding assignment before a hiring manager will even speak to you. It’s a flawed and aggravating system, but we’re in no position to change it. You’ll usually be tasked with implementing one of the company’s API services or building a data structure.

These code challenges are not only a way for the company to evaluate whether or not you’re an asset worth spending engineering time on; it’s also a great opportunity for you to think about how much interest you have in the company. Before accepting the code challenge, take a look at the company’s Glassdoor profile. If you have multiple coding challenges from more promising companies, feel free to turn down the ones you’re not interested in. Do it politely:

It was wonderful speaking to you today and learning about the engineering position at <company here>. I’m extremely impressed with how <company> is <whatever company is doing>. I wish I had time to complete this coding challenge, but I’m preparing for final interviews with a few other companies and I’m afraid my timeline might be too short to go through the screening process at <company>.

Many companies will say “good luck” and move on to the next chump, but I have had a few companies call me within 30 minutes of sending that email with an interview invitation. Extremely YMMV; don’t play this card on a company you’re actually interested in.

When you’re doing a coding challenge, use clues from your telephone conversation to figure out what’s most important. Did the recruiter mention TDD four times in the phone call? Might be a good idea to write some tests. Is it a front-end job at a media company? Better have solid CSS. Once you’ve committed, don’t half ass a coding challenge – you’re already spending the time on it, might as well take the extra few hours to make it stand out.

Continuing improvement

Software engineers need a deep knowledge of algorithms and computer science concepts to pass the ever-so-common 5-hour whiteboarding interviews. If you’re set on a career at a big 5 tech firm (Google, Apple, Microsoft, Amazon, Facebook), dedicate several hours each day to computer science. Learn all of the concepts covered in Cracking the Coding Interview, practice Leetcode problems every day. Grab a few classmates and quiz each other on a whiteboard. Check out this post for some computer science concepts not covered at a coding bootcamp.

Web developers should spend more time learning the nuances of their language-of-choice and pros/cons of emerging web technologies. If you love the web and want a career as a developer, learn the in’s and out’s of hot technologies. At the time of writing, this means becoming a master of React and understanding why it’s better than Angular or Backbone. Practice with SASS. If you’re a Rails developer, learn Node. If you’re a Node developer, learn Rails! Employers love to ask about what you’ve worked on lately, and “job applications” is not the correct answer.

If you are not confident about anything covered during the bootcamp curriculum, go review it (many people have forgotten SQL by this point. Did you?)

A stunning portfolio

Continue building projects. When an employer opens up a bootcamp grad’s profile, they see a fullstack CRUD project and a javascript application. Look around your classroom, the instructors copied and pasted 50 identical students with identical portfolios. You could spend the extra time polishing your fullstack project, but you hit the point of diminishing returns very quickly.

Set aside two hours each day to work on something new – try to combine your passion with popular tech. If you’re considering a frontend role at a company with lots of big data applications, build something beautiful using D3.js. If you’re applying to a lot of backend jobs, find some publicly available data and turn it into a clever API. As always, these projects should have good styling and a strong readme.

While you’re working on these projects, commit your code frequently to Github. Collect those green squares. Recruiters may not know how to judge code quality, but they can tell who’s been rigorously polishing their portfolio.

But my watch only has 24 hours…

Start with a template like this every day:

9:00 AM – Start working on applications. Your goal is 10 completed applications by lunchtime.
12:00 PM – Eat lunch, take a walk, work out if you’re into that stuff.
1:30 PM – 3:30 PM – Algorithm & whiteboarding practice. Schedule a few mock interviews with classmates and friends.
3:30 – 7:30 PM – Work on code challenges or personal projects

When you reach the point where interviews eat up most of your day, feel free to shift things around. But at that point, you won’t need this guide much longer, anyways. 🙂

Stop applying to jobs on weekends and holidays, but follow approximately the same schedule.

Still no results?

If you’ve been searching for 3+ months and haven’t generated any interest, think about a few issues…

  1. It’s you. Go look at your resume / github / website. Compare it to your classmates’. If you still have no idea what’s wrong, send it to me. I’ll let you know where to focus your time.
  2. It’s the market. Maybe it’s time to leave New Mexico and move to SF or NY for more job opportunities?


Don’t burn out

Seriously, don’t. There will be so many occasions where the process feels hopeless. But these coding bootcamps exist because it’s a proven model – grads get jobs.

You will have loud classmates announcing their interview success to the world. You will see people disappear as they begin their new careers. You will get dozens of rejection calls and emails. Worst of all, you will watch as the next group of students graduate from the bootcamp and directly compete with you for positions.

Take a few hours off each day, hit the gym, grab a drink. Just don’t get too relaxed. After all – you’re still unemployed.

Things to do before starting your job search

Do these things once, but do them very well. If you knock these out of the park at the beginning, you’ll save yourself a lot of heartache later in the process (you’ll probably get a job sooner, too!).

Before you start the process, make sure your tangibles are pristine. Recruiters read hundreds of resumes and cover letters each day, and if you’re the only one with a typo in your ‘experience’ section, guess which resume is going in the trash? Have a few developer friends look over your resume and take their feedback very seriously. It’s important to do this now before you’ve sent 50+ wasted applications.

Writing cover letters? You should have a template where 80% can be repurposed for whatever company it’s going to (If you’re starting from scratch for every company, you’re probably wasting a lot of time). Make sure the boilerplate is free from spelling and grammatical errors. Tip: have a friend proofread it.

Make a personal website and use it as a portal to your various projects. Use squarespace if you’re not confident in your abilities as a designer, you just want a page where employers can browse through all the wonderful things you’ve made. Link to the live demo as well as the code (and have a good readme). Set up Google Analytics to watch traffic. It doesn’t affect your chances of getting hired, but it can be encouraging to see all the people looking at your projects.

Everything employers might see should have solid styling. This demonstrates your attention to detail and reflects the kind of employee you will be (one who doesn’t cut corners). If you’re applying to front-end positions this is doubly true. “But it’s just a simple-” – wrong. If it’s not worth styling, it probably isn’t worth adding to your portfolio.

Check your voicemail greeting – chances are you’ll miss a call at some point during the job search and you don’t want a message you recorded in college to kill your chances with an employer.

Reach out to friends – look at your LinkedIn, look through your Facebook. Don’t be shy. If you see a friend who works at a company where you’d like to interview, send them a message. If there is a job opening, an employee referral is many times more likely to yield an interview. Often, recruiters will even skip several stages in the hiring process because you had a current employee vouch for you.

Sign up for Triplebyte. Their mantra aligns perfectly with the bootcamp model – resumes and whiteboard problems don’t demonstrate your skills as a developer. They recruit for companies seeking talented developers who might not have “10 years of React experience” on their resume. They have a great practice test for evaluating your fundamentals. If you’re able to pass that, Triplebyte offers a rigorous 3-hour live interview after which you’ll get very good feedback on where you should spend your time. If you can’t pass (most bootcamp grads won’t!), the experience is definitely worth the time and shows you where to focus your studying efforts.

Once you’ve done this, check out the next post: Daily workflow for job hunting

Bridging the gap of CS skills as a bootcamp grad

If you ask hiring managers why they refuse to interview bootcamp grads, they’ll say “computer science fundamentals like data structures and algorithms.” If you ask them what else, they’ll stumble around for words and say something like “four years of immersion.”

It’s not feasible to self-study four years of unrelated coursework and heavy drinking, but it’s not impossible to supplement your bootcamp education with a very strong understanding of computer science fundamentals.

CS Theory

Pointers, memory allocation – Chances are your bootcamp will use a language with dynamically-sized arrays and automatic garbage collection. No matter what language you studied, The C Programming Language (book) is a great guide that will help you read more strongly-typed languages and learn the concepts of memory allocation.

Big-O notation – This concept comes up during every interview at any company worth working for. It’s a quick exercise to determine if the candidate has any knowledge of software engineering beyond the [React / Angular / Node / Rails] world. Know the time and space complexities of your favorite algorithms (more on that later) and be able to look at code and figure out the Big-O complexities.

Data Structures

Learn data structures. Drill them every day until you can talk about them at length with your interviewer. Know its characteristics, time complexities of common operations, and be able to provide several examples of when the data structure is useful. Know how the data structure is implemented (for example, adding the (n+1)th element to a statically sized array of length n).

You should be very familiar with at least the following. I’ve had each of these appear several times during my technical screens and interviews. If you have time, implement these data structures in your language of choice.

  • Arrays
    • Statically sized
    • Circular arrays
  • Linked lists
    • Singly and doubly linked lists
  • Stacks
  • Queues
  • Hash maps/sets/tables
    • Know how they’re implemented – SUPER common questions here
  • n-ary Trees
    • BST
    • Know how a self-balancing BST works
    • Heaps
  • Bloom filters
    • It seems obscure, but I’ve had this come up several times in interviews
  • Graphs
    • This topic is seldom covered in bootcamps, making graph algorithms a favorite for interviewers


Bootcamps have gotten much better at incorporating algorithms into their curriculum. The program I attended taught simple sorting algorithms even before the course began. Like data structures, know these basic algorithms inside-out – be able to implement them automatically and recognize when you might use them.

Cracking the Coding Interview is widely regarded as the tech bible in terms of preparing for a variety of algorithm-related questions. Know the concepts, but don’t bother memorizing solutions since most engineers have read this book.

  • Binary search
  • Comparison sorting
    • Bubble sort
    • Insertion sort
    • Selection sort
    • Quicksort
    • Mergesort
  • Non-comparison sorting
    • Counting sort
    • Bucket sort
    • Radix sort
  • Linked list
    • Reversing a linked list in place
  • Graph/Tree
    • BFS
    • DFS
    • Topological sort
  • Recursion / Dynamic Programming
    • You usually won’t get a problem harder than “maximize the value of this rod” or the “stair step problem”, but dynamic programming requires some logic that isn’t taught at bootcamps. Spend some time watching this guy’s Youtube videos to get a better feel for how to approach these problems.


The only way to get better at this part is real-world experience, but we’ll have to make do with practice. Interviewers will typically ask you to design a generic computer game or a URL-shortening service. More important than your ability to separate concerns is your ability to ask the right questions. Your goal is to show your interviewer how you think about problems and where you believe the biggest hurdles will be.

The Internet

You need to understand how the internet works. A trite question is “what happens when you type into the address bar and press enter?” There are countless guides on the internet about this. Bonus points if you go into caching.

Additional resources

Class 1-5 of UCSD’s Data Structures and Algorithms Specialization on Coursera have very good video lectures and programming assignments covering many topics on this post. It’s a much more structured way to learn than googling every concept on this page.

Leetcode – Tons of algorithm questions and answers. Spend a few days before your algorithm-heavy interviews practicing on this site. Have a friend practice whiteboarding with you using some fo these algorithms.

Google Interview University – A guy’s journey to become a Googler. This Github repo has hundreds of hours of great material – awesome if you’re beginning preparation a few months in advance. Good for skimming if you’re on a bootcamp interview timeline.

The Algorithm Design Manual – If you refuse to work anywhere besides Google/Amazon/Microsoft/Facebook/Dropbox, it’s probably useful to pick up this book to supplement your algorithm knowledge. It’s hugely praised on Hacker News and Reddit Computer Science communities.

Computer science vs Coding bootcamp

Before putting down a deposit to attend a bootcamp, the first thing you’ll google is probably “computer science vs coding bootcamp”. Is there an answer to this pervasive question?

tldr: it depends.

Think about where you are in life and what your goals are. There are a lot of considerations for each decision.


Myriad articles on the internet stress the superiority of a CS grad over a bootcamp grad, and there are many companies which refuse to hire from the latter. No matter how hard you drill CS fundamentals after graduating from a bootcamp, employers will always prefer the degree.

A computer science graduate usually has very good job prospects after college – they’ve done several internships at amazing companies and recruiters are fighting for the ones who have spent a summer at Google or Facebook. Competent students receive a full-time offer at the end of their last summer and enjoy their senior year of college relaxing.

Getting a job after a bootcamp is a grind. Many graduates spend more time sending resumes after graduation than they spent learning the bootcamp curriculum. Even if you graduate at the top of your class, you will spend hundreds of hours sending resumes, completing coding challenges, fielding questions from recruiters, and whiteboarding for employers.

Time Commitment

Attending a coding bootcamp is a difficult decision if you’re at the crossroads where you’re considering a 4-year computer science degree. A computer science degree requires four years of study. This includes dozens of classes completely unrelated to the field meant to broaden your horizons. Although there are many awesome scholarships available at the top schools, the opportunity cost of 4+ years is very real.

On the other hand, even if we consider the time spent job searching after graduating from a bootcamp, the time from start to employment is often less than six months. That means before the computer science student has taken a single course related to their major, a bootcamp grad is beginning to receive real-world experience. Maybe instead of asking “Bootcamp vs CS”, we should ask “Bootcamp + 3 years vs. CS”?

Earnings Potential

Coding bootcamps have not been around long enough to compare the long-term earnings potential against degree holders. Many universities publish statistics for new graduate salaries, and I have to say – several bootcamps boast comparable average salaries.

In defense of CS degrees, university statistics usually involve the entire population (low performers included). In comparison, bootcamp statistics need to be taken with a grain of salt, since they massage the data using restrictions on who is counted in the ‘average starting salary’ pool. This isn’t to say the earnings potential isn’t there – the graduates I’ve seen have destroyed the bootcamp’s “average salary” guidance.

I would argue that as long as you make a conscious effort to stay hungry and supplement your practical developer skills with CS fundamentals, coding bootcamp graduates can have the same earnings potential as a degree holder.

TTL (Time-To-Live)

MIT & Stanford Computer Science graduates will leave their alma mater with deep knowledge about how computers work and how to solve problems using the fewest processor cycles. They go to companies like Google and Microsoft that have extensive new-hire training programs in order to get acquainted with the software and dev environment. Six months later, these graduates are ready to commit to the production servers.

There are tens of thousands of companies that don’t have the resources to incubate new hires until they can be productive. Startups want employees who can quickly digest the codebase, create a solution, and move on to the next task. Bootcamps focus heavily on practical skills – the objective is to create a team member who can be productive on day 1.

Filling the Gaps

During my interview process, I’ve done hours of research looking for exactly which areas bootcamp graduates are lacking in an attempt to fill those gaps in knowledge.

I’ve seen a lot of people mention “analyzing code efficiency” and “computer science theory”, but in my experience more and more bootcamps have begun incorporating these topics into the curriculum. If you’re considering a bootcamp, ask the interviewers about their respective program’s coverage on data structures and algorithms.

Worst case, you’ll be stuck learning these concepts yourself. Check out the next article for an in-depth guide on how to fill those gaps.

How to get the missing CS skills as a bootcamp grad

Final project: A good README is more important than a pristine codebase

Your is where you flex your technical guns.

Recruiters (usually) aren’t coders. They hand your resume to an engineer to approve or reject for an interview. The difficult part here is that engineering time is extremely valuable. Make it as easy as possible to see your best code. Don’t make the engineer navigate through app/frontend/components/profile/userprofile.jsx:line 147 to see a code sample. Put any clever database schema decisions in your readme, add snippets of fancy queries to your readme, add code samples you’re proud of to your readme.

This highlights your best code. Having seen some code snippets, an engineer is far less likely to browse your repository and stumble on your garbage code. Note: go refactor your garbage code.

If you added a cute feature that probably won’t be seen by employers (for example, a text box that changes a post’s font size after a certain character count has been reached), turn it into a .gif and add it to the readme.

I went all out with the readme for my final project. Yours probably doesn’t need to be as ADD with the animations, but feel free to take some inspiration from it.