Aug 232007
 

I’m a programmer. And as a programmer I know how to use some programming languages. Some more thoroughly than others, but that’s not the point. When not dictated by the assignment or by an environment, the programmer chooses the language that will solve the problem best. “Best” is defined as: in the least amount of time. Or with the most accurate result. Or without spending a truckload of money. “Best” is not defined as: we need it tomorrow. Neither “it must be done in ColdFusion” qualifies. Nor does “we need a team of three certified Java developers to get the assignment”.

Unfortunately, most of the time programmers have to deal with other peoples problems. Their employer’s, or the problems of a client of their employer. Most of the time, that means there is no room for choice. So you will hear something like “we want the problem to be solved in PHP”. Or the client is using an old database so “deal with it”. Or the other way around: we want a SOA, but you got to help us with these .NET and Java webservices: they won’t talk to eachother. *sigh*

Dealing with environments you did (or would) not choose, or where you can’t choose, makes you creative. To deal with new problems using so called “proven technology” you’ve got to work your way around certain less optimal scenarios or bugs. Hey, that’s why these hacks are called workarounds!

Working around bugs is often very time consuming. Working around other peoples lousy work is time consuming too, since you’re basically redoing their work plus your own. Waiting for the next version that probably will have this and that feature that might solve the problem is a no-no: new versions have to be thoroughly tested before going live.
So you work your way around things.

In a next project, your work is reviewed, and the next programmer will say: what a loser! Why didn’t he solve it this way, and then showing off by proclaiming to know about the latest features. New features you wanted to use but could not. But what all experienced programmers know is that this programmers fate is no other than yours.

What most assignments mean, is that you get paid to be there. You are not allowed to solve the problem, but you fabricate a workaround they have designed (most of these so called solutions are a brain fart of the internal designers or architects, not actually the people that know stuff) in an environment that’s dead anyway.

Programmers get a bad name this way. Why don’t people let us solve problems? We’re clever enough. We can do things you can not. If that was not the case, why hire us in the first place? We’re smart people. Who happen to like puzzles. Why care so much for the way to the solution? Lots of people use cars. They don’t all know how the engine works, now do they? Why does this attitude not apply to software development?

Don’t comment on this blog with “we all know what happens when we let a bunch of developers solve the problem without actually telling them how” (referring to projects not in time, not in budget, or just plain abandoned). You did not through a problem at them, but a solution. Now review your past projects and tell me I’m right.

 Posted by at 00:02

  One Response to “Programmers are not allowed to solve problems”

  1. Spot on. It’s be my main gripe with the IT business as a whole. What goes for software applies mutatis mutandis for hardware as well. The distance between knowledgeable people and decision makers remains to wide to bridge. The resulting far-from-perfect mess keeps both ends of the stick locked in their position. Performance and quality are poorer than need be, damaging the image of both creators and deciders alike. Quite a nasty vicious circle, hard problem to rewire.
    There’s eerily little info available (books, online, companies) on fixing the root issue, everyone and their grandmother have wedged themselves neatly in every niche corner of the de facto situation. Alas, I don’t see the large scale solution either. If I did, I were filthily wealthy by now no doubt. Gladly I sidestepped the issue altogether by becoming unfit for work altogether (Do I hear an overused Cruyff-ism around the corner?). I am afraid you won’t live to see the day this nightmare is over either, unfortunately…

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)