One of my goals for 2013 is to learn enough about programming to build and release publicly a simple web application that does something interesting.
I’ve been working toward this goal for about a month and wanted to share some thoughts on it so far. In this post, I’ll share my history with programming and why I’ve dedicated myself toward this goal. In a later post, I’ll talk more about how it’s progressing.
My history with programming
In high school and college, I took a few basic computer science courses. I learned Java and Python, played with if/then statements and while loops, and built little applications that did things like simulate games of Craps.
While it was interesting, I struggled with the assignments and learned more towards basic sciences, like biology, where simply mastering a lot of content was enough to get good grades. I didn’t pursue advanced studies in CS.
In September 2010, I made my first attempt at learning Ruby on Rails. Back then I was still working at isocket as a business guy and not a founder. I made a number of mistakes, including not having a learning plan and trying to start on the newly updated versions of Ruby and Rails at the time (1.9.2 and 3.0.0, respectively).
I spent a lot of time banging my head against the wall and was too proud to ask for help, making it really hard to make progress. These frustrations, along with the fact that my blog readership was growing, led me to abandon my programming studies after a few months to focus on writing.
In 2011, I applied to Y Combinator and got it, and had my hands plenty full with customer development, marketing, recruiting, etc. In 2012, I continued to be super busy with product, business development, community management and growth — though I often felt the pain of not being able to fix a piece of the product myself or understand why development was proceeding in a certain direction.
Now, in 2013, I’ve overcome that slightly traumatizing first experience, and giving it another shot.
“Why is coding suddenly cool?”
I’ve mentioned my goal to a few people and one asked:
I’ve been coding professionally for about 15 years, and I’ve never (well, until very recently) noticed any interest in people out of college in learning to code.
It feels like something has changed in the past few years. I had figured that places like CodeSchool were for existing coders who wanted to learn a new language, but you’ve convinced me otherwise.
So what’s going on? Why are you learning to code? Why is coding suddenly cool?
The short answer is that I’ve always loved playing with computers and technology and this is a natural extension of my desire to create interesting things that are useful and impactful.
The longer answer is more complicated.
As a startup founder, my livelihood is based on the idea that by creating compelling and useful web (and mobile) applications and putting them in the hands of the right people, enormous value can be created – for users, team members and shareholders.
My role has focused on the “putting the applications into the hands of the right people”. I work on growth and community at Ridejoy. But it’s still odd and frustrating to not be able to understand, much less contribute, to the core part of the company – the product itself.
McDonalds owner/operators and managers all have to go through rigorous training at Hamburger University (not a joke!) and practice serving customers, cooking food and managing all the elements of a store — in addition to general finance, operations and other business areas. McDonalds understands that even if a manager or owner never has to actually flip burgers themselves, it’s essential that they understand how it’s properly done.
I do think coding has gotten more mainstream. The Social Network put the words “You know what’s cool? A billion dollars.” into everyone’s vocabulary. Code Year (put on by a fellow YC company Codecademy) got 450k+ people to commit to learning to code, including a one Michael Bloomberg, mayor of NYC.
For me though, it’s less about doing something cool, and more acquiring an essential skill set for being a professional in the technology sector.
How others have put it
As a “business guy” in a startup, I’m encouraged by the fact that others have come before me. Jason Fried, a cofounder and partner at 37signals, has also just recently started learning how to code. He explained why in his Inc magazine column:
First, I want to be a better co-worker. I’m a designer, but I rely on programmers to bring my ideas to life. By learning to code myself, I think I can make things easier for all of us. Similarly, I want to be able to build things on my own, without having to bother a programmer.
It’s one of the most important facets to a successful startup and getting your hands dirty in code is what gets you today’s ultimate respect. Without a doubt, your team members will respect you far greater if you were the person that not only had the idea, but also developed the first prototype.
I’m nervous about this project. Having tried and failed before, I don’t want to fail again. The words of Vincent Vacanti of Yipit assure me that this feeling is natural. As he wrote in his blog post about becoming his own technical co-founder (emphasis his):
So, it was now October and, after failing to find a good technical co-founder, we knew we had to make a decision. Either we give up or one of us would become our technical co-founder. Since I had taken two intro CS courses in college, we decided I would become the technical co-founder and Jim would help out on the front-end development (HTML/CSS) side.
I was terrified. I had never built a site and hadn’t written a line of code since my freshman year of college (7 years ago). I thought we were doomed.
While I’m not sure I’ll learn as quickly as Vincent, I do take inspiration from his journey. But beyond the connection I feel with seeing my peers take on this challenge, there’s the larger environment.
Learning to code means reclaiming patience and persistence and making them your stubborn own. If I’m spellbound, it’s partly because all the time I’ve poured into programming has restored my faith that I can learn new things. Maddening new things. Stupid, no-good, very-badly-documented new things. But when it all works, when it all fits together and the script runs without errors and your screen fills with something you’ve never seen before: you clap your hands together quietly and realize you’ve made it to the edge of what’s possible.
Programming and the big picture
Marc Andreesen wrote a piece for the Wall Street Journal in 2011 where he proclaimed that software was eating the world. The cofounder of Netscape, one of the first widely adopted web browsers, and now partner of a top venture capital firm, Andreseen outlined how software has already massively transformed numerous industries including retail, entertainment, telecom, recruiting, logistics, financial services and even national defense — and that no major industry would be immune from the coming software revolution.
A fellow YC alumni, a business journalist-turned-entrepreneur, describes how much algorithms play a role in our lives with his book Automate This. From Wall Street to the Billboard 100, systems that encode human knowledge into decision-making systems have created billions in value and upended jobs previously assigned to the skilled, the fast and the thoughtful (people that is).
Ultimately, I feel I must take a deeper role in the software revolution. Yeah, it’s about being able to push changes to Github and build neat side projects, but it’s also seeing the tidal wave of software engulfing everything, and learning how to surf.
In my next post I’ll describe the approach I’ve taken to learning how to code and how it’s gone so far: Learning to Code: Lessons from Building a Rails App with Treehouse