Chris Oliver Chris Oliver

Practice Like An Athlete

Apr 12, 2013

My introduction to programming started in the 7th grade. My dad was cleaning an old bookshelf when he brushed off his old Atari Basic programming book.

He handed it to me and mentioned I might find it interesting. We had an old Magnavox computer running DOS at the time. I took a guess that this book might help me write programs for that computer because we didn’t have an Atari.

I sat down and started digging around. It turned out the computer had GW-Basic installed. Being close enough to Atari Basic, it was possible for me to start writing code, one line number at a time.

Programming quickly became my passion after that, but everything felt unattainable. I loved video games but teaching myself programming in grade school made it hard to understand the most basic of concepts. I didn’t even understand that you could reuse variables because we were just getting into algebra at school.

There was so much I knew I had to learn. It was clear that I needed to practice very hard in order to become a real programmer.

School went on, I went to high school, started programming my TI-84 calculator and eventually went to college. Each year I was approaching the end of my formal education, learning more and more each grade.

When I got my first laptop, I installed Ubuntu linux on it. There was this particular application I used almost every day and it was written by a college student. His software was fantastic and I loved it so much. At that point, the only major goal I had as a college student was to run my own open source project like he did. I wanted to be proud of my software and support a group of happy users.

Every waking our started going into learning how to write software. It was incredible how much time I spent looking back.

I knew I wasn’t good enough which made it easy for me to write bad code. No matter how bad it was, I pushed it out. It was almost always better than my friends’ code, but not anywhere as good as I thought it could be. That’s why I spent 6 hours a day writing programs to do everything from homework to video games.

Looking back on all the time I put in practicing, it feels absolutely ridiculous. I spent 4 years working on Keryx, rewrote it about 12 times, and not only did I learn how to build software, I learned how to support my users, manage my expectations, and plan software properly. It was easily one of the biggest struggles I’ve ever battled through in my life.

What it lead to, though, was like a trail of dominoes. Once I finished a working version, I was brought to tears by some of the thank you emails I received. My experience building software got me into Google Summer of Code 2009. It got me multiple jobs and, to this day, reminds me that in order to do a good job, you really have to care about what you’re doing.

Just like the best athletes, I spent hundreds of hours practicing my craft. Michael Jordan has been known to take 100s of shots a day in practice. Anyone who is exceptional stands out because of the effort they put in.

It’s not the amount of time spent practicing either, it’s also about what you practice. There are so many things in an area to get good at. A basketball player can’t only practice free throws. They have to practice shooting, passing, blocking, stealing, layups, and so on. As developers, we need to be doing the same during our careers. Stretch your legs with a new language, mobile app, or new library.

You career should be a labor of love. At times we hit a wall, but that’s all the more reason to push your boundaries and grow.


Continue reading

Ruby Midwest 2013 Notes Paul Graham Interview