Sunday, October 19, 2014

The Code Fallacy

Once upon a time, there was a master in the arts of taping things together.  His works were shown in museums all over the world.  To the untrained eye, they may appear as loose balls of duct tape dangling from the ceiling, however they were built in a very particular fashion.

First, the master was given hundreds of strands of tape of various sizes.  Each strand was numbered.  Each numbered strand had to connect to a specific set of other numbered strands.  The master's work, which set him apart from the rest, was his ability to plan out and leave a lot of space between the strands of tape, minimizing the entanglement, and making it possible to easily add or remove connections between pieces of tape as needed.  And there were always changes.

Typically, the master worked at his own pace.  It felt frigid to most, as he'd spend much longer getting his initial ball of tape according to requirements.

One day, the master was asked to make a work and was given a standard set of specifications.  Except he had a month to do it.  He'd normally take three.  However, he had no choice, his secretary had already agreed on his behalf.

So he started planning.  He spent all of his days rather than reserve some time to rest.  By the second week, the locals described him as a zombie, barely aable to articulate himself, always forcing himself to work on the problem with which he was tasked.

By the third week, he had to start building his ball of tape.  As requests for changes would pour in the next day.  Except - has wasn't ready.  His plan had pieces of tape coming too close for comfort, but he had no choice but to continue.  Feeling sick to his stomach as he assembled a work that he, the master of tape, could never be proud of.

Then, the day before, requests for 150 new strands of tape to be added came in.  The ball would comprise of about 1000 strands of tape total.  He worked through the night, as his initial plan was half-baked, and any new piece of tape was frought with peril.  Often, he had to move hundreds of pieces of tape just to add a new one.  And with these changes, the stickiness of the tape waned.  And the master had to resort to using new pieces of tape to ensure the integrity of the old ones.

By morning, when he was done, he looked at his ball of tape, improperly drooping, knowing that it would damage his reputation.  He had done it on time, but it was his worse work.  And when it came to be put up, it looked as though it would collapse.  But it didn't.

The week after, the master got a request to add a few hundred more strands and to remove fifty.  In a day.  He looked at the ball.  He looked at the request, and replied that it couldn't be done.  He would neeed to spend two months to complete his plan and build it correctly.  His rejection was rejected, and was reminded that he must do the changes since if he didn't the museum would go bankrupt for having to refund thtickets to see the ball that it had already sold.

Not wanting the demise of a museum to be his fault, he got to work.  By morning, he still had a dozen strands to put up.  The museum's curator was angru with him, for not completing his work on time.  The museum suffered, as people requested refunds seeing that the ball of tape was not ready for viewing on time.  The master was blamed.

And so things continued for the rest of the contract.  Always having to deal with a ball of tape that should have been thought out more thoroughly, and regretting it untilt he completion of the contract.

The curator and the visitors couldn't tell it was improperly built.  They just saw a ball of tape.  It had all the right connections.  But to the master, it was an abomination.

Henceforth, he ensured that his secretaary nnever agreed to time limits again.  So he may do his work properly and be proud.

----

What does this have to do with software?

The ball of tape is a metaphore for software.  Aggressive schedules always backfire in the long run.  Like the ball of tape, how can you judge how well software is written when you only see a polished interface with an engine forever hidden bedhind it.

No comments:

Post a Comment