Avant de se mettre à écrire, il faut apprendre à lire

read_and_write.pngConnaissez-vous des gens qui écrivent sans jamais avoir appris à lire ? L'idée est assez saugrenue.

Et pourtant...

Il ne faut pas chercher plus loin que dans l'industrie du logiciel.
On ne compte plus les professionnels qui écrivent du code à longueur de journée mais n'ont souvent jamais appris, ou simplement pris le temps de lire.

A ceux qui m'opposeront que écrire du code n'a rien à voir avec écrire de la littérature, je suggèrerai d'aller lire le dernier billet d'Antoine[1].

A moins d'être un génie qui jongle avec les mots comme d'autres jonglent avec un ballon ou avec des notes de musique dès leur plus jeune age, il y a un passage obligé pour arriver à écrire des choses de manière intelligible : la lecture.


Ma fille ainée a eu 10 ans hier. Il y a trois jours, elle m'a montré avec fierté une rédaction qui vient de lui valoir les félicitations de sa maitresse. Une histoire sur le cirque. Ce qui m'a le plus impressionné, c'est son application à dépeindre les personnages tant du point de vue physique qu'à travers leurs traits de caractère. Je lui ai demandé comment lui était venue l'idée d'écrire de cette manière là. Le plus simplement du monde, elle m'a répondu "c'est comme ça qu'ils font dans les livres".

Je ne connais pas de parents ayant pour préoccupation majeure la capacité de leur enfant de 10 ans à inventer et rédiger une histoire. Moi le premier. Si jamais cela arrive, on le reçoit comme un cadeau. Par contre, la plupart des parents que je connais seraient vraiment inquiets si, au même age, leur progéniture était incapable de déchiffrer une phrase.

Il faut croire que, dans le monde du logiciel, tout marche à l'envers. On s'intéresse beaucoup à la capacité qu'a un développeur d'écrire un programme. On s'intéresse plus rarement à sa capacité à le lire.
Toutes les Beaucoup de[2] formations sont axées sur l'écriture de code après quelques rudiments d'orthographe et de syntaxe, voire quelques notions de grammaire pour les plus chanceux.
L'employeur d'un développeur n'en demande pas plus. Il semble se complaire dans une sorte de "On s'en fout qu'il sache lire. On s'en fout que ce soit bien écrit. Tout ce qui compte c'est que le résultat plaise au client".

C'est en tout cas ce que j'ai souvent ressenti et le je m'enfoutisme vient parfois des développeurs eux-mêmes. Pour moi qui ai découvert ce qu'était un logiciel en recopiant inlassablement des pages entières de listing à la "grande époque" d'Hebdogiciel, c'est tout simplement inconcevable.
On ne peut bien écrire du code que lorsque l'on a passé du temps à lire du code, bon ou mauvais, à s'en imprégner, à en découvrir les forces et les faiblesses.

Le code, c'est une production humaine. C'est l'oeuvre d'un humain qui se parle à lui même et aux autres avant même de parler à la machine. Lorsqu'il écrit du code, un développeur devrait se demander comment celui-ci va être lu avant de se demander comment il va être compris par la machine.

Je laisserai le mot de la fin à un tweet de Jason Gorman.
Ecrire du code qu'un ordinateur comprend, c'est de la science. Ecrire du code que les autres programmeurs comprennent, c'est de l'art.

Notes

[1] sans lequel ce billet-ci n'existerait pas

[2] cf commentaire de Tok'

Antoine

Merci Oaz.

Le code est un langage écrit, et comme tout langage écrit, pour être en mesure d'exprimer (écrire) ses propres idées avec, il faut déjà être en mesure de comprendre (lire) celles de ses aînés.

Tok'

Heureusement que ce n'est pas vrai pour tous les "développeurs" et que certains savent encore lire... J'en lis plus que je n'en écris moi même, et je m'efforce de le faire comprendre à mes élèves en tout cas (futurs ingénieurs... et c'est un message pas évident à faire accepter, vu leur envie de consommer tout de suite sans se poser de question).

Tok' 13 avril 2011 - 09:57
Mathieu Petitdant

C'est bon de lire des choses censées de temps en temps ! Merci pour cette contribution ... et bravo à ta fille :-)
Par contre comparer l'écriture de code à de l'art, j'ai du mal. Je trouve ça difficilement crédible et défendable en entreprise. Je n'ai pas d'autre comparaison à proposer mais celle là me gêne.

Mathieu Petitdant 13 avril 2011 - 10:30
Oaz

@Tok,
Heureux de savoir qu'il y a des formations où l'on apprend aussi à lire. J'ai corrigé le billet en conséquence.

@Mathieu,
Il m'est arrivé d'apprécier du code pour la manière dont il était écrit et pas seulement pour ce qu'il faisait. On parle aussi parfois "d'élégance".
Et rappelons aussi le manifeste pour l'art(isanat) du logiciel et son "well-crafted software" que je traduis pour ma part en "logiciel conçu dans les règles de l'art".
Quant à défendre cela en entreprise, il faudrait savoir de quelle entreprise on parle...

Oaz 13 avril 2011 - 12:20
Alexandre COLLIGNON

C'est effectivement un comportement que je constate tous les jours. Le plus bel exemple est encore avec mes étudiants (en dut), où pour (selon eux) finir tôt il faut avoir "simplement" écrit le programme... donc hop hop hop on écrit, on écrit.
On se doute tous du résultat, rien ne marche. Le plus grave étant que la plupart des élèves ne peuvent même pas expliquer ce qu'ils ont écrit.

Autre tendance aussi, se foutre royalement de l'indentation des blocs de code. Je le vois de plus en plus en environnement universitaire mais également professionnel.

Bref, du (très) vite fait, (très) mal fait ! triste constat !

Antoine

@Mathieu : 9ème édition du dictionnaire de l'académie française :
ART n. m. XI e siècle, arz. Emprunté du latin ars, artis (féminin), « habileté, activité ».
1. Technique, méthode, ensemble de procédés ou de règles propres à chaque genre de l'activité humaine et qui vient s'ajouter aux dons naturels.[...]

Le fait que le code soit un art, par définition me semble difficilement contestable. Mais cela fait-il de nous des artistes ? Ibid.
ARTISTE n. XIV e siècle, au sens de « celui qui pratique un métier, artisan » ; XVIII e siècle, au sens moderne. Emprunté du latin médiéval artista, « lettré, maître ès arts », dérivé de ars, artis, « art ».
1. Personne qui crée des œuvres dotées de qualités esthétiques répondant à sa conception de l'art.
[...]
3. Artisan ou praticien faisant preuve dans son travail d'un grand talent.[...]
4. Personne qui a le goût, le sentiment, l'intelligence, la pratique des arts.[...]

les définitions 3 et 4 me semblent le confirmer. Et il n'y a aucun besoin de forcer pour coller aussi à la déf 1. Il n'y a qu'à se rappeler que l'on parle de "beau" code et de code "laid" pour ne plus être en mesure de nier que la qualité d'un code repose en partie sur des critères esthétiques.

Bon, ben j'ai le sujet de ma prochaine note de blog, moi... :)

Seb

Quelques pistes alors
Tout comme en littérature, l'appréciation de l'esthétique artistique d'un bout de code reste grandement subjective, certains font s'extasier devant une expression régulière de moins de 20 caractères qui fait même le café et d'autres préférer la simplicité d'un code long mais explicite. Doit-on coder en pensant à la beauté du geste ou à l'efficacité (pas du code mais du temps passé par le codeur) ? doit-on parler de code artistique et de code industriel ? Faulkner aurait-il été un bon codeur ?
Faut-il des cours de philosophie au milieu des cours d'informatique...

Seb 9 mai 2011 - 10:47

Fil des commentaires de ce billet

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.