The phrase "good enough" isn't fit for purpose

Monday, August 21, 2023

Words matter. First impressions matter.

I'm reading The Pragmatic Programmer in a book club, and there's a section titled "Good-Enough Software". In it, the authors expand that "the phrase 'good enough' does not imply sloppy or poorly produced code" and that it must still meet all requirements. The rest of the section is a reasonable message that we should include users in the requirements process and not build things they don't need, since that has actual cost (both in money and schedule delays).

I agree with the overall message. We've all had the coworker who doesn't know when to stop polishing, doesn't know when to stop. But I think the section is done a disservice by the phrase they chose to lead with.

The phrase "good enough" carries with it a negative connotation. It implies that you're cutting corners. "Oh, it's good enough" isn't something you want your surgeon to say, it's not something you want to hear from your lawyer or your accountant. It's not a prhase for professionals.

Instead of things that are good enough, I'd rather we make things that are fit for purpose. The phrase "fit for purpose" doesn't carry the connotation of cutting corners, but of actively considering what is needed and ensuring that that's present. Whatever you're describing has what it needs to do the job.

These can often be used interchangeably. My car is good enough to get me to my parents' house. My car is fit for purpose for that drive. The former makes you suspect that there's some reason we might think it's not? While the latter gives confidence that it definitely is.

Even though they mean the same thing, what they communicate is far different.

So, yeah. It's easier to argue for, since you're not going against people's pride in their work by arguing for cutting corners. And it inspires more confidence in the work from stakeholders.

Let's build software that's fit for purpose, not just good enough.


If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.

Want to become a better programmer? Join the Recurse Center!