I see software as an art. Although it can be used simply as a mundane tool to get something to work, that's not what energizes me when working with software. What does excite me is the art in a beautiful solution, in a nice abstraction, in a great architecture, in readable and maintainable code.
In spite of seeing software as an art, I've been able to deliver in all the projects I've participated in by making the right prioritizations. After all, software must serve a concrete need and be part of a business, adding some sort of value. Even under these pressures, I've treated it as an art and invested myself in making my code more beautiful, regardless of whether that requires harder work.
The problem lies in environments where software is viewed only as a tool, where achieving a result is more important than anything else (even if that result is totally shortsighted), where getting something done simply annihilates the art behind the software, where achieving the reward for doing something (even badly) is more important than doing it well or right.
In these environments, you seem to become merely a cog in a machine of results, because your creativity and your heart are not really required as long as you solve the problem in any way or form. That shifts software from an art or a craft into an almost mechanical task. That simply kills the joy of software development.
If you have similar view of software, how do you actually cope with this in your work environment? Do you try to shield yourself? Or is there any work environment where software as an art/craft is still preserved? I'd love to know about your experiences.