I would put myself in the problem solver class. I want to understand the theory, so I can solve the problems more effectively. Certainly the more experience I get, the better I write code, due to a greater depth of understanding. My programming is becoming more declarative / functional, though at the end of the day, sometimes crappy hacks need to be added to get things working.