Haseeb Qureshi

Cracking the Coding Bootcamp – The Definitive Guide


Six months ago I decided I wanted to become a software developer. I had almost no coding background whatsoever, but screw it, I decided to take the leap. I applied to all of the coding bootcamps in San Francisco, and went into a cave to teach myself nothing but code. I ended up getting into my top choice, App Academy. I was crushing the program as the top student in my cohort. Two months into the three-month program, the founders asked me to come on board and help teach the course. I’m now working as one of App Academy’s main instructors.

Students often want to know what led to my success. They also ask me what I might do differently if I were to do it over again. It’s funny, because when I was going through this process, it seemed like all of the info out there on coding bootcamps was sparse and contradictory. So I decided to write the guide that I wish I had when going through this process. Consider this guide a synthesis of my own experiences and those of many other successful students.

If you want to learn how to totally crush your coding bootcamp and land an awesome job as a software developer, this guide is for you.

Let’s start at the top.

Step 0: Taking the Leap

Before we make any life-altering decisions, let’s first consider: is a coding bootcamp the right choice for you?

Taking a coding bootcamp is a serious life commitment. It might sound like a fun and whimsical field trip into the world of programming, but realize: most of these coding bootcamps demand upwards of $15,000 and a full three months of your life, 80+ hours a week. If you decide to do this, you will have to blow through a lot of savings and the next several months of your life will be devoted to the singular task of learning how to code. In no uncertain terms, attending a coding bootcamp is taking a giant bet, with both your money and your time.

Are you ready to do that? Take this question seriously. Don’t just nod to yourself—taking it seriously means honestly entertaining that it might not be the right choice.

Some reasons to think you shouldn’t take a coding bootcamp:

But don’t let me deflate your balloon too much. Let’s also look at the positive side!

Reasons to think you might do well in a coding bootcamp:

I’ll assume going forward that you’ve thought about this, and you’re sure this is where you’re supposed to be. Let’s start applying then.

Step 1: Getting In

First, apply to every bootcamp in the region(s) you’re considering.

There are four main reasons why it’s crucial to apply to every bootcamp.

A Breakdown of Coding Bootcamps in the Bay Area (skip if you’re elsewhere)

App Academy, HackBright (women-only), and Dev Bootcamp, are Ruby schools. (HackBright is technically Python, but Ruby is very similar to Python, and I believe they’re willing to conduct your interview in Ruby). HackReactor and MakerSquare are pure JavaScript (MakerSquare was acquired by HackReactor, so these two schools now have a common application process). There are more schools, but the rest of them are far worse than these. Go ahead and apply to other schools too though, for the reasons stated above.

HackReactor and MakerSquare will require you to do all of your interviews in JS. The other schools are generally more flexible.

The general hierarchy of coding bootcamps looks something like this (take with a grain of salt): App Academy ≈ Hack Reactor ≈ Full Stack Academy > HackBright > Flat Iron School > Dev Bootcamp > Everyone else. So I’d start the application process for the weaker schools first, and move my way up the hierarchy so that by the time I get to a top school’s interview, I’ve already banged out a few of the easier ones.

I’ll assume that you, like me, have no real coding background and have to decide which language to learn first. There are a lot of tradeoffs here. You could learn JavaScript, which is required for HackReactor’s application process. But this has two downsides: JS is significantly harder to learn as your first language compared to Ruby (it’s more confusing, verbose, and syntactically unforgiving). The second downside is that HackReactor requires the most preparation of all of the schools to make it through their application process, and it also has the most backed up start dates.

Given that, I decided to learn Ruby first. This allowed me to finish the application process for App Academy, Dev Bootcamp, and General Assembly (as well as a couple other schools) much faster, and get a swifter introduction to programming. I figured if I didn’t do well enough on my first batch of applications, then I’d learn JavaScript afterward and apply to the JS schools. That ended up not being necessary, but it’s still the strategy I’d advocate now.

App Academy was my number one choice due to their tuition-free model. Most of these other schools make you pay 15-18k in cash up front, while App Academy only requires a small deposit and then takes 18% of your first year’s income if you land a software development job. If you end up leaving the program or not landing a software engineering job, they refund your deposit and you basically lose nothing. In short, they’re the one school that you can kind of take “risk-free,” because their business model is to literally make a bet on your success. That coupled with their stellar placement stats (97% employment rate, 105k average salary in the Bay Area) made them the clear top choice for me. But your priorities might look different.

The remainder of my advice will assume that you’ll be studying Ruby, but all of this advice will be completely applicable if you’re studying JS as well.

Learning the Basics of Coding

Start with Codecademy. Work through their entire Ruby track. Don’t waste your time learning HTML/CSS or any web development stuff (like Rails); that’s all totally irrelevant until you actually get into a coding bootcamp. In your interviews you will only be considered on the basis of your programming ability, not your web development abilities, so the rest can wait. HTML/CSS is pretty easy once you have the rest down anyway.

Your time on Codecademy will serve as a litmus test. Was it kinda fun? Did you pick it up quickly, or was it like pulling teeth? If you’re in the former camp, you’re in good shape and this might work out well. If it was a significantly uphill struggle or you didn’t really enjoy it, then it might be a sign that you should turn back. Take this signal seriously.

Once you finish Codecademy, I’d start sending out your first applications to all but the top schools. Note, coding school applications move fast. Aside from scheduling issues, most decisions are made within a few days to a week. It’s nothing like applying to traditional schools. So once you apply, the train starts moving! (You can slow it down if you need to though; just tell them that something came up and you need to delay your next step. No one really minds if you do that.)

Now it’s time to start working on proper coding problems. App Academy has some prep work that you can do to get yourself up to speed on basic Ruby. It goes over a basic introduction to programming, which should reinforce what you learned at Codecademy. There’s also a set of coding problems that you can work on using Cloud9 as an online development environment. App Academy provides detailed instructions on how to get this set up.

Work through all of these coding problems. You want to be able to do all of these. It’s okay if they take you a long time the first time; any problem that took you an exorbitant amount of time, wrap back around and redo them again. You should be able to get each of these problems in < 15 minutes after some repetition.

Some programming tips early on: make sure to respect proper indentation. Any looping constructs (while loops, for loops, each loops) require a new level of identation. Any “end” statement should be de-indented. The body of a function must also be indented. Bad indentation habits is one of the easiest ways to slip up early on: you think you ended a function or a loop when you actually haven’t. Get used to making your indentation perfect, both because people will count it against you if you don’t, and it’ll make you much less likely to make simple mistakes. Other common gotchas include: forgetting to increment your iterator (specifically in while loops) and off-by-one-errors.

Once you’ve finished all those coding problems, you’re ready to apply anywhere. Send in your application to App Academy or whatever your top school is.

You’ll now want to start working on more advanced programming problems so you can pass your later-stage interviews. App Academy will give access to a second set of coding problems to work on after your first coding test (which you should have done by now). You should complete the second set of coding problems with the same rigor as with the first batch. Once you finish those, you should now be confident enough in your coding skills to grapple with a wider range of programming problems. Let’s start getting serious now.

Get on Coderbyte. Do ALL of the Easy and Medium difficulty problems. Their interface is a little crappy and buggy, so I’d recommend using repl.it (set the language to Ruby) to work through the problems.

(A micro-primer on repl.it: the left side can be used as a text editor, which you can load into the interactive terminal on the right side by pressing the play button. Basically, write methods or define classes on the left side, click the play button, and then call those methods in the terminal on the right side to view their output. It makes for a pretty nice coding scratchpad.)

Once you’re done with Coderbyte, you should probably be ready for your final interview. If you have more free time, go back over all of the problems you’ve previously solved and solve them again. You can also skip below and do some Codewars if you want to improve your skills further.

Eventually, you’ll schedule your final interview. Standard mental game advice applies: get a good night’s sleep (force it if you have to—take some melatonin), do some low-intensity exercise ~30 minutes before your interview (some jogging or jumping jacks are usually good), and then spend the time immediately before your interview doing breathing exercises/meditation.

Remember, when it comes to your performance on the interview, the marginal hour spent studying will be way less valuable than the marginal hour spent sleeping. Get plenty of sleep.

Then do your interview. Nail it.

Now you’re in. Holy shit. Now celebrate.

Step 2: Pre-work

You’re in now. If you haven’t quit your job yet, do it now. You’ll want to devote all of your time to coding and preparing to live in a new(?) city.

You should have a decent gap until your start date. For App Academy, you’ll have a lot of prep work to do. This prep work is really important, so allocate enough time to get it done!

But if you have the bandwidth and want to really crush the course, I’d advocate honing your skills further. Get onto Codewars. Codewars was pretty much my secret weapon coming into App Academy. It’s what I claim made me, hands-down, the strongest programmer coming into my class. And I’ll explain to you exactly how I used it to accelerate my learning.

Given that I’ve worked as a mental coach for several years, I know a shit-ton about the psychology of learning. And from a learning perspective, Codewars is the best platform out of any of the ones I found (and there are a bunch: HackerRank, Codility, CodeEval).

Codewars works through a ranking system. Each problem on Codewars is ranked from 8 Kyu (easy) to 1 Kyu (extremely hard). You have an overall skill level, starting at 8 Kyu and working your way up. You gain points and rank up by solving coding problems that other users created. Each problem has its own test suite that you must pass in order to win points. But if you look at the solutions without solving the problem, you forfeit any possibility of winning points off that problem.

The key to Codewars is that every solution gets voted on Reddit-style, which makes the very best solutions bubble up to the top. This allows you to solve the problem, then see the best way to solve the problem. This will usually teach you some new techniques or functions in the standard library.

So here’s what your workflow should look like: find a problem, and try to solve it (repl.it is often your friend here). If you can’t solve it within 30 minutes, then just look at the solution. Whether you solve it or not, read the best solution and try to parse it. It will often be kind of mysterious and use methods that you don’t know. Go look up those methods in the documentation, play around with them, make sure you understand what they do and why the solution works. Make sure you get it.

This next step is essential. Now do the problem again and try to re-implement the ideal solution that you just read. Do it from memory. If you forget, go back and look at the solution, and then start over. DON’T SKIP THIS STEP FOR ANY PROBLEM, NO MATTER HOW SMALL.

If you do this, you will become a killer. I promise. I did it, and coming into my program I was way ahead of anyone in my mastery over Ruby. I also advocated this approach to my best friend, a former paramedic with no coding experience whatsoever. When the TAs read his coding test, they told me “your friend is a beast. No wonder, I guess.”

This method works for several reasons. 1) It ruthlessly trains you in the art of solving problems. If you want to get better at solving coding problems, the best way to do it is just solving lots of coding problems. Most of solving these problems is just pattern-recognition anyway, and it builds up a lot of exposure to many different problem patterns. 2) It teaches you tons of methods in the standard library, and makes you use them and grapple with them. This imprints them on your unconscious mind stronger than just reading docs or groping through tutorials. 3) By typing out the best solutions from memory, it’ll teach you by hand to write good code style and intelligent, concise techniques. Don’t underestimate the power of visceral learning. Just by typing out the code that someone else came up with, you’ll absorb the learning through your fingers.

If you do this, by the time you enter your program, you’ll be a programming wizard. Take my word for it.

I’d also recommend trying to get as far as possible through Ruby Monk to really solidify your knowledge on the inner-workings of Ruby. I’d say it’s less important than Codewars, but if you have the time, intersperse Codewars with some Ruby Monk and try to finish all four of its tracks (though the first one you can probably skip at this point). Ruby Monk will solidify your knowledge on the internals of the language, while Codewars will transform you into a problem-solving machine.

Now finish your prep work and get ready for life in a new city!

Next time, we’ll pick up once the program begins, in Step 3, and see how to excel in your course. Watch this space!

Related Posts

My first job-job: Instructor at App Academy


It’s officially official. At week 8 into my 12 week coding bootcamp, I was whisked into a room with Ned Ruggeri, the co-founder of App Academy. He sat me down and told me that I was the top student in my cohort (40~ students), and asked that I come on as an instructor and help […]Read more »

Coding Adventures at App Academy (Haseeb Writes Code)


It’s been two weeks now since I began the coding bootcamp at App Academy. The material has been blasted at us at a breakneck pace, and I’ve been learning a ton. Among the things I’ve learned: what “90 hours a week” feels like. The past 5 days, I’ve been at App Academy from 10AM till […]Read more »

Why I’m Becoming a Web Developer


A new stage in my life began four days ago. I got out of a taxi on 7th and Market Street, with all of my belongings stuffed into a backpack and one suitcase. To my left, homeless men were peddling their wares and accosting passersby, and on my right, I could see the dizzying buildings […]Read more »

  1. Great article. Powerful resources. Your CodeWar recommendation is really, really helpful. Thank you. My first choice code school is a/A so odds are high that we meet soon.

  2. I have really loved reading about your journey in the last year – looks like your hard work is really paying off now that you’re at airbnb! Thanks for sharing, cant wait to see what’s next for you..

  3. Thank you for the article, the visceral learning methodology is just what l have been searching for, I know this is the best way to learn programming; your pretty much brainwashing your mind into learning…

  4. What a cool article! I passed it on to a friend starting out in programming, and also, as someone who has coded for decades, but atrophied in the last 5 years or so, it fired me up to start coding again and learning new stuff! I learned C, C++, ASP.net and VB.net, but a lot of things have changed since then, and I am thinking to pick up JAVA and Ruby.

    Good luck @ Airbnb. I have some suggestions for you guys if you’re interested!

  5. I’ve really appreciate the information that you provide in your blogs. Not just opinions, but the logic behind making certain choices and or your opinion. I first came across you relaying your journey from an interview that you did on YouTube. Have an awesome year and thanks again for sharing as it allow one to shorten learning curves and save time an energy.

    Astra Rai

Leave Me A Comment

Your email address will not be published. Required fields are marked *