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

#7Founder and CEO, Stone Design幼reator of Twittelator Pro Andrew Stone

On an organic farm outside of Albuquerque, New Mexico, Andrew Stone is raising chickens and growing vegetables?and writing applications. As an ⁠indie,⁠⁠ an independent software developer, he has written more than 30 apps, competing with what he calls ⁠bloated commercial software⁠⁠ from much larger companies. Last year, Stone Design produced a hit: Twittelator Pro, a Twitter client for the iPhone that has gotten a lot of admiring tweets.

Stone personifies the very idea of an indie. He dropped out of his Cincinnati high school at age 16 to travel in South America. He studied architecture and urban planning at the University of New Mexico, and began using PCs to calculate heat loss for solar adobe buildings. In 1987, working on a masters degree in computer science, he began programming software for Steve Job’s new company, NeXT. The Cocoa API and associated tools that came out of NeXT have served Stone well over the years, providing a long-term lesson in the benefits of object-oriented programming.

Stone lives on the farm with his wife Katie, who handles the finances for Stone Design, and their two youngest kids. Andrew makes his own garlic pickles, and his son Eli earned his first Mac by helping sell them on the side of the road. Stone’s favorite place to do coding is an adobe tower that looks like a chess piece. When I spoke with him, he was out in a field with his iPhone, picking cucumbers.

You work mostly alone, yet Stone Design has been very productive over the years. How do you do it?

I am both the CEO and the main coder?which means that the person who owns the code, owns the company. There are no meetings. There’s a single architect, me, who has all the code in his head so that it can stay fluid. If there’s a problem, it’s mine. There’s no blaming, no delegation. I began 20 years ago with the NeXT computer, Cocoa and Objective C, so I’ve been doing object-oriented programming for as long as anybody has been doing it. I’ve already made most of the classic mistakes. Now I just follow the APIs and take full advantage of them, and things just work.

Wil Shipley [creator of the Delicious Library media cataloging application for the Mac] called me the godfather of the indies, because I’ve been doing the indie thing for 20 years. When large companies have offered to buy us out, I’ve said no. Instead of making the quick profit up front, I’m happy with the continuing income you get by being an indie. I just know that I’ll make enough money, especially now that Twittelator Pro has gotten so popular.

But you must put in a lot of hours.

I’m a Samurai coder: I love to code. When I do it, I experience what people call the ⁠flow⁠⁠ [a term coined by University of Chicago psychologist Mihaly Csikszentmihalyi] meaning that you are so engaged in what you are doing that time disappears. I get up some mornings at 4 am, code for a few hours before the family wakes up, take the kids to school, go do yoga for an hour, and then jump back into the flow. I look up and it’s already late afternoon.

Conventional wisdom has it that you need a development team?that software is just too complex for one person. How did you get around that?

There’s a book of essays on software engineering first published in 1975 called ⁠The Mythical Man-Month⁠⁠ by Fredrick Brooks, who argues that the more people you have on a project, the longer it takes. Brooks thinks the better approach is to have a single architect with the vision. That way, everybody works from the same page.

In my experience, the traditional team development approach often just means inefficiency. A team can’t do anything until they delegate it, or hire someone else, or outsource it. Projects tend to get blocked. Whereas with my development model, which is just me and a few friends helping out, nothing is ever blocked. If I don’t know how to do something, I can research it and find out. I can move quickly. If Apple changes something, I don’t freak out?I just do it. It also helps if your successes are paced. When I first began developing for the NeXT Computer, we had a lot of big sales, which helped get us through the lean times.

You’ve had a long working relationship with Steve Jobs. What has that been like?

I met Steve in 1989. He’s a man of great passion for excellence, and that spirit permeates Apple and the products and software they make. To say he's demanding would be a massive understatement, but the results are so clearly remarkable, that it's totally acceptable. He has inspired the kind of loyalty that is unheard of in the computer business?many of my friends at Apple today have worked continuously for him since the '80's, and some have gone on to other things for awhile, and turned up there again.

Why do you think Twittelator Pro has become so popular?

I think iPhone apps in general have had low functionality?just three taps and you are done. Twittelator Pro breaks through that and introduces full desktop power, so much so that I’ve seen desktop clients for Twitter who are now copying our features.

You’ve said the idea for Twittelator came from a news report about a student who used Twitter to let his friends know he was being held by police in Egypt.

Yes, that was in April 2008. That got me thinking about the need for people to tap on just one button to send their location and an emergency message to friends. Twittelator v1.0 had that feature. By August, I shipped a commercial version, Twittelator Pro 1.0. But by February 2009, I hit a dead-end because I hadn’t cleanly engineered the product. So I threw everything out and went to version 2.0, which was a total rewrite and was beautifully scalable. Every month since February I’ve released a major version. The reception has been amazing. Guy Kawasaki has said good things. Apple featured it in newspaper advertising as one of the hot iPhone applications. When Apple asked me to incorporate all the 3.0 features in two days, I was able to do that?including support for video.

Twitter is a moving target, and the big companies are going to suffer. The companies that have products on multiple platforms will not have the focus. People have asked me to do a desktop version?but I think that’s like having two wives. No, I want to be able to give all of my love to the iPhone client. I’m doing other little iPhone apps, as well. I have about 10 projects going on that involve collaborating with other people. That’s my model now. Interesting people will pitch interesting ideas?and I write it for 50 percent of the profits. But what’s making the big money is Twittelator. So that’s where the love goes.

The Cocoa API has given you a single development framework to follow since NEXTSTEP. But the iPhone isn’t on that path. What was it like to start over?

The iPhone gave me the same satori-like experience I had back in ⁠89. When I first saw the iPhone SDK, I thought?it’s exactly like the [Cocoa API] AppKit, only it uses Objective C 2.0, which is far more terse. The SDK is clean, terse and consistent. It seems to incorporate everything Apple engineers have learned over the last 20 years. I was recently asked how long it would take me to make a streaming video app. I said ⁠dude, it would take less than an hour?just give me the URL.⁠⁠ The Web view already has a built-in QuickTime player?so all you have to do is open the view, connect it to a URL, and your phone will stream video. That’s the kind of leverage that you’re getting with the object-oriented kit.

Of course, there were a few new concepts related to programming for a touch screen, as opposed to mouse clicking. But those mapped very cleanly to past ideas: Apple simply added them to the event classes, so nothing was terribly unfamiliar. Within 100 days, three of us had produced three very professional iPhone apps. One guy worked on the UI, the other did the back end. I wrote most of the code. Now it takes even less time.

What’s your advice for developers interested in starting an indie career?

My main advice is not to fear the future. When I started out, I could never have thought I would still be doing Objective C programming 20 years later. The future is impossible to imagine. But if you are just starting out, you will be the father to whatever happens 20 years from now. So don’t be afraid that it has all been done: your generation will take it to the next step. As for being an indie, there has never been a better time. There are so many resources available on the Net.

The other thing about being an indie today is the number of resources that can help you. For example, Apple has these fantastic videos you can download that really spoon-feed you on the how to do Objective C and object-oriented programming. You can download their sample apps and turn them into something more complex?and maybe into something you can actually sell. Apple’s iPhone App Store takes care of the marketing and distribution, allowing you to focus on your code.

Does Twitter itself impact how indies get the word out?

It can really help if people start tweeting about your app. Twitter has reduced the six degrees of separation between everybody on this planet to about three. There’s something about Twitter’s immediacy and that it is not filtered by the powers that be?that make it very democratic.

Twitter is part of something larger that has to do with self-reliance. The whole idea about being an indie is that you can make it on your own wits?and there has never been a better time to do that. I put in passive solar heating in my house in the late 1970s. My house has a five kilowatt photovoltaic grid-tied system, meaning that we feed power back into the power company when we are not using it. I’ve been doing organic gardening for 35 years. Now that’s mainstream. Similarly, you can now participate in the global economy without being a corporate drone. This is a great time to be an old hippie. All of these ideas that were considered counter-culture are now at the heart of our culture. Maybe that’s because those of us who grew up in the sixties are now the tribal elders.