If it's stupid but it works, it's still stupid, it just also happens to work

Two phrases really are irksome to me: "If it's stupid, but it works, it ain't stupid" and "If it ain't broke, don't fix it"

They bother me not because I disagree with the intent, I wholeheartedly understand and agree with the sentiment. My problem is that they are often used to justify cutting corners and generally producing inferior products in order to avoid fixing problems that customers might not detect.

First off, I'm not foolish, I understand nothing is perfect. I understand that software will have bugs, cars will have problems, and sometimes judicious use of duct tape is the best solution.

BUT

When you don't acknowledge "quick fixes" as such, this inevitably lowers what people think the baseline level of quality should be. In my experience this has a cumulative effect of causing the next "quick fix" to be of even lower quality because it's just a "little worse" than the previous stupid solution. The particularly bad thing about this attitude is that two things happen: #1 People who KNOW they're doing a bad job begin to be ashamed of their work and try to hide things or make up excuses why they're doing the wrong thing #2 People who don't know any better think that these "quick fixes" are the right way of doing things. Both of these factors lead to a situation were team members don't feel any obligation for doing the right thing.

My mantra is the Boy Scout Rule, "Always leave things a little better than they were when you started". If you see something out of place, improper, or otherwise incorrect, you have an obligation to fix it. This is not to say you need to boil the ocean and fix every problem at once, but you have an obligation to fix at least one little thing. It doesn't matter if it's your mess or someone else's mess, it matters that the mess gets cleaned up. Adopting this attitude within your team has the effect of raising the quality as well as help to ingrain a sense of ownership and responsibility.

Comments

Jim Lyles said…
Well-stated, and I fully agree.

Popular posts from this blog

Please use ANSI-92 SQL Join Syntax

The difference between Scalability, Performance, Efficiency, and Concurrency explained

the myth of asynchronous JDBC