Pointed Development

Is Good Enough Good Enough?

| Comments

No, it’s not good enough and it may never be.

While gathering talking points for an upcoming post, I discovered a rather nasty bug in the Linux daemon framework I pushed to GitHub a couple of years ago.

It’s embarrassing to find an obvious bug in code that you’ve shared publically.

It’s even more embarrassing knowing that you introduced the bug while fixing other bugs.

I mentioned my three goals concerning the framework in the previous post, which I’ll reprint here:

  1. Go back and review the code
  2. Find bugs and fix them
  3. Mature the code

I didn’t realize the iterative quality of my goals at the time of the post, but it should have been obvious! “Mature the code” is really “go back and review the code.” I should simplify the goals to something like “Review, Fix, Review,” but I digress.

My primary goal with the Linux daemon code was to learn, with a secondary goal of teaching what I had learned. I believe I’ve accomplished both goals.

It’s now time to evolve and mature the code I wrote. It’s good enough, sure, but is good enough good enough?

“No,” I say.

Worrying about bugs in maturing software is pointless. Bugs absolutely, positively will exist and they’ll manifest in horrible ways at the worst possible times and that’s just the way it is for many software shops. Our responsibility is to think, but even the brightest minds may not think through every single scenario.

The bug I uncovered should have been obvious. Excruciatingly obvious! But I missed the obvious. Looking back and correcting the mistake was both cathartic and educational and the real value was in the net knowledge gained.

The iterative aspect of development isn’t just about code: It’s about expanding knowledge, gaining experience and sharpening insight.

It’s not good enough to have working code. If you can improve your code you can improve yourself.

And there’s a lot charm in self-improving though interations.