This piece was written awhile ago by Jeff Atwood, but I saw a mention about it recently. It's about software developers hating software. It's a fun piece, and written a bit tongue-in-cheek, though with a lot of truth in there. Certainly lots of the "bundled software" that come with gadgets is unnecessary and poorly tested. That's sad, as there is the chance to add value to products if the software is well written, and perhaps, open sourced.
However the thing that caught my eye was the ending. Mr. Atwood says that if a developer in an interview doesn't say the worst code they've seen lately is their own, then they may not be a competent developer. I hope that part is also a joke, and I suspect it is. Though I also think that it's a healthy attitude for people to see room for improvement in most of their endeavors.
No matter what type of task you are performing, and certainly programming is an area many of us focus, complacency is a poor way to approach your work. We know we won't be perfect, we know we'll make mistakes, we know there's room for improvement, and we know we NEED TO GET THE PROJECT DONE. The balance we strike in moving forward should be accomplishing tasks, learning what we did right and wrong, doing more of the former (and less of the latter) in the future, all while taking pride in the work we do well.
Certainly some people are obsessive and perfectionists. There's probably another few choice words some of you have for those individuals, but most of us need to balance our desire to build something amazing, with the necessity of completing work. We also need those little wins that come from having our endeavors solve problems, even if we'd build software better the next time. The important thing is that you try to do better the next time.