Questo post è ispirato al documento " The Humble Programmer" (l'umile programmatore) scritto da Edsger W. Dijkstra, ricercatore e informatico olandese. In questo documento, Dijkstra fa una riflessione realistica e interessante della sua esperienza come programmatore avendo iniziato in un periodo dove la programmazione dei "calcolatori" veniva percepita in modo riduttivo e semplicistico. ... to become....., yes what? A programmer? But was that a respectable profession? For after all, what was programming? Where was the sound body of knowledge that could support it as an intellectually respectable discipline? ...

Forse è un tema consumato, ma penso che l'approccio alla programmazione nel nostro lavoro sia molto importante, quanto continuare ad acquistare conoscenza, competenza e metodo nello sviluppo del software. Nel corso di questi anni di pratica della mia professione non ho potuto fare a meno che notare come l'atteggiamento umile sia spesso correlato ad una migliore competenza, collaborazione e risultati nel proprio lavoro. Posso dire che i migliori programmatori che ho conosciuto sono persone umili, oneste e concrete.

A volte capita di avere a che fare con persone che si mantengono sulla difensiva, cercando sempre di giustificare i loro errori o peggio dando la colpa ad altri, purtroppo questo a scapito della loro crescita professionale, del gruppo di lavoro e del progetto stesso. La questione è semplice il nostro è un lavoro difficile più di quanto, spesso, ne abbiamo cognizione, ecco perché è importante l'umiltà, nell'eccezione del mantenere i piedi per terra, riconoscendo i propri limiti, mettendosi in discussione, ed affrontando i problemi con metodo e per piccoli passi.

Nella realtà Dijkstra ha verificato su stesso come in effetti l'attività del programmatore sia molto complessa e che il nostro cervello non è adeguato a sostenerne il compito. Quello che leggiamo dalle riflessioni di Dijkstra è che l'approccio alla programmazione è correlato al livello di qualità del software prodotto, e che i bravi programmatori sono coloro che hanno piena consapevolezza dei loro limiti mentali The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

La scrittura di Test e la pratica del TDD è in effetti un approccio "umile" nella connottazione data da Dijkstra, fa parte dei metodi che permettono di realizzare programmi "intellettualmente gestibili". E' interessante che già nel 1972, Dijkstra, da questo punto di vista, ha avuto un intuizione che preccorreva i tempi The only effective way to raise the confidence level of a program significantly is to give a convincing proof of its correctness. But one should not first make the program and then prove its correctness, because then the requirement of providing the proof would only increase the poor programmer's burden. On the contrary: the programmer should let correctness proof and program grow hand in hand.

In conclusione We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers.