« The First Anti-Solipsist| Main | Turning Stopwatches into Tricorders »

Philosophy and Software Development

| | Comments (0)

Recently one of my large clients asked me to come out and look at their development process. It underscored even more to me the relationship between philosophy and software development.


Not only is developing code the equivalent of applying a philosophy to your perception of the world, the way we talk about developing code parallels the way philosophy developed.

I have an interest in philosophers. Beats me why -- perhaps it is the togas. I guess to me it is important to learn what other people thought about life and the world. After all, why spend time going over ground that people have already been over? Seems like a waste of time.

What I found in learning about philosophers is that most of them started with a few good ideas and then went way overboard in trying to apply them. Over and over again, we get complete geniuses that make brilliant observations, only to take them to extremes that make them look like a bunch of punks.

I thought about this when I was visiting with my client these last two weeks. They have several thousand IT staff, and when they talk process they have a tendency to footnote and quote book authors to each other. Why a book author would be an important person to quote is beyond me, but I guess being able to construct sentences, find a publisher, and hype yourself is a requirement for having valuable information. But I digress.

So they have a real smorgasbord of stuff going on -- traditional waterfall, iterative (somewhat), and mostly people just lost in the woods, looking for a simple "recipe book" to show them what to do next. Of course no such book exists, but that doesn't stop human nature.

Each camp takes a completely rational position too far. Is there a place for a high-ceremony, linear software development process? Perhaps. Is there a place for a no-holds-barred, we-don't-need-no-stinking-requriements software process. Perhaps. How about CMM? CMMI? RUP? ITIL? XP? The list goes on and on. Advocates of various camps quote chapter and verse of their supporting books and have names to call the others.

Not that it isn't polite -- everybody likes each other and nothing is taken personally. It's just the idea that somehow, someway, I can read one author and get the answers to everything I might need. This is the same thing people have been doing with philosophy since Socrates. And to the same ill effect. Life is not amenable to instruction books or rigid dogmas. It took the American pragmatists in the late 19th and early 20th century to start pointing out that, hey, philosophy is supposed to work for us, not the other way around.

I think large software construction needs a similar revelation. When somebody comes out with a great idea or book, we should embrace and adapt those parts that help us. But we should quickly ditch those parts that don't, and we should be extremely careful if we don't find any parts that don't work for us -- a sure sign that our critical thinking skills might be on the fritz.

Leave a comment

About this Entry

This page contains a single entry by Daniel published on December 12, 2007 2:57 AM.

The First Anti-Solipsist was the previous entry in this blog.

Turning Stopwatches into Tricorders is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.23-en
Daniel Markham