I started programming 10 years ago with C/C++ and turbo C++.
From these first day to my first programming job, I wanted my code to be always more extensible, more decoupled, more coherent and perfect.
Until the day I worked on many failed projects. Failed projects in some companies with great coders I learned lots from. Failed projects in some companies with bad coders.
And also successful project with bad coders.
Now I can tell you that the worse thing that can happen to me is not someone who points out a bug in my software.
What piss me of is when nobody use what I did. I'm grateful to someone reporting a bug, since it means he cares about the project.
I always like good code. But now I don't make it extensible, and I don't make it coherent everywhere by default.
That might piss off some purist, but every line of code I write, I ask myself : "Will it make the life better to someone ?".
"Someone" might be me, a customer or a team member.
I don't give a damn anymore about code perfection, except if perfection make a better life to someone.
That's what I learned from great products I've worked for : Do not make it perfect, make it useful.