by JENNIFER DEWALT
A little over 5 months ago, I decided I was going to learn to code.
Ignoring the fact that I had no prior coding experience and had never taken any “technical” classes in school, I dove straight into the deep end: I decided to build 180 websites in 180 days, with no days off.
Believe it or not, my background is actually in fine art. The thing that originally drew me to art is that it is an avenue to explore how people represent themselves to the world—what clothes we wear; our mannerisms; how we communicate. In the past I’ve tried to capture this projection of the self with drawings and sculptures.
But now it’s 2013, and we are no longer governed by paper and other physical media. The rise of the Internet has broken down so many obstacles that used to inhibit communication. Barriers to communication are so low, in fact, that we feel compelled to create virtual identities in order to communicate and interact with other people.
This virtual interplay is ridiculously awesome, and I wasn’t satisfied with just being part of the conversation. I wanted to be able to create the communication channel that makes these interactions possible.
After spending way too long thinking about how I was going to learn to code, I decided to JFDI. I gave myself a simple and strict structure:
1. Build a different website every day for 180 consecutive days.
2. Every website must be accompanied by a blog post.
3. Any code I wrote must be made publicly available on GitHub (open source) so that everyone can see it.
It’s been frightening to have all of my mistakes and misunderstandings out in the open. The fact is, if you want to learn to code, you are going to make a lot of mistakes. But just because you are going to make mistakes and you will look foolish sometimes doesn’t mean you shouldn’t code.
One of the biggest misconceptions about coding—and one that I personally prove wrong—is that you need to be a certain type of person to code. You don’t need to be a math whiz; you don’t even need any prerequisites. The compiler doesn’t give a damn about that. All you need to do is start typing.
When I decided I was going to learn to code, I had a lot of options to consider about how exactly I was going to do it. There are tons of courses you can follow or boot camps you can sign up for, but none of those really appealed to me. For me, learning to code was a lot like learning to roller skate. You might need a helping hand to get your footing beneath you, but to gain any real finesse you’ve got to do it on your own.
And actually, it’s often the case that the best way to learn is to solve problems that you actually have. By not using a course or textbook and instead simply following my own path, I can tackle new concepts and problems in the most logical order possible—i.e., precisely when I have them. When I have questions, I look them up on Stack Overflow. If I need to make a big jump, to something like starting a new language or platform, I’ll bootstrap off of a textbook—but only until I get off the ground.
While some days are insanely frustrating, other days I feel like I’m on the top of the world, telling the computer what for. On Day 55 I made the Paratroopers game: one of the first websites where I had gained some control over all the new skills I was acquiring. It wasn’t an easy website for me to make, and it’s by no means a finished product. But, instead of inhaling new concepts and regurgitating them as quickly as possible, making Paratroopers felt more like using the tools at hand to craft my vision. I hope that by the end of the 180 days I’ll be able to take more of my visions and craft them out of bits.
Doing a website a day forces me to move on, and forcing myself onward isn’t always easy. Some days I feel like I’m bashing my head against a wall. A few weeks ago, I had an idea to make this really cool, chain reaction game I called Swivel. The logic was a little complicated but I coded it up and got all my Swivelers swiveling. Success! Until I looked a little more closely and realized—it totally wasn’t working at all. I had to go back to the beginning and recode everything.
After pulling the code apart and putting it back together several times, I finally fixed the Swivelers. I didn’t have time to put the game parts in, so I ended up sending Swivel out into world ‘unfinished’. But a huge part of this project is that, in a sense, every day I fail. Every website that goes out the door is unfinished.
One of the hardest things to do, when learning something new, is to be comfortable with the fact that there are some things you just don’t understand—and then to move on. When facing a new challenge, it’s far too easy to say, “I need to spend more time where I am at right now.” True, at first you might be right. But if you aren’t careful, these phrases can easily become a crutch to justify why you aren’t taking that next big step.