Sunday, August 29, 2010

Are programmers problem solvers or just builders?

Again, it all began with a tweet. Well, almost.

A few days ago, I read some forum where someone described programmers as "problem solvers", and how you have to really like solving problems all the time to love programming. Some responses were a bit intimidated by that perspective. "Problems" all day long - bah!

To me, this sounds quite like a normal reaction. People want to do something positive in their life, particularly when this is about work - the most time consuming occupation one generally has. So I began thinking about that - Are programmers "problem solvers"? In my opinion, not really.

Of course I'm taking the "problem solving" in a very mathematical sense. Not everyone may agree with that definition, but that is how I understand it.

When I think about programming something, I'm not often doing that to solve a problem in the mathematician sense. I'm not searching for a solution. Instead, I'm rather working like an architect, putting together pieces to form a home. An architect is not "solving a problem" when he provides a house for a family but rather "fullfilling a need". I rather see programming as lego building. If you ask someone to build a lego house, some will do something very basic and ugly with a few bricks on non-matching colors and scales, and other will do a fantastic medieval castle. Same for programming. This is quite different of maths were the proof and result is, mainly, right or not. That doesn't mean that programming is more simplistic, rather that it is a producing task rather than it is a solving one. The solving part is actually more part of the computer science, and less of the programming, or software engineering.

There is another reason why I think that programmers, while they tend to like qualify themselves as problem solvers, are not so much such. If they were, wouldn't they enjoy fixing programming defects and debugging all day long? Of course most of us prefer writing code - that is, building something new, assembling, creating.

I also got a good comment on Twitter where someone asserted that programmers are also partly artists, and I think this is also true. Hackers program sometimes for political reasons. Some to produce new graphic effects. The creativity component should be integrated here.

So if you're beginning programming, and find this is some hard task - don't get discouraged, because this is actually an interesting and funny task that is rarely as frustrating as a hard math assignement!