Bruce Dawson described programming as follows:
When I’m describing what I do for a living to non-programmers I sometimes say that I solve puzzles. I solve fascinating puzzles that are different every day, and there’s no answer key, and very often nobody else knows the solution. Whether it’s figuring out why code is slow, or why it is crashing, or how to make code simpler and better, it’s all puzzles, and I love it.
I think that’s a useful point of view. Whilst programmers need knowledge of some particular programming language and platform, it’s often the ability to solve puzzles that makes the star programmers stand out from the rest. An average programmer will often make a meal out of a simple task (whether it’s development or testing) because they can’t see an elegant way to a solution. The best programmers just get on with delivering quality, testing solutions without making a fuss – and they’re having a great time doing what they love!