I care deeply about the code I write, and I take ownership of it. My primary goal for the systems I write is that they be easy to change. They should be a joy to add features to, fix bugs in, and adapt to changing requirements.
This drives me to find clear, cohesive abstractions and to connect them as loosely as possible. It also forces me to consider readability. It's not enough that my code works and that I can understand it. I'm not content until I'm convinced I'll still be able to understand it in 3 months, and so will anyone else.