I like to think of myself as a scientist, though I am more widely known by my colleagues and acquaintances as a "software mercenary", eager to take on challenging and interesting problems.
My years at college taught me how to learn (and to like learning). When I am confronted with a problem I don't know how to solve I always say: "I do not know how to fix it, but I'm eager to look for a solution." That's why I like research.
I define myself as a "Jack of all Trades" when it comes to software. I like to look at different technologies, fields, methodologies, solutions and problems, and try to look how they can work together and how solutions from one field could prove very useful in another. This allows me to see problems from many different perspectives, and then rationally choose what kind of specializations are best suited for the task at hand.
The work I covet the most is the one of software architect, which allows me to focus on how to solve problems and fulfill requirements.
With regards to programming, I have no problem doing it, but once the architecture, the algorithms, and overall solution is designed, writing/translating it in a given computer language does lose most of the fun it had. That is why I favor the use of code generators (heavily customized) and model driven development, so the code I have to write is actually meaningful and challenging.
I also like to manage myself, my resources, and, up to a point, my project team. The people of the team are the most important factor to determine the outcome of a project in my experience. As such I usually like to technically challenge everyone and everything and strive towards achieving the best technical quality possible and increase the autonomy of the team members to be more flexible and adaptable.
My primary objective is to like my work, as it takes most time of my waking life. Ideally this means it will be challenging, it will strive for quality above all, and I'll be able to do it in my own terms.