A mistake that many developers often make is that of putting too much effort into making their code and their designs as good as they can be. Don't get me wrong, good code and good design is obviously important. But what is even more important is that in most cases, someone is paying you to write and/or maintain that code and that person deserves a good return on his/her investment in you. Your job is to create value. Whatever it is that you're working on needs to add value in some way or another.
The most obvious way in which you can create value is when you write code that results in noticeable improvement when it is being executed. It could be a new feature. It could be an improvement to an already existing feature. It could be a performance optimization somewhere. It could be a bugfix. All of these make the software better in an externally observable manner which, like it or not, is all that really matters to the people who are funding your development activities.
Obviously, we all know that good code and good design make software better as well. It just improves the quality of the software in a more internal manner. It's not directly externally observable. It is however quite reasonable to claim that good code and good design lead to sustained productivity while working on the software. It enables the continuous creation of value without making it increasingly expensive.
So focusing on the quality of your code and design is a good thing, right? Of course it is, as long as it doesn't prevent you from actually delivering your software to the people who are supposed to use it in a timely fashion. At some point, you are going to have to accept that you can't spend all that extra time and money to make it perfect. The software you're working on is most likely supposed to reduce costs for its users, or generate money for its owners. As long as it's not being used, it's nothing more than a cost. A big one even.
Focus on creating value. Make sure you keep your code and your design clean enough to achieve that. It's not about how great you think you are. It's not about your ego. It's not about how you can tell people that you've used approach X or pattern Y or library Z in a project that users might not be happy with. It's about delivering the value that you were requested to deliver. Plain and simple.
Pingback: Tweets that mention Favor Value Over Quality | The Inquisitive Coder – Davy Brion's Blog -- Topsy.com