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!

-Haseeb
  • 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.

  • Sagar

    Waiting for Step 3 …

  • 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..

  • Juanita Anderson

    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…

  • Nida

    When will step 3 be posted?

    • Hi Nida! It probably won’t be for a bit as I’m very busy writing a followup to my most recent article. But I promise I’ll post it sometime after. :)

  • Gaujo

    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!

  • Hello Haseeb did you ever get to write part 3 of this guide?

    Thanks for all this info!

    • Also, what is your take on listening to music while learning to code? Is it ok?

      • Hey David,

        Unfortunately I did not. At this point it probably won’t happen (though you never know…)

        Listening to music while coding is 100% a-OK. :)

        • My man thanks a lot for that prompt answer!
          It would be cool if you wrote a little about your day to day at airBnB as a software engineer for us aspiring coders.

  • Astra Rai

    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

    • Thank you Astra, I’m glad to hear you’ve found my writing so valuable. :)

      Best of luck!

  • Jeffrey Milberger

    This blog was invaluable, not just the resources, but as a structure keep me focused on what matters and not spending a month learning CSS, Git, or jQuery pre-bootcamp. I went the JavaScript route over Ruby, only did 93 of the (once 110) now 135 CoderByte Easy and Medium problems, but otherwise followed this guide to the letter.

    I was accepted into seven out of seven of the coding bootcamps I applied to, Including FullStack Academy, App Academy, and Hack Reactor. Starting in February, I’m attending Hack Reactor in SF.

    If/when we ever meet up, drinks are on me. Thanks and Hook ’em!

    • Jeffrey Milberger

      P.S. There appears to be some demand from the comments for a Part 3. And I already wrote a version of it for my own reference from what could be gleaned from your other posts, interviews and other advice from the internet.

      I know it’s easier to edit than write, so would you be interested in me posting it here for your review?

      You could take it, edit it, and make it a post all your own if you’d like. It would help me and other bootcampers to know where to actually focus during the bootcamp.

      • Hey Jeffrey,

        Fantastic that your coding bootcamp applications were so successful!

        I definitely don’t have the time at the moment to put together a part 3 myself, but if you e-mail it to me (haseeb@haseebq.com) I can take a look. No assurances though whether I’d be able to edit it and publish it though, that also depends on my time constraints. :)

        Haseeb

        • Jeffrey Milberger

          Sent it your way

  • Gary Yeh

    Thanks Haseeb!

    Count me in as someone who got accepted into App Academy after taking your guide to heart (I had literally zero Ruby exposure a month ago). The most useful tidbits for me were: breathing exercises before the interview and CodeWars. Hope we can meet up in the bay sometime!

    Gary

    • Thanks Gary! Congrats on getting into App Academy, that’s awesome :)

  • ZZaric

    Hi Haseeb,

    First of all I want to tell you that I am amazed with your story. I believe in life and creation of mind. I am coming from small country, Bosnia and Herzegowina, and whole my life I am finding myself working all around the world (Austria, Iraq, Bosnia and now I am in Munich – Germany). I have been doing lot of works to bring the food on the table but my real passion always was computers. More then then years I am working as photographer and cinematographer and everything I know I learned alone – only because I wanted and loved it. I am always trying to follow my heart so this is how I ended on your website. Now I want to became programmer. I do not have any coding experience from before, except good computer knowledge but it has nothing with coding.

    You inspired me, and people like you always inspire me! Greaaat! I am very thankful for that.

    I would appreciate if you know any code academy in Munich or Europe because I could not fin anything similar like App Academy?

    Thank you for all,
    ZZaric

    • Hi Zzaric,

      That’s awesome. And thank you for the kind words! I’m glad my story has proved inspiring to you. :)

      Unfortunately I don’t know much about coding bootcamps in Munich or Europe. But I’d encourage you to reach out to people who’ve done coding bootcamps in Europe and getting their thoughts about the landscape there.

      Haseeb

  • Hey Haseeb what is your code wars name? How many code katas did you complete while getting prepared for App Academy?
    Best,

  • Nick

    +1 for a/A acceptance using this guide

    I have appreciated your work since CardRunners. The impetus to try my hand at coding was in large part your doing. I think 12 years of being a poker pro is long enough for me though.

    Thanks Haseeb

  • Tyler Eakes

    Hey Haseeb,

    Great read, just now discovering your blog, I have heard you on multiple podcasts including breaking into startups. I will start AA in May, would be incredibly helpful to me if you had time to write the next part to this post, but no worries I am sure you are extremely busy. I don’t think I will have too much of a problem keeping up, but the weekly assessments do scare me greatly and it would be great to have some tips on how best to succeed in that environment and on the tests.

    I am glad that you recommended quitting any job to commit to the preparation, this at least makes me feel better about my decision to quit mine a few weeks ago. I am nearly finished with the prepwork and my plan for afterwards was to try and develop a decent understanding of javascript, and to work my way through as much of the Hartl Rails Tutorial as possible. I will definitely set a goal to at least attempt one kyu on Codewars everyday, most likely as a warmup exercise. Do you feel that further solidifying my understanding of Ruby through Ruby Monk or a book is more important than introducing myself to javascript and rails beforehand?

    Thanks!