bien programmer est un art, où tout au moins un artisanat, un peu comme un ébéniste.
Par programmation, j’entends l’ensemble des activités, permettant de passer de l’expression d’un besoin à un système informatique. Cela regroupe donc ce qu’on appelle l’analyse, la conception, la programmation, les tests, …
Bien sûr, les grosses boites vous parlent de processus industriels.
Ils ne vont pas vous dire le contraire, quand on allonge une facture de plusieurs centaines de milliers d’euros…
Ce sont les mêmes qui réalisent les systèmes informatiques des grosses banques… Vous me suivez ?
Mais la réalité est aujourd’hui plus simple, toute nue : la qualité de votre système informatique, quel qu’il soit, dépend de la qualité des artisans qui le construisent.
Une des qualités fondamentale pour bien programmer, c’est l’art de l’abstraction.
Pourquoi ? (j’aurais pas du regarder Sarkozy l’autre soir moi, j’ai une rechute)
Quand on doit réaliser une application, la base de la programmation, c’est de découper le problème, dans deux sens : verticalement et horizontalement.
Verticalement : on sépare le problème, fonction par fonction (pour un front office, on parlera par exemple du processus achat, du catalogue produit…)
Horizontalement : on sépare le problème en couche (toujours pour notre front, on pourra faire une couche pour les données, une couche pour les objets métiers et enfin une couche présentation).
Ce découpage à pour but de définir des modules, entité informatique ayant d’une part une complexité maîtrisable et d’autre part une certaine homogénéité.
Pourquoi ?
- Un module doit être plus simple à programmer parce que le problème qu’on cherche à régler est une partie du problème global.
- Le module est plus homogène parce qu’il ne résoud qu’un type de problème (les données pour le processus achat par exemple).
Le programmeur, notre artisan, doit donc être capable de faire abstraction des autres problèmes (voisins de gauche et de droite et du dessous) pour se concentrer sur son “morceau” du problème.
ça encore, c’est pas le plus dur.
Le plus dur, c’est qu’il doit à son tour donner une interface à son module ayant le bon niveau d’abstraction.
Il doit bien faire la différence entre “sa cuisine interne” et la vue qu’il donne sur son module.
Concevoir l’interface d’un module est réellement une partie passionnante. On se retrouve dans la situation de définir le “panneau de contrôle”, donnant donc une vision la plus simple et la plus abstraite du problème qu’on doit résoudre.