I was reading an article about what a good programmer is. The article contained a few good points, clearly matched by my previous experience. While I may not necessarily agree with the rest of the points, I found the ones below of significance.
"This is also about how we define quality and what a bug is. If we look at a traditional and very "intuitive" definition of a bug, it is something that causes our software to produce an incorrect or unexpected result. However, if we think more about how the software is actually used and by whom, we'll see that there are many other types of bugs, including scalability, reliability, and even maintainability ones."
"If we put all those "-ilities" in a list and prioritize them by their severity and importance to the business, we'll see that functionality-related bugs are rather far from the top. I would actually put maintainability at the top."
"My point is that mistakes are not all equal. If I'm writing a PDF report generated by a piece of Java code and my report misses the footer, that's one type of bug, and its fix will cost the business X dollars. On the other hand, if my PDF generation code is so difficult to modify that in order to change its format from A4 to US Letter we have to rewrite it from scratch, that's a completely different type of bug. Needless to say, its fixing will be many times more expensive."
"There are exceptions, of course, where the business prioritizes functionality above everything else, but such situations happen very rarely (if the business is smart)." - however, the technical architect also has a role here to try to make things happen by this rule).