It was a little more than a year ago that I made what was, in retrospect, a rather large, life-altering decision: I signed up for the coding bootcamp Bitmaker Labs. Despite my best efforts to document the process, I only ended up writing a total of three blog posts during my time as a student, but I remember how useful the blogs of past cohorts were in helping me decide that Bitmaker was the educational environment I was looking for. After the program, however, many student blogs go dark: surprisingly, life after Bitmaker can be even more hectic than life at 220 King St. West.
This is my attempt to remedy the situation, having recently joined the wonderful team at Breather as a developer. This post is a brief reflection on my time at Bitmaker and what made it the right choice for me, a previously self-taught freelance designer/developer.
My answer is secret option C: both.
Throughout my undergraduate degree in philosophy and political science I found myself taking on freelance web design/dev jobs out of sheer enjoyment. The Jessica Hische-ism “procrastiwork” always felt apt: making things on the internet was the work I did when I should have been doing other work. First for my dad's small business and later for freelance clients or politicians I was working for, I would mostly build WordPress sites with themes I could hack in a fairly limited way, or use a no-code site builder like Apple's old iWeb (RIP).
Weeks later, I’d come back to programming, resigned to repeating lessons I’d already completed and managed to forget. Bitmaker was, for me, the answer to a persistent question: how can I build more interactive and complex things on the web? Many successful developers are self-taught, and this is surely a legitimate path to follow, but for me a bootcamp gave me the time and space to focus on one objective after years of ad hoc self-learning and build a portfolio.
A passion for programming is something I saw in all my classmates, and I think it’s the closest thing to a prerequisite for courses like Bitmaker’s. In the past few years, bootcamps have come to constitute a new category in education, and self-initiated learning is at their core. Your instructors are there to help you, not to convince you to work or reprimand you for skipping your homework three nights in a row. When prospective students ask me for advice, my main suggestion is to make sure they've tried building some simple web pages before sending in an application; it's a low bar, but if you don’t enjoy this much, you surely won’t enjoy doing it for ten hours a day, nine weeks in a row.
As for more granular tips on learning to program, I defer to the definitive post on the topic by Christina Cacioppo. It was written after I finished Bitmaker, but there isn’t a single observation out of place.
I can share more specific advice on what is and isn’t important while gearing up for the course, however. When I first started making my way through the prep material in May 2014, I found myself gravitating toward blog posts about spaced repetition memorization and other memory hacks. “Flash cards!” I’d think to myself wistfully, “at last, the answer to my problems...” Flash cards can be useful in retaining new material, and there are lots of great free tools like Anki if you’re interested. In retrospect, though, my search for a single unifying approach to learning Ruby was flawed.
When I think about the time I spent exploring different study strategies, one of Ben Horowitz’s famous lessons from his Netscape years comes to mind: there is no silver bullet, only a lot of lead bullets. Learning to build things you’ve never built before is mostly a function of persistence. It’s easy to feel discouraged--I certainly did!--but if you don’t fully grasp a concept today, trust that you’ll get it tomorrow, or the day after that. One day, as it tends to go, you’ll be right. As Christina Cacioppo puts it rather bluntly, “Learning to program requires tenacity, not brilliance. Most professional programming isn’t rocket science, metaphorically or actually.”
It’s not rocket science, but that doesn’t mean it’s not difficult (and it definitely doesn’t mean you won’t struggle). As a student who was used to feeling self-assured in classroom settings studying the humanities and often felt out of my depth at Bitmaker, this is far and away the most valuable lesson I learned: working hard and persisting is its own reward, not simply because trying and failing "builds character" in some abstract sense, but because it’s fundamentally how human cognition works.
As The Khan Academy founder Salman Khan writes in his excellent blog post “The Learning Myth: Why I’ll Never Tell My Son He’s Smart”:
Researchers have known for some time that the brain is like a muscle; that the more you use it, the more it grows. They’ve found that neural connections form and deepen most when we make mistakes doing difficult tasks rather than repeatedly having success with easy ones. What this means is that our intelligence is not fixed, and the best way that we can grow our intelligence is to embrace tasks where we might struggle and fail.
At Bitmaker Labs, perhaps more than anything else, you will struggle and fail. That’s what makes it such a fantastic place to learn. While attempting to build Rails apps on my own, I’d make moderate progress, hit a stumbling block I couldn’t overcome, get discouraged and walk away from the computer. Instead, at Bitmaker, after ten or fifteen minutes of struggling on my own--generally the point after which spinning your wheels becomes significantly less productive--I was able to find an instructor to give me the boost I needed to keep going.
As I came to discover, the core feature of a bootcamp is that it accelerates this feedback loop to enable you to fail faster, more often and in the most constructive environment possible. This is terrible for your ego but exceptionally effective where it counts: learning new and difficult things.