From Bitmaker to Breather
Part 1: A QuickStart™ Guide to Making Things on the Internet
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 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 a bootcamp like 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 Street West.
This is my attempt to remedy the situation. Over the course of a few posts, I hope to provide anyone who may be considering Bitmaker Labs or a similar program not only a snapshot of my time as a Bitmaker student, but a quick look at my experiences as a recent grad as I searched for a job, entered the workforce and found myself joining the best team I could have hoped for at a company called Breather.
How To Drink From a Firehose: A Beginner’s Guide
Throughout my undergraduate degree in philosophy and political science at the University of Toronto, I found myself taking on freelance web design and development jobs out of sheer enjoyment. The Jessica Hische-ism “procrastiwork” always felt particularly apt: making things on the internet was the work I did when I should have been doing other, more important work.
In my final year of university, I got bored of making static web pages so I signed up for One Month Rails and started learning ruby at night. This turned out to be a lot more fun but also more difficult than expected: I’d start making meaningful progress only to have my busy school schedule take over. Weeks later, I’d come back to programming, resigned to repeating lessons I’d already completed and managed to forget. Bitmaker Labs was, for me, the answer to a persistent question: how can I learn to make better things on the web? When I sat down with Erik and Minh in my December 2013 interview at Bitmaker’s old location on Duncan Street, they asked what I would do if I didn’t receive an invitation to join Bitmaker’s summer 2014 cohort. I didn’t have to think about the answer: “I’ll keep learning how to build Rails apps, it might just take me a bit longer.”
The @bitmakerlabs teams! #AngelHackTO pic.twitter.com/FPAvZgCfw1— Alessia Bellisario (@alessbell) June 21, 2014
A passion for programming is something I saw in nearly all of 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-motivated learning is at its core. Your instructors are there to help you, but not to force you to work or reprimand you for skipping your homework three nights in a row. This is a feature, not a bug, of the bootcamp model. When prospective students ask me for advice, my first tip is to build something before sending in an application to be sure you enjoy the actual practice of programming: if you don’t, you likely won’t enjoy doing it for twelve hours a day, nine weeks in a row.
As for more granular tips on learning to program, I’ll defer to the definitive post on the topic by Christina Cacioppo. It was written after I finished Bitmaker, but there isn’t a single piece observation out of place.
Today's lesson @bitmakerlabs: good design practices + http://t.co/o74QTRCARU. Kidding! It's jQuery. Totally jQuery...— Alessia Bellisario (@alessbell) July 4, 2014
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.” Invariably, 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 — some of it well spent, some not so well spent— 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 really a function of hard work and 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 eventually 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.”
Evidence that programming isn’t rocket scienceIt’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, this is far and away the most valuable lesson I learned: hard work is its own reward, not simply because trying and failing builds character, 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, there were signs posted around the classroom with a short list of steps to follow when you found yourself stuck on a problem and ready to toss your MacBook out of the nearest window: first, try to troubleshoot it (learn to read even the most opaque error messages, find the right answers on Stack Overflow, etc.), but after ten or fifteen minutes of struggling on your own — generally the point at which spinning your wheels becomes significantly less productive — find an instructor to give you the boost you need to keep going.
Fun Fact: since Ruby 1.9.2, Time method can represent 1823-11-12 to 2116-02-20. tl;dr: In 102 yrs, all our OpenTable clones will break.— Alessia Bellisario (@alessbell) June 26, 2014
Invariably, the only way to get to the right answer with any degree of consistency is to get the hundred or so wrong answers out of your system until the right one becomes muscle memory. As I came to discover, the core feature of a program like Bitmaker Labs is that it accelerates the feedback loop to enable you to fail faster, more often and in the most constructive environment possible. As it turns out, this is terrible for your ego but exceptionally effective where it counts: learning new and difficult things.
Over the next while, I’ll be writing a bit more about my experiences post-Bitmaker. In the meantime, feel free to send me a note at firstname.lastname@example.org or @alessbell on twitter with any questions I’ve yet to answer.