Deliberate Unmaintainability: Burning Bridges To Fight The Cold

June 17, 2009 at 3:40 pm 1 comment

Getting a software project done by brute-force coding without putting effort into design and automated tests can work. Maintenance and attempts to add new features might be nightmarish, but version 1 might actually be there when needed:  The client is happy, repeat business ensues. The product gets to market in time, sales are made which would have been lost otherwise.

It’s like burning bridges to fight the cold: You may be warm, but you’d better be sure you aren’t planning on going anywhere later.

Skillful design and implementation should, over time, reduce the effort required to add a new feature, while ad-hoc coding will increase it substantially.  This is because of:

  • Understandability. The code of ad-hoc systems is (often/usually/in my experience/always?)  harder to understand. It takes developers longer to relate requirements to what is actually happening in the system, slowing down development.
  • Side effects. Ad-hocism encourages tight coupling and unintended downstream consequences of code changes due to insufficient separation of concerns. This results in more bug fixing and the need for very thorough regression testing.  Worst case scenario: Time to implement the new feature is infinite – nobody dares to touch the code.

The current (and IMHOP forseeable future) way of  mitigating the effects of  lack of design is Test Driven Development.  Why are we not seeing more adoption of  TDD?   Extreme Programming is a radical example: Little design, all code, all tests. Practitioners achieved agility through a phenomenal ability to burn bridges and re-build them fast, several times a day if necessary.

Too scary: Most project managers only ever see the flames.


Entry filed under: Architecture & Design, Software Development.

Accidental Architecture: Fatal Attraction Of The Hourglass Architecture Evolutionary Patterns

1 Comment Add your own

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



%d bloggers like this: