Friday, May 18, 2012

Steve Huffman has something to teach you


Sometimes, the most valuable lessons come from experience. For Steve Huffman, learning to build web applications has given him the opportunity to co-found two startups and gain valuable knowledge that he’s ready to share with Udacity students.

Steve Huffman, co-founder of two startups, Reddit, a site where users can share links to any and everything, as well as Hipmunk, a site that lets you book travel and hotels, is a recent addition to Udacity’s teaching staff.

Huffman brings a fresh perspective to the online classroom in CS253 Web Application Engineering, a course that walks students through the process of building their very own blog application to share with the world. Huffman teaches from experience, showing students how to approach building web apps in a way that assuages the potential challenges students may face.

“This class is a lot of lessons that I learned, on my own, working on Reddit. There were so many pieces to writing web applications and I didn’t really understand any of them. And so, this class is basically a summary of all the things I learned through experience.”

The road to startup stardom

Huffman’s journey to startup success began with an idea and the support of his programming hero, Paul Graham. Graham is the founder of Y-Combinator, a company that makes small investments in return for small stakes in the companies they fund. In 2005, Huffman along with his co-founder, Alexis Ohanian, took their idea and applied to Y-Combinator.  After their idea was rejected, they worked with Graham to develop a new idea.

“We applied to Y-Combinator with a completely different idea from Reddit and were rejected. Then Paul invited me and Alexis back and said, ‘If you want to work on something else, we’ll fund that, I just don’t like your previous idea.’ So we had a brainstorming session and out of that came this notion that we would build a site where people could find out what’s new and popular online.”

The two set to work, living and operating on a shoestring budget of about $12,000.  Huffman recalls that, “The odds were decidedly against us, the idea was literally no bigger than to find what’s new and interesting online.”

Beginning on June 1, after just three weeks, Huffman and Ohanian put the first version of Reddit online.  Admittedly, the two did not know much about building web applications, so their first rollout was really clunky. Initially, they submitted all of the content; but within six months, after users had been interacting with the site their simple idea took on a life of its own.

“For a while we were just pretending it was working until it actually started working. The whole notion of the way Reddit works, the submissions, the voting, the comments and all of that stuff came organically. Having real users is really cool and they can do really amazing things.”

How do you build a web app?

For Reddit, users are the singular driving force behind the site’s success. So, when it comes to learning how to build web applications, what is there to know? How can you create a web app that will reach millions? As a programmer you are at a good starting point. A moderate amount of computer science knowledge is required for CS253 Web Applications Engineering, which focuses mainly on systems and web architecture.

Students enrolled in CS253 are introduced to how the web works, HTTP and web applications. With the goal of building a blog application in mind, Huffman leads students through all of the necessary aspects for the application to be user-friendly and accessible to millions. This involves learning about how to obtain and process user information, creating databases and storing information, security protocols, using application-programming interfaces (APIs), and most importantly how to grow and sustain the app.

Building web apps requires very few resources, and this is what keeps Huffman enthusiastic about the process. “I think web apps are nice, in particular because the resources you need for starting a real company that changes the world in a big way are so few. Not everybody can build a self-driving car because you need the car and robotics. But web apps you just need a computer. You don’t even really need a computer, you can use somebody else’s.”

Two business models

While it’s true that the resources required to build a web app are few, the story changes when it comes to starting the business. Huffman’s companies provide good examples of two very different business models. The two companies also shed light on varying degrees of potential that your web applications project can achieve.

Reddit makes its money through advertising; plain and simple. But if advertising is going to be the only source of revenue, it requires a large audience, like Reddit, which saw around 3 billion page views last month. On the other hand, Huffman’s new company, Hipmunk, which connects travellers with tickets and accommodations, sources revenue from both airlines and hotels. The difference between the two companies, Huffman says, is that Hipmunk is deliberately engaged in the exchange of money. Where Reddit is a free service for users among users, Hipmunk facilitates the service of booking travel, an inherently profitable business model.

In hindsight Huffman notes, “I’m never going to do a another startup that is not involved in the exchange of money because otherwise you have to contrive business models and Reddit has always struggled to make money.”

Hipmunk is not the only web app of its kind, but Huffman says that Hipmunk is doing better than their competitors across the board. Philosophically, Hipmunk is a different kind of company, working to help people find their tickets and rooms as quickly as possible. “Rather than building a product, like a lot our competitors do, which is optimized around selling ads and keeping people on the page as long as possible, our users appreciate a swift booking experience.”

Problem solving through programming

Huffman points out that regardless of whether or not you are building a web app to develop a lucrative startup, or just doing it for fun, the skills are the same. When asked what his advice is for people who are just starting to learn to program Huffman says, “Take it one day at a time. Programming is neat because you can solve problems you have, so if you need to organize to do lists or you want to download a bunch of webpages to make your own news site, you can do that – you have the power to do that!”

Your perspective on the world will change when you acquire skills that enable you solve problems you encounter. Since he was a child, Huffman has used programming as a means of solving problems and continues to advocate programming as one of today’s most relevant skills.

“Software and the web are taking over the world and most businesses are moving online. With this in mind, being able to write web applications right now is probably the single most valuable skill you can have. I am an instructor because I think spreading this knowledge is really cool; the more people that have it, the more people who are empowered to make the world a better place because the future is being written by software.”

As a child Huffman said he was always writing calculators because he was learning arithmetic in school. These days, he uses his programming skills to solve some of the world’s more pressing challenges: “My wife is really into Sudoku and I remember sitting next to her on a plane, thinking, ‘this is such a waste of time, why are you doing it?’ So, I wrote a program to solve all of her Sudokus for her!”