person at computer
Death to the Stock Photo

Last year, I made a very big decision in my life—2013 was going to be the year I finally learned to code.

I’ve always been fascinated by the internet and how technology allows us to communicate with people around the world. There is so much awesome technology being built right now, and I realized I wasn’t content to just sit back and use those communication channels—I wanted to make them myself. I had no technical background and had never really done any coding, but I knew it was now or never.

Of course, the first question was: How? There are tons of options for learning how to code: online programs, books, night classes, boot camps—the list goes on, with each option requiring varying levels of commitment.

I had poked around some coding tutorial books in the past, but didn’t have much success. I wanted to learn, but I could never seem to get to a point where I felt like I was accomplishing anything. I’d get a few chapters in and end up totally confused, wondering why on Earth I was using code to make the words to “99 Bottles of Beer” print in the terminal. Then I would give up.

To really learn, I knew I needed a real project where I could see the practical results of what I was doing and share my success with others. So, I decided to create my own path to learning to code: I quit my job, stocked up on ramen noodles, and decided to JFDI (just f*cking do it) by building 180 websites in 180 days.

While it’s certainly not feasible for everyone to devote themselves full-time to a project like this, there are still plenty of ways you can use my hands-on approach to learn a new skill. Whether you’re itching to know how to code or something else entirely, read on for some of the biggest lessons I learned from my journey and how you can apply them to your own adventure.

1. Start Small, Keep Building

Learning any new skill can be overwhelming when you’re staring up at a mountain of knowledge you’re trying to conquer. So, rather than tackle the entire mountain, I decided to do one mini project a day, which would help me stay focused on making small, incremental improvements.

Before I started the 180 Websites project, I knew I wanted to be able to make big, interactive web apps, but I knew almost nothing about how to make even a basic website. So I started by making something very simple, just a couple of lines of code. It took me all day, scouring the internet for answers to my questions, but it was the first step.

Each day, I did something a little more complex, building on what I had already learned. Having to produce a final product every day meant that I couldn’t let myself get hung up on understanding every single concept I was exploring—I had to keep moving. And as a result, it didn’t take long before my little baby step improvements started snowballing into big leaps.

By later on in the project, I was doing thing I never imagined I would. A lot of the websites I made were fun and playful. I made toys like the Sushi Jiggler and Etch-A-Sketch and games like Simon and Minesweeper. I also made more serious apps. I became really interested in data and made presentation tools like Elevations, which plots the terrain between two places on Earth. Communication and sharing was also an important concept for me, and I made apps like Audio Garden to help people connect around the world. How We’re Feeling, which tracks the emotions of people on Twitter, is one of my favorites.

When you are learning something new, you’ll often come across concepts that simply don’t make any sense the first time you see them. It’s dangerously easy to get caught up trying to understand every detail, become discouraged, and give up. Putting a hard, one-day deadline on each website forced me to just make stuff work rather than worrying about “getting it.” As long as I kept moving forward, I knew eventually I’d understand the things that I didn’t quite get the first time around.

2. Putting Yourself Out There is the Best Way to Stay Accountable

In addition to putting my daily website online, I also put all of my code on GitHub (the code-sharing platform for 6 million people worldwide) for what felt like the entire engineering community to see. No joke—this was terrifying! Everyone was going to be able to see how bad I was! All of my mistakes, out in the open!

What I soon realized, though, was that by sharing my work publicly, I didn’t leave any room for slacking off, and I felt pressure to keep improving. I was also able to get real feedback about my code and my websites, which helped shaped what ideas I wanted to explore next. More importantly, exposing my mistakes and misconceptions taught me to be more comfortable with not knowing everything.

The thing is, learning is messy and you’re going to make mistakes, no matter what the subject matter. When you’re learning something new, you have huge gaps in your knowledge, which can be really embarrassing. Your instinct might be to try to cover up those gaps, but that doesn’t help you fill them in. Sharing my mistakes helped me overcome that instinct, to face my knowledge gaps, and really grow from them.

3. Tracking Your Journey is the Best Way to See How Far You’ve Really Come

In addition to building a site every day, I also wrote a daily blog post to journal my project. Of course, blogging certainly isn’t essential to learning to code—or learning anything other than writing—but it did help me develop a very important skill: the ability to communicate about my work and share my story.

I had never written a single blog post before I started the 180 Websites project (which will come as no surprise if you read my first posts from the project), so writing every day wasn’t easy at first. I often felt like I didn’t have anything interesting to say. But the more I wrote, the easier it became. I found that writing about what I was learning gave me a place to summarize the concepts I was struggling with and the opportunity to develop my programming vocabulary. It also gave me a place to think about things beyond coding, like how what I was learning related to real life. By the end of the 180 days, I had not only learned to code, but also how to talk about my experience as a coder.

A year and 250+ blog posts later, I’m now a huge advocate of the power of blogging, and I encourage anyone and everyone I meet to start, especially if you’re trying to learn something new.

Following my own path wasn’t always easy, and there were certainly days I felt very lonely. However, it gave me the opportunity to explore ideas I might not have been able to in a more structured atmosphere. For example, I discovered that while I’m not big on numbers and math, I love data! I also learned to forget about perfection and embrace rapid iteration.

Most importantly, I learned to own my work unapologetically. Whenever you take big swings in life, there will be naysayers and skeptics. Their comments might sting, but don’t let negativity feed your self-doubt. If you want to do something groundbreaking, sometimes you have to go out on a limb.