Effective Altruist. Software engineer. Writer. Instructor @Outco. Former poker pro.
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.
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.
You're not certain about coding. To be clear, coding doesn't need to be your forever thing, but it's definitely gotta be your foreseeable-future thing.
You have a lot of demands on your time. If you want to try to juggle your book club and a cocaine addiction and your Etsy business of hand-sewn Star Wars plushies, I wish you the best. But if you want to have a good chance of surviving, you're probably going to have to live a pretty minimalistic life for a while.
You're bad at math or analytical thinking. This is pretty much the best predictor for who makes good coders. Coding doesn't really require a lot of math, though. It's just that being proficient in math usually means you have the right kind of thinking skills for excelling at programming.
You're doing it just because you want to make more money. Money is a shitty motivator, and it won't sustain you. Do this because you actually want to learn how to code and you might enjoy making this your life.
You have weak communication skills. This one might be counterintuitive. Isn't programming the stereotypical job for people with no communication skills? Au contraire, my friend. That might be true for fresh grads coming out of Berkeley. But you will not be a typical coder. Once you make it out of this bootcamp, you're going to be an oddball programmer with a non-traditional background. That means it's going to be up to you to sell yourself to iployers; your pedigree certainly won't do it for you. Coding bootcamps equip you with the knowledge to excel in a job, but it's 100% up to you to convince a hiring manager that you're a capable, friendly, cooperative person who they'll actually want to have join their team.
But don't let me deflate your balloon too much. Let's also look at the positive side!
You're dissatisfied with your current job/life situation.
You enjoy thinking analytically and you pick up new things quickly.
You thrive in high-pressure environments. You manage stress well.
You have considerable savings or know people who are willing to loan you ~8 months of living expenses and/or your tuition fees. (There are a number of companies that can help with outside financing though.)
You are innately talented at math or logic (even if you haven't done either in a while).
You have done some programming/web development before and enjoyed it. (optional) Alternatively, you thrive on technical shit.
You're a capable typist and generally know your way around a computer.
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.
There are four main reasons why it's crucial to apply to every bootcamp.
The first reason is that it'll give you practice with the interview process. Even if you're dead-set on going to a particular boot camp (as I was), you'll get a lot out of going through multiple funnels simultaneously. Talking about yourself, working on basic coding problems in an interview context—these will become easier the more times you do it.
The second reason is that having an acceptance in hand makes you more attractive to other boot camps. Especially if you're applying to all of the boot camps in a region, they'll all be more than happy to poach a student from a competitor. They're also likely to expedite you through their process if you tell them that you need to make a final decision soon.
The third reason is that it lowers the stakes. Psychologically speaking, you're going to be less anxious and freaked out if your top choice interview is just one among the many interviews you're doing. Again, even if you're dead-set on going to only one or two of those schools, just having the illusion of fall-back options will trick your brain into calming the hell down. Every little bit helps.
And lastly, do it because it's easy. Most of the applications are essentially the same, and none of them cost any money. So there's pretty much no downside to it.
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.
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.
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
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.
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!
2015 has come to a close and I've just finished my first year's donations. In all I gave 33% of my pre-tax income, which since I started my job in June, amounts to $21,200 USD I donated to high-impact charities. [video] Donations I donated $5,300 to AMF, the Against Malaria Foundation, which distributes low-cost anti-mosquito bednets in parts of Africa that are ravaged by malaria. AMF is ranked by…
EA Global, the largest ever public gathering of EAs, has left me reflecting on what it means to be an effective altruist. A few weeks ago, 400+ attendees and prominent EA activists, including Will MacAskill and Nick Bostrom (and Elon Musk!), converged on a Google Campus in Mountain View to discuss the state and direction of the EA movement. I ended up donning a volunteer shirt and helping out&mdas…