CONTENTS
CHAPTER 0
SOFTWARE TIME
[19752000]
CHAPTER 1
DOOMED
[JULY 2003]
CHAPTER 2
THE SOUL OF AGENDA
[19682001]
CHAPTER 3
PROTOTYPES AND PYTHON
[2001NOVEMBER 2002]
CHAPTER 4
LEGO LAND
[NOVEMBER 2002AUGUST 2003]
CHAPTER 5
MANAGING DOGS AND GEEKS
[APRILAUGUST 2003]
CHAPTER 6
GETTING DESIGN DONE
[JULYNOVEMBER 2003]
CHAPTER 7
DETAIL VIEW
[JANUARYMAY 2004]
CHAPTER 8
STICKIES ON A WHITEBOARD
[JUNEOCTOBER 2004]
CHAPTER 9
METHODS
CHAPTER 10
ENGINEERS AND ARTISTS
CHAPTER 11
THE ROAD TO DOGFOOD
[NOVEMBER 2004NOVEMBER 2005]
EPILOGUE
A LONG BET
[20052029 AND BEYOND]
For my parents
AUTHORS NOTE
T he shelves of the world are full of how-to books for software developers. This is not one of them. Im barely an elementary programmer myself. I wouldnt presume to try to teach the experts. And if my research had uncovered some previously unknown innovation or fail-safe insight into building better software, Id be smarter to seek investors, not readers.
So while I hope that programmers will enjoy this work, it is meant equally or more for the rest of us. It poses a question and tells a tale. Why is good software so hard to make? Since no one seems to have a definitive answer even now, at the start of the twenty-first century, fifty years deep into the computer era, I offer, by way of exploration, the tale of the making of one piece of softwarea story about a group of people setting their shoulders once more to the boulder of code and heaving it up the hill, stymied by obstacles old and new, struggling to make something useful and rich and lasting.
Software is hard.
Donald Knuth, author of
The Art of Computer Programming
CHAPTER 0
SOFTWARE TIME
[19752000]
I t was winter 1975. I hunched over the teletype in the terminal room, a hulking console that shook each time its typewriter head whammed leftward to begin a new line. I stared at smudgy lines of black code. Id lost track of the time several hours before; it had to be after midnight. The janitors had switched off the hall lights. I didnt have anyones permission to hang out there in the NYU physics building, using the computer account that the university was giving away, for free, to high school students. But then nobody was saying no, either.
I was fifteen years old and in love with a game called Sumer, which put me in charge of an ancient city-state in the Fertile Crescent. Todays computer gamers might snicker at its crudity: Its progress consisted of all-capital type pecked out line by line on a paper scroll. Youd make decisions, allocating bushels of grain for feeding and planting, and then the program would tell you how your city was doing year by year. Hammurabi, it would announce, like an obsequious prime minister who feared beheading, I beg to report...
Within a couple of days of play Id exhausted the games possibilities. But unlike most of the games that captivate teenagers today, Sumer invited tinkering. Anyone could inspect its insides: The game was a set of simple instructions to the computer, stored on a paper tape coded with little rows of eight holes. (The confetti that accumulated in a plastic tray on the teletypes side provided nearly as much fun as the game.) It had somehow landed among my group of friends like a kind of frivolous samizdat, and we shared it without a second thought. Modifying it was almost as easy as playing it if you took the couple of hours required to learn simple Basic: You just loaded the tapes instructions into the computer and started adding lines to the program.
Sumer was a blank canvashistory in the raw, ready to be molded by teenage imaginations. My friends and I took its simple structure and began building additions. Lets have players choose different religions! What if we throw in an occasional bubonic plague? Barbarian invaders would be cool. Hey, what about catapults?
That night I was obsessed with rebellion. Sumer had always had a rough provision for popular uprising; if you botched your stewardship badly enough, the people would rise up and remove you from power. (Sumers original author was an optimist.) I thought there needed to be more variety in the games insurrections, so I started inventing additionsnew subroutines that would plunge Sumer into civil war or introduce rival governments competing for legitimacy.
I didnt care how late it was. The F train ran all night to take me home to Queens. The revolution had to be customized!
A quarter century later, in May 2000, I sat in an office in San Francisco and stared at a modern computer screen (high resolution, millions of colors). Wan ranks of half-guzzled paper coffee cups flanked my keyboard. It was 5:00 A.M.
I was forty years old, a founder and now managing editor of the online magazine Salon, and in charge of a software development project. It had taken us months of meticulous planning. It promised to revolutionize our Web site with dynamic features. And it was disintegrating in front of me.
The lead programmer, after working around the clock for weeks and finally announcing that his work was done, had taken off for Hawaii on a long-planned family vacation. That left his boss, Chad Dickerson, our companys technology VP, to figure out why the database that stored all our Web sites articles would not talk to the programs that were supposed to assemble that data into published pages. Chad had been up for two nights straight trying to fix the problem. Otherwise, our two million readers would find nothing but old news on our site come Monday morning.
Hadnt we built software before? (Yes.) Didnt we test everything? (Not well enough, apparently.) How could we have screwed up so badly? (No good answer.)
I ate the last bag of pretzels from our vending machine, paced, and waited. Nothing helped. There was too much time. Time to read the email from a hapless colleague whod planned a champagne-and-cake celebration in honor of the new project, and to respond: Maybe we should hold off. Time to feel alienated and trapped and wonder whether it had been a smart idea to give our systems central server the name Kafka.
We finally published the first edition of our new, improved site at around 9:00 A.M. As my coworkers showed up at their desks in their usual Monday morning routines, it took them a while to realize that a half dozen of us had never gone home the night before.
Within a few weeks the software calmed down as our developers fixed the most pressing problems. But every time I hear about a company preparing to upgrade its platform by introducing a big new software scheme, I cringe.
The 1990s technology-industry boom introduced us to the concept of Internet time. The phrase meant different things to different people, but mostly it meant fast. Under the digital ages new temporal dispensation, everything would happentechnologies would emerge, companies would rise, fortunes would be madeat gasp-inducing speed. That meant you couldnt afford the time to perfect anythingbut no need to worry, because nobody else could, either.
Next page