Previous month:
November 2008
Next month:
January 2009

December 2008

The Dangers of Perfection

Is very difficult to improve upon perfection.

If you have the ideas in your head that your (product, tool, process, organization, whatever) is perfect, or even close to perfect, you're not going to have the right mindset to improve it.

Even if it was perfect at some point (highly unlikely), it's probably not now. A commitment to continuous improvement is the hallmark of a true craftsman. You have to accept the fact that everything you do is a hack; A workaround until you can find another way that's less hacky. That's not to imply that you shouldn't make it as good as you can get should. You just need to realize that it can always be made better.

A Craftsman's Toolbox

The Agile manifesto declares that it's adherents favor Individuals and Interactions over process and tools. But all software development teams use tools, so what kind of tools match this mindset? Here's two characteristics that I see:

Agile tools are easy to replace. They provide value without increasing the cost of change. If you get locked in to a tool, you'll have to find a replacement thats MUCH better before it's worth the effort to change. 5 years could go by while you're waiting for that to happen. The more adapted you are, the less adaptable you become.

Agile tools are flexible yet simple. The best require little configuration or customization, yet can be used in hundreds of different ways (take your favorite text editor, for example).

It's a common fallacy that Agile developers don't value tools. We do. We just realize that the tools won't do our job for us, and that it's up to us to make the project succeed.

Read This!

You should start reading this group. Right now. Here's the feed.

It's about professional ethics and personal responsibility in the software development world. In a larger sense, it's about answering the question: Who ensures that software is useful today, and it continues to be useful in the future? That is; Who ensures that it consistently delivers value?  

I think the answer to this question, or something very similar, will define the next generation of software development efforts. As inconvenient as it may be, software developers are not cogs. The dedication and ability of the individuals involved, not the processes or practices they follow, is the primary determinant of success. The realization of this fact will bring about radical change in the industry.

For managers, this will mean a radical shift in how you organize and lead. For developers, this means that you will now have a professional responsibility to ensure that what you're building is actually useful to the person paying for it. I have no doubt that many organizations will fail to make this fundemental change and suffer the consequences.