No, it’s not good enough and it may never be.
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:
- Go back and review the code
- Find bugs and fix them
- 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.