There is one thing that I like even more than writing code and that is: the code were be useful for somebody.
This is just another aspect of good design, to elegantly and efficiently solve user’s problems.
Hence the need for systematic methods of design, with closed-loop feedback processes that adapt and approximate to the solution with steady steps.
I like taming complexity.
Understanding the world around me is a complex endeavor that requires many bodies of knowledge, among them the scientific method is a sound pillar. The same mindset applies to understand the context of each user problem and how to take her from an initial state of consciousness to another state of consciousness where software plays a mayor role.
Gary Pollice puts it very well as multidimensional knowledge: Great art and the craft of software development by Gary Pollice.