Emphatically disagree. We're not creating art, we're creating solutions. Nor are we creating those solutions in a vacuum, we're actually satisfying several constraints: delivery dates, features, cost of maintenance, cost of enhancements, the number of people we have available for each of those activities, and so forth. It's plain to see there's no such thing as "perfect code" except in the most trivial of circumstances. Understanding these constraints and how they impact your architecture, design and actual code is all part of becoming a master programmer.