Dans un précédent billet, j'évoquais
le développement logiciel en terme de poursuite d'une idéalité.
J'ajoute quelques réflexions supplémentaires concernant
la confiance dans le développement logiciel.


Ce document se veut être une contribution à une réflexion
sur le métier d'"ingénieur" de développement logiciel dans le milieu de la recherche,
plus précisément ici un institut public de recherche en informatique.

Il s'agit d'un point de vue personnel sur mon métier.

Ce document ne couvre pas toutes mes activités
mais détaille pour l'instant la seule partie "développement de logiciel",
la plus importante en terme de temps passé.


Récemment, lors d'une session randori d'un coding dojo, le sujet
était la lecture d'un texte pour construire un noyau de transition
markovien afin de générer un autre texte qui ait l'air relativement
correct, en tout cas au niveau des mots mis côte à côte. La question
a été soulevée de savoir comment tester le générateur développé.


Dans "Le programme est un logiciel punk", je différenciais
un logiciel d'un programme par le fait qu'un logiciel est muni
d'un potentiel d'évolution, d'un avenir.
Ce potentiel est orienté selon une
ou plusieurs directions. Un logiciel est donc logiciel selon
certaines directions d'évolution, et est par ailleurs programme,
c'est-à-dire avec un faible potentiel d'évolution,
selon d'autres directions.

Voyons ce qui donne ce potentiel d'évolution.

Dans Ce que sait
la main de Richard Sennett, l'auteur rappelle que l'apprentissage
passe par la répétition des gestes.


J'ai découvert en Novembre dernier seulement le
Manifesto for
software craftsmanship qui revendique l'aspect
artisanal de l'activité de développement logiciel.


J'ai toujours dans l'idée de développer des ateliers
personnalisés et distribués pour le développement logiciel,
ce qui nécessite la manipulation de données à la façon du
web sémantique. Comme il n'est pas question pour moi
de troquer OCaml contre un autre langage pour lequel
des bibliothèques de manipulation de
RDF existent déjà,
j'ai décidé de développer OCaml-rdf, une interface OCaml
pour la bibliothèque Redland librdf. Le projet est
ici.

Pour faire suite à "Une forge, des forges... ou autre chose ?",
prenons l'image de l'artisan menuisier et son atelier.


Dans "Une forge, des forges... ou autre chose ?" et
"Slow dev ?", j'évoquais respectivement le phénomène
de prolétarisation du développeur par des outils imposés
et la prescription de rythme par les principes de base
des méthodes agiles.


La question des forges de développement logiciel agite pas
mal les différents établissement de l'enseignement supérieur
et de la recherche (ESR). Certains voudraient une forge
pour leur établissement, d'autres plutôt une forge nationale,
...

Pourtant, il me semble qu'une forge unique, qu'elle soit nationale
ou par établissement, est une mauvaise réponse aux besoins
divers de la communauté des développeurs.


Comme tout développeur de logiciels, il m'est arrivé, en relisant le code d'un autre ou même mon propre code, de me demander ce que l'auteur a voulu faire, quelle était son intention, ce que fait ce code ou plus précisément ce qu'il est supposé faire.

Il y a bien sûr les commentaires, censés aider à la compréhension, mais ils peuvent manquer, ou bien être présents et ne pas être à jour, sans bien sûr aucune indication sur ce décalage potentiel.

Idéalement, j'aimerais donc assister à la création du code et aux pensées qui ont présidé à son écriture. Le sens de lecture (par la machine) d'un code est relativement linéaire, alors que son écriture (par l'humain) est faite d'allers et retours incessants pour ajouter ici une variable, ici découper une fonction, ...


Dans le cadre d'une réflexion sur le métier d'ingénieur de développement logiciel dans le milieu de la recherche, il est utile de préciser ce que l'on entend par programme et par logiciel, les deux termes n'étant pas, pour moi, synonymes, et la distinction entre les deux devrait permettre de comprendre l'activité de développement.

