Software Designers~The People Behind the Code~(英語)

#5David Heinemeier Hansson (part 2)

David Heinemeier is the creator of Ruby on Rails and a principal with the application development firm 37Signals. He was our guest here for the May issue of Software Design, and we’ve asked him back for an encore.

Hansson’s range of opinions can’t be neatly boxed in. When it comes to the business of software development, he’s a tough critic, arguing that startups, and even some famous companies, have ignored business fundamentals--over-relying on venture capital and the largess of parent companies instead of figuring out how to turn a profit. But at the same time, Hansson argues that the culture of software development is in danger of becoming too rigorous. It should attract not just engineers, but artists; not just guys, but women, too.

We talked about all of this, as well as Hansson’s love of photography, in this follow-up conversation.

You’ve advocated that startup companies should know early on how they are going to making money. That opinion seems like common sense, but it has also been controversial.

Back in 2007, Michael Arrington, the founder of the TechCrunch blog, wrote that I was ⁠driving companies to the deadpool⁠⁠ by persuading some startups to charge for products that were already commoditized. He called that practice ⁠suicidal.⁠⁠ He cited one deceased company, Feedlounge, which was charging for an RSS reader―when its competition was both free and better known. The implied notion was that if only they had not charged for their product, everything would have been blissfully all right. That of course is totally moronic, an example of the ridiculousness of the West Coast mentality toward paid services.

Since then, several famous companies and divisions―all with free services―have been criticized for not having a plan to reach profitability: Twitter, Facebook, and YouTube, among them.

Absolutely: I’ve made the same argument about Flickr. For years we’ve been saying that you can’t make up for free with ⁠bulk.⁠⁠ High traffic alone does not guarantee profits. That’s especially true for services that are expensive to run, like YouTube with its massive bandwidth requirements. You have to have a plan, and if you don’t, you are going to end up with a huge deficit. YouTube can hide that deficit inside the massive cash cow that is Google, but that doesn’t mean that the practice of giving away services shouldn’t be looked at critically.

The term ⁠profitable⁠⁠ means more than just running at zero deficits. True profitability must factor in what may be millions of dollars already spent on research and development, and for a parent company, the millions or billions in the purchase price. All of this is being left out of the conversation when we are talking about so-called ⁠Internet successes.⁠⁠ There are indeed free services that do very well. But there are large, well known services that get a free pass on the baseline fundamentals of profitability. In 1997, Microsoft bought Hotmail for a reported $300 million. Since then, after you factor in the all the development and running costs, did Microsoft make that back? I’m not so sure that they did.

Why aren’t journalists digging into this? The problem with holding these brands up as great successes is that it tells young entrepreneurs: ⁠that’s how I should be running my business.⁠⁠ It’s more fun to tell the story about how a service came out of nowhere to become an Internet sensation. It’s a lot more boring to talk about simple business statistics: revenues, expenses and profits. But that’s become a gaping hole in the coverage of these companies.

Some companies have at least talked about “monetization.” YouTube, for instance, now runs adverting on some video streams. Are you saying that’s not enough?

It may be enough, but the practice came so late. I’m skeptical about companies that spend years in free mode before finding a magical formula that is somehow going to pay. Yes, it happens. It happened to Google, which had a great search technology, but no clear plan on how they were going to monetize it. And they did come up with the golden egg: paid advertising links. But that success happens only just enough that startups think it will happen to them.

You live in Chicago and talk about a “West Coast mentality.” Are you saying there’s a cultural aversion out here to hard-nosed thinking?

I think there’s a cultural mind bubble on the West Coast―and I can see why. There are all these companies with millions of dollars in venture capital funding, which takes away the urgency of making money. The lesson is that you can postpone profits for years, because that’s what everyone else is doing. The business climate becomes an isolated echo chamber that tempts you into thinking you don’t have to worry about the baseline fundamentals that everyone else in the world has to worry about.

What about open source projects?

The open source model works exceptionally well for improving software infrastructure, but not for end user products. At 37Signals, it makes perfect sense for us to put countless hours into Ruby on Rails because these are the tools we use to build a business. But if we didn’t have a business, that effort would make no sense at all. The problem arises when the charitable philosophy of the open source world ⁠bleeds⁠⁠ into the profit-oriented commercial world. Because at the end of the day, everybody has to eat―and just giving away your talents will not magically make that happen.

Sun is a good example. I love many of their open source products, but for Sun, pouring all those resources into those projects was only going to work if they had something else to fund that effort. And they didn’t. So Sun ended up getting bought out by Oracle, which does have a plan and a revenue stream.

Is Firefox the exception that proves the rule―an end-user open source product that has turned into a business?

It absolutely is. Firefox is a great example of end-user, open source software. And luckily enough, Mozilla’s deal to make Google the default search engine on Firefox has really paid off. But how many other examples do we have? Almost none.

You’ve taken a “softer” stance on the culture of software development. For example, longtime developer Robert “Uncle Bob” Martin argued in his RailsConf 2009 keynote speech that Ruby developers are endanger of getting sloppy and should take a rigorous, test-based engineering approach. But you think the profession needs artists, too.

Some of this might be a semantic distinction. But I do think there are possibilities beyond the archetypical engineering role Bob Martin well represents in his quest for high professionalism. There is also a role for artists―people who are less rigorous in following the rules, more experimental in their approach. The wonderful part of the Ruby on Rails community is that we have such a great mix of both. This is very evident at RailsConf, where you have people with all sorts of backgrounds. We’ve attracted people who have just made the transition from designer to programmer, as well as hard core engineers with five years worth of computer science education. It’s important to cater to and care for both of these branches of the community.

Would you have come up with Ruby on Rails if you had approached coding with the discipline Martin advocates?

I wouldn’t have been interested in code, at all. I wanted the experience of practicing the craft, which to me is much more about artisanship than engineering. So the engineering culture has contributed a lot―but not everything. My overall point is that there are many approaches to solving a problem and creating new kinds of software. That means attracting people to the profession from a variety of backgrounds and perspectives.

Do you see any projects beyond Ruby on Rails that demonstrate the value of an artisan approach?

One of them is the Apache CouchDB project, which is an example of a document-oriented database. Another example is SimpleDB from Amazon. The developers have turned the conventional wisdom about relational databases on its head. They ask: what if we did things really differently. What if there were no constraints, at all? What if the schema was completely liquid and we did things we don’t normally do? That’s an artist’s approach, more than an engineer’s.

You also argue that the profession needs more women. Do you think a hard core engineering stance is keeping women away?

I think that’s a huge part of it. I recently asked one woman, a writer, what the world of programming meant to her. She talked about the tech support person at work who couldn’t communicate at a human level. She said that the profession seemed mechanical, even binary. And that is the stereotype: for most people, programming seems incredibly boring. So I talked to her about the community around Ruby―who we are, what we liked, and the idea of beautiful code. And she began to see us in a new light. We need to talk more often about that side of the craft, because in doing so, we can attract a wider group of people. At the same time, there are gender differences, and not every profession is going to have a 50-50 ratio. And I don’t think the reason for fewer women programmers has to do with sexism or ⁠alpha programmers⁠⁠ who scare women off.

Bob Martin’s critique is not only directed at programmers, but at the language itself. He argues that Ruby, like Smalltalk, could become less popular because it lets programmers get away with writing bad code―much more so than C++.

I don’t know if that’s really true. C and C++ aren’t immune from bad code just because you have to compile them. I’ve seen plenty of horrible code in those languages―the code compiles, but you’d never want to read it again. The same is true for Java code, which has rigorous standards for compilation. Even so, the worst code I’ve ever seen in my life is Java code.

Finally, I want to ask you about all the photographs you’ve put up on your blog. Is photography a hobby?

I love photography. I like that you have a set number of constraints: the viewfinder which crops the world, as well as the aperture, exposure and ISO light sensitivity. Just in tweaking those limited parameters, you can come up with something magical.

What camera do you use?

A Canon 5D Mark II. It’s a great camera―an amazing example of how much the state of the art in digital photography has moved forward. But it’s important to remember that people are also taking superb pictures with their cell phones. That’s a good reminder that you can make something exceptionally great even with very limited constraints.