It is humanly possible to produce perfect code. I have seen it done, and I have done it myself. It takes talent, dedication, focus, testing and a committment to excellence – but it CAN be done.
It’s possible, but the time required to write a non-trivial program and verify it to be bug-free exceeds the market lifetime of the program rather sooner than some people seem to think.
The employee you want is one who is committed to the goal of producing bug-free software. The employee you don’t want is the one who thinks that buggy software is acceptable.
I disagree. The employee you want is the one who is committed to the goal of returning maximum value to your company. That usually goes hand in hand with minimizing bugs, but not always. The obvious counterexample is when trying to kill that last bug will cause the ship date to slip past a hard deadline and result in a contract being voided. Other less extreme examples are possible too, but I hope the point is clear enough.
Ahem. I have written software, in about 9 different languages. I have written DRIVERS – heck, you might even be using one that I wrote.
Yeah, yeah. I’ve written drivers and other kinds of code that’s more difficult than drivers. For three years I specialized in high-availability clustering. I’ve been paid to write as an expert on how to produce quality software. Despite all that, I admit that every non-trivial program I’ve written has had bugs – despite every validator I’ve run it through, every unit test I’ve written, and every month that highly skilled QA people (or customers) have spent torture-testing it. Any programmer who doesn’t make a similar admission is simply deluding themselves and attempting to mislead others. Even SEI capability-level 5 shops (of which there are two in the world) have produced code with serious bugs, with serious consequences.
Bug-free software can be written; it’s been done. At the very LEAST it can be what you constantly strive for. Anyone with the attitude that bugs are not only inevitable but acceptable is striving not for excellence but for mediocrity.
On this we agree. Even though it is an almost provably unattainable goal, bug-free software should nevertheless be a goal. “Bugs are inevitable” should not be used as an excuse. If a bug is identified, the proper response is “oops, we’ll fix it”. If the bug “should have been” found and fixed sooner – subject to reasonable standards of skill and diligence, plus constraints of business survival – maybe there should be an apology as well. “Stop whining” from a developer or apologist is just as counterproductive and inexcusable as “you suck” from the person who found a bug. If you ask me, we’ve been seeing far too much of both on this thread.