Wednesday, 28 October 2009

Duct Tape? Who Cares?

OK – I want to make this post as short as possible, since by posting this I am being a hypocrite.

Anyone in the geekosphere will have heard about the “whole duct tape thing” – no, I am not going to link to it.

All I will say is this:

Who cares?

Some of the best software I have used has obviously been hacked together really poorly. Some of the best games I have played have had corners cut to ship on time.

Conversely, I have used rock-solid software that has ticked all the boxes in development. But it’s useless.

Software is NOT about how we build it – it’s about how we USE it.

When the USER is sat in front of the PC, they don’t give a crap about the development methodology used, constraints applied to the project or the fact that Jimbo forgot to wear his wacky tie on Wacky Tie Thursday at the office this month.

Ultimately, what they do care about is:

  • It works as expected.
  • It doesn’t fail all the time.
  • It protects their personal data (even if they don’t know about it).

So can we PLEASE all stop bickering about something that really and truly that doesn’t matter. The main people arguing are NOT going to change their mind, and the people in the middle will do what they feel is right at the time.

We are engineers – we are supposed to build the best possible solution with what we have available.

As for me? I am going to continue improving my craft, learning how I can write better code quicker and delivering projects on time.. I don’t care what camp that puts me in.

Work hard. Play harder.


  1. I totally agree. I've read "that post" several times and really don't get what the fuss is about.

    I think your point about the main people arguing is right - they won't change their minds and they'll be very vocal about their positions while the rest (the majority) of developers will just get on with their jobs, producing solutions to peoples problems and doing so to the best of their abilities.

  2. I generally agree but it is important to recognise that the while users work with the compiled binaries, the developers get the source code from the last version as their starting point for the next.

    You are quite right to say that the end user doesn't care about the development methodology. When they do care is when v2 comes out and half the features in v1 are broken. And that's where good development methodology pays dividends.

    So a lot of the time, it really depends on what the future of the application is going to be. Sometimes you really can get away with duct tape.

  3. Simply said it comes down to the fact that "Shipping is a feature". Clients might not care about the quality of your code but they certainly do care about when V-next comes out.

    Duct tape is all about: You can ship V-now sooner by lowering code quality but that means V-now + 1 will ship later.

    What many people forget is that usually this trade off is non-symmetrical and non-linear. The time gained in V-now is usually not the same as the time lost in V-now + 1 (often you lose more than you win) and often if you expedite V-now more than a few weeks the time lost in V-now + 1 will explode. This is because fixing a defect gets more expensive over time. If you fix a defect just after you introduce it the cost is very low, if you wait a week it's more expensive and if you wait until the next version clients might actually depend on the defective behaviour.

    Code quality is certainly a trade-off but you need to be very aware of the cost of lower quality.

  4. I think this is an argument very similar to "PC vs Mac", which simply is not worth arguing. So I can only tell this - you argue, and I'll ignore it and write code instead. At the end of the day I'll have some code written, and you'll be still arguing with 0 lines of code. Choice is yours.

  5. This comment has been removed by a blog administrator.