Uprooting Trees

There was an interesting post to a thread over at Joel on Software today.

Software must be one of the few endeavors where the art of creative destruction is neglected.

Landscapers uproot dead trees; architects remove walls; civil engineers tear down old bridges.  Even acorns have to rot before they can germinate and grow into a trees.  But programmers are loathe to clean up after themselves.  They'll rarely remove an old, obsolete, or wrong feature because, Lord forbid, a customer may complain.  After all, it doesn't hurt to leave it in, does it?

Well, no, it wreaks havoc on your UI.  New users will reject your clunky old app. "What's with all this cruft?  This app makes no sense!"

Friday, January 09, 2004

I think Alyosha is quite right. Too often we find features lingering in software (specifically commercial software and even more so in vertical software) that should be either rolled into other functions (i.e. feature consolidation) or removed entirely.   

This is something we have struggled with ourselves for the last few years. And while I’m proud to say we have uprooted our share of trees, not all of them were good decisions. Determining how much use any one feature gets from end-users is very difficult and near impossible with widely distributed commercial applications. And lets just say I’ve had my fair share of rude awakenings when a version goes into beta.


  • "The Fear". Will something break?

    Am I falling into : If it ain't broke, fix it until it is?

    This is one more reason I am trying to go the way of test driven development, so I can do ruthless refactoring without The Fear.

    Rip it out and move along, it's not like were talking about Word vanishing when you upgrade to Win98

  • I'm not sure that test driven development really answers this. When you are talking about product design there is a lot more involved than just the process or architecture of the product. There are customer requirements, customer expectations, vertical domain issues, marketing, and positioning requirements as well.

    I think "uprooting trees" requires a change in philosophy more than anything else.

Comments have been disabled for this content.