Lot’s of people have written essays, blog posts and entire books about how software engineering is a craftsmanship that requires skill, passion and effort if you want to achieve proper results. People strive for clean code or effective Java, conferences are held, we are discussing patterns, paradigms and best practices. Artisans of the digital age, we want to build the best and most beautiful solution possible. And similar to the craftsmen of the analogue age, the customer is looking at the plumber’s smile.
It sometimes is a good idea to step back from what you’re doing or to compare completely unrelated fields to get a new perspective on what you’re doing and to recognise how awfully you’re screwing it up. In this case I had to renovate my flat before moving out for it to be in an acceptable shape to get back the deposit I paid to my landlord when moving in and was struck by the similarity to a software engineer’s daily struggle. Let me try to explain it with a little metaphor. Imagine you are a painter. Painting walls that is, no ceilings of churches.
Suddenly, a customer calls, he wants to move out of his flat and has to fix a hole in a wall to get his deposit back from his landlord. Can you do the job?

Now imagine you said yes. Of course, you want to do the quality job you are expected to do and plan to cut out the tapestry, cover the whole with high quality gypsum, apply a well known brand’s glue, paste new tapestry to the wall and, finally, electronically measure the colour of the original paint (the documentation of the original painting job somehow got lost) and apply the exact same aberrant shade you tried to talk your customer out of the last time.
Well, only, this urgent, and can’t this be fixed overnight? Also, unfortunately, budget is tight and you originally painted the wall, so, can’t you fix this hole for free? As a compensation, you are assured, you will be contracted to renovate the whole flat that he is moving into.
Dark clouds of doubts are starting to form and you think of revoking your commitment, only in the meantime, your boss has assured your customer that you will do just as requested. “It’s just for the landlord and he’ll never notice”, you are told. Grudgingly you give in, telling yourself: “it’s not a big deal, I’ll just finish this one quickly and get back to my significant projects”.

So you just apply some painters filling and are done. And of course it looks like complete and utter shit.

Well, no problem, you know your way around CSS and just rough up some quick classes and paint over the whole thing with a random shade of white that on the first look appears close enough to the original.
Awesome! Both your customer and boss are happy, and you can now go back to spending your time on your meaningful work. Oh, erm, sorry, we found another hole that’s just a tiny bit larger, and, can you just work your magic again and also fix this hole? Of course there’s still no budget and you showed you are capable of doing this until tomorrow?

You all know where this is heading, so I’ll just spare you the recursion that’s bound to happen. You’ll spend the next couple of aeons fixing all kinds of stuff in that old shithole and probably only be freed of that when the place is demolished, never even see the new flat and be forever branded as the hole-fixing guy, so IF you should make it out of that recurring hell, you probably have no idea anymore of the difference between ivory and seashell, that your colleagues try to talk to you about.
Don’t be tricked by the dark side, it may be quicker, easier, more seductive… but it leads to eternal suffering!
Great post.
Simply wish to say your article is as astounding.
The clarity to your post is just great and that i can suppose you’re knowledgeable in this subject.
Fine together with your permission let me to take hold of your feed
to keep updated with coming near near post. Thanks 1,000,000 and please continue the gratifying
work.