Posts Tagged Programming

Dijkstra’s Humble Programmer

DijkstraWhy programming is generally considered a difficult task?

Many people think programming is difficult to learn if you don’t have a bent for it.

I’m among those who think that anything can be learned, given the necessary amount of will and time available. However I understand that some aptitude is needed, in particular for logic and mathematics, in order to become a good programmer.

Maybe an answer comes from an article by Edsger Dijkstra, a Dutch computer scientist winner of the Turing Award in 1972, titled The Humble Programmer.

In the article Dijkstra explains that programming is a task requiring a lot of intellectual effort, since our minds are limited, and the programmer often needs to keep in mind many abstraction levels at the same time: from the lowest, the code, to the higher, the interface presented to the user, passing through a number of levels set by the platform you’re working on and by the application architecture.

Actually, it’s a task requiring a lot of concentration for long periods of time.

If you’re good at using concepts such as encapsulation and independency among modules, you can reduce complexity and keep in mind a lower number of levels at the same time, but there’s no doubt it’s a brain intensive task. Because of this, according to Dijkstra, the programmer must approach it with as much humility as possible.

This explains, for example, why it isn’t easy at all replacing a programmer in a company: code is just an abstraction level, other levels stay in the brain of who’s writing it.

It’s a wise and still current article: as computing power increases (while our brains don’t!), we should stick to the best tools (modest and elegant programming languages) and find manageable solutions.

My bottom line is that being humble in front of brain intensive tasks can help not only in programming.

2 Comments