In the discussion of good code versus bad code it's important to remember this is a spectrum and somewhat subjective. Though I generally don't write bad code, I certainly don't always write pristine code. I quite often produce "okay" code on the first pass, or if really pressed for time maybe "passable" code.
And in many situations this is all that matters. At a startup company it's important to do "okay" and "passable" code rather than "pristine" code. For a company on limited funding the need to ship working products is paramount to code quality (again, I'm not saying crap code is okay).
In the discussion of good code versus bad code it's important to remember this is a spectrum and somewhat subjective. Though I generally don't write bad code, I certainly don't always write pristine code. I quite often produce "okay" code on the first pass, or if really pressed for time maybe "passable" code.
And in many situations this is all that matters. At a startup company it's important to do "okay" and "passable" code rather than "pristine" code. For a company on limited funding the need to ship working products is paramount to code quality (again, I'm not saying crap code is okay).
I covered this more in my articel Are we forever cursed with buggy software?