The Myth of Bug-Free

You walk into a product meeting. They want you to rush the work and get the feature pushed out ASAP, and you rightly push back.

You give them the choice. Either you produce a rushed version and need to deal with the bugs and issues that likely result. Or you create a version where things are done right. It’s not the developer’s choice, but you know the way you recommend.

The problem is that the product owner believes that you just promised a bug-free version.

Trouble ensues.

Just Say NO (that’s K-N-O-W)

The idea that any complex software can ever be truly bug-free is, let’s face it, delusional. If someone thinks you might be promising that they’re simply mistaken.

Pushing back on buggy code is one thing. Another thing is failing to push back on completely unrealistic expectations. If you let a product owner go away with an expectation of perfect code you’re letting everyone down.

Never let yourself be exposed in the room with the question “So, is this ‘bug-free implementation’ in the room with us right now?”. That’s because a bug-free implementation of anything over and above trivial code is this: a figment of an overactive imagination. 

Perfection doesn’t exist. Even code in the dreams of The Secret Developer has bugs. You know code falls short of the bug-free bar as well as I do, and it is up to us as software developers to communicate that to those less technical in a team.

The Reality

If someone is hoping for a silver bullet that enables them to stop dealing with a problem and file into the draw “done”. Signed off, don’t need to think about it anymore.

Yet back in the real world no matter how much coding a software engineer might do, sneaky bugs likely still squeeze through. Sure, we probably remove the most catastrophic bugs, bug there are likely a few little issues lurking in the code no matter how hard we work.

That means that even the most well-intentioned code requires some maintenance, as these things tend to degrade over time as new code slowly becomes legacy.

So here is the truth. 

We might be skilled software engineers, but our code can never deliver perfection. Perfect code is imperfect, and it’s our responsibility to communicate that.

The Faulty Expectation

The biggest issue in all of this is the expectation that code can reach perfection. While I’d love to say we’re all writing flawless code (I mean, I never make mistakes — just kidding), every piece of software has weak points. You can minimize issues, sure. But eliminate them entirely? Nah, unless we all develop superhuman powers overnight.

This means long hours, trouble at work and stress at home. Couldn’t we all do with a little less of all of those things?

Conclusion

But maybe, just maybe, next time we’re asked if we can make something bug-free, we should all ask, “Is this mythical feature set even in the room with us right now?”.

That’ll teach them.

Previous
Previous

A Low-Inspiration Solution in Search of a Problem. Sort It Out, Apple

Next
Next

A Christmas List for Software Developers🎁