This is a totally alien concept for most Linux hackers and wannabe programmers, who prefer doing the patch du jour rather than making sure their code works properly under every circumstance.
And I’m not just talking about unit testing, or the belt-and-suspenders school that has been taming a few Extreme Programming fans into doing bullet-proof (or fail-safe) code.
I’m talking about making sure you actually have to code less and less to deliver major enhancements to your applications, by doing things in a coherent, well-thought out (and above all consistent) way. It’s not just about Hungarian Notation (of which I am partial to the Microsoft variant), or making sure variables have readable names (instead of i, p and r), or even providing extensive comments.
It’s about making sure every program you make can debug itself minimally, has the proper exception handling (or soft-fail) built in and that the semantics of the interface contracts you define are simple enough to build on without breaking existing behaviour.
It’s about using arbitrary collections of items and iterators rather than stupid arrays of senseless data, and never, ever, ever leaving hardcoded SQL calls (or whatever) buried inside helper functions.