Tuesday, August 15, 2006

The Bit and the Pendulum: software development owns my soul

It's easy to avoid facing my dreams. There are always tasks handy to fill up whatever space I need filled--I spent three hours today on a whim writing a computer program that has no use, and another half hour digging behind the refrigerator for the lid of my popcorn popper.

Fred Brooks, computer scientist and author of the one nontechnical book all CS students read, The Mythical Man-Month (thesis: you can't make a software project finish sooner by adding more bodies) wrote, "How does a project get to be a year behind schedule? One day at a time."

Brooks wasn't talking about procrastination, but all of the ways he describes software projects failing seem to have analogues for common procrastination. Software teams fail, Brooks explains, because they put off troubling questions for later; because they get through what they know how to do, and assume that the rest, which they've been putting off, will be just as easy; because deadlines are formed as threats, rather than sober estimates; because anxious bosses know only how to demand progress, when they should be reevaluating their course; because meetings and arguments become a way for everyone to avoid facing the awful muck they're in.

The "sunk-cost fallacy" of economics points out that your decisions in the past shouldn't matter when you're deciding what to do next. Just because you've paid for the 2-pound steak that you've lost your appetite for doesn't mean you should eat it; just because you put $3000 into repairs on that car two months ago doesn't mean you should put in another $500 to keep it going; and just because you've spent six months and $250,000 developing a complex application one way doesn't mean you shouldn't scrap it and start from scratch. If you thought rationally about it you would change course (my friend Jenny says of such restaurant situations, "you paid for the pleasure, not for the pain"), but avoidance steps in and your brain can't abide it.

Conversely, just because you are probably wasting your time doesn't mean you shouldn't pursue a risky course like being an artist or writing software all by yourself in your 6'x12' closet home office in Brooklyn. If you're willing to spend hours every day reading about male monkeys who will pay to see pictures of female monkey asses on a computer screen, the only thing keeping you from charting that risky course towards your dreams is plain avoidance.

Here's Mark Twain on work and avoidance, as Tom Sawyer realizes the full implications of his whitewashing scam:
He had discovered a great law of human action, without knowing it--namely, that in order to make a man or a boy covet a thing, it is only necessary to make the thing difficult to attain. If he had been a great and wise philosopher, like the writer of this book, he would now have comprehended that Work consists of whatever a body is OBLIGED to do, and that Play consists of whatever a body is not obliged to do. And this would help him to understand why constructing artificial flowers or performing on a tread-mill is work, while rolling ten-pins or climbing Mont Blanc is only amusement. There are wealthy gentlemen in England who drive four-horse passenger-coaches twenty or thirty miles on a daily line, in the summer, because the privilege costs them considerable money; but if they were offered wages for the service, that would turn it into work and then they would resign.
(By the way, I hear you can pay $50 to work as a boatman in St. Petersburg for a day. I would do that in a heartbeat.)

Software is an area that lends itself particularly well to avoidance. Some kinds of work are very linear. You wait tables for x hours per week, you get 15x dollars; you assess loans for y hours per year, you get $40,000y plus a $2000 raise if you do your job well. I loved bicycle delivery in the meatpacking district of Manhattan because of this; it required attention and competence, but no strategy. Teaching is like this too, which is one reason I love it, though there is a difference between Mr. Wheeler on a day I have been brainstorming ways to guide my students, and days when I'm just winging it. (Teaching doesn't stop when school is out, but grading homework is also linear, though thankless.)

I suppose why I love teaching is that even when I'm just winging it, I'm still pretty good. What I can't decide is if that is a good thing, or a dangerous one. My Georgian tutor (that is, the woman in former Soviet Georgia who was teaching me the beautiful and maddening Georgian language called "Kartuli", or "ქართული") needed one session to denounce me as a "typical lazy smart person".

On the other end of the continuum from linear jobs like teaching high school are things like art, leadership and running a business. A wonderful teacher is much better than a mediocre one, but in my experience the difference is greater between great and mediocre organizational leaders. Likewise for art.

Everyone has to put hours in, though. Zurab Zhvania, Georgia's former Prime Minister, used to tell a joke about a mother who comes into her son's bedroom in the morning to wake him up. "Time for school," she says. Her son pulls the covers up. "I don't want to go to school!" "Dear, you have to go." "But all the kids make fun of me!" "Still," she says, "you have to go." "But it's not as fun as it used to be!" Etc. Finally, the mom says "None of this matters. You have to go--you're the principal!"

Software development can be just another 9-to-5, but when it's in the context of a startup or small business, it's way over at the amorphous, business/leadership end of the spectrum, or as I like to call it, the "realm of terror and shame". It's up a ways towards linearity from writing, but like writing there is no limit to what you can create with programming languages, if you can only imagine it and struggle with it all the way through until it is realized. After all, Larry Page and Sergey Brin had an idea that seems pretty obvious in retrospect, and could be programmed by most CS master's students, if they had the inspiration and perspiration.

That's why nightmares come when I am taken with ideas for elaborate software projects. Any of the briefest imaginings could be real, and if I made myself my sharpest, I could finish most of them in four weeks. And yet I am so afraid of finding out that I cannot, that I do not.

Labels: , , , , , , , ,

Blogger Kate on Wed Feb 20, 04:06:00 PM:
Well, at least the 30 minutes you spent not realizing software in favor of writing this post weren't a complete waste. I'd like to think that this wisdom, in some profoundly non-linear way, will make me a better writer... when I get around to writing.