Bad smells

Sometimes, you know something is bad but you don’t know how to make it good. It’s often clear if it’s an ethical issue – but even so, that reminds me of the Simpsons: “Would you steal bread for your starving family?” says Fat Tony to Bart. “Well.. yes” he replies. “Well, what if they don’t like bread, they like cigarettes?” says Fat Tony.

bad-smellIt becomes harder when the concept is more abstract. Sometimes when I look at the design of software, the architecture, or just the straight code I feel my hackles rising. It’s that chill that goes down the spine, the feeling that something is just plain wrong. Kent Beck raised this in the essay “Bad Smells in Code” and I think he gets it right. You just know it’s wrong.

The problem is when you don’t know what to do about it. With code there are strong indicators – an experienced developer can pretty quickly help you identify what’s gone wrong. The issue is when it’s more ethereal – perhaps at the strategy level. In business, progress must be made – a good plan today is better than the best plan tomorrow and all that.

So what happens? Do you speak up? You can’t be the one to block progress. “Don’t come to me with problems, I want solutions!” says your boss. So you just sit stewing, doubting your instincts, biting your lip until one of two things happen. Either (a) the train-wreck unfolds before you as the best made plans lie in tatters, or (b) you take one more step towards mediocrity. It just about works, provides the minimum required and your customers leave you for someone better.

We can do better.

Advertisements

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s

%d bloggers like this: