mardi 31 août 2010

De l’artisanat en informatique

Tout au long de ma carrière et en particulier pendant les entretiens d’embauche, j’ai rencontré des personnes qui considéraient l’informatique comme une activité artisanale. La différence entre l’artisanat et l’industrie tient moins dans les volumes traités que dans la manière de faire.

Un artisan réalise des chefs d’œuvre pour chacun de ses clients et l’industriel des biens de consommation. Cette différence ne concerne pas tous ceux que se prétendent artisan. Mais elle offre une perspective importante sur la manière de travailler. Un industriel réalise des objets qui doivent plaire aux plus grand nombre. L’artisan lui réalise un objet pour une personne particulière.

En informatique, une idée fausse est de penser que le programme est un chef d’œuvre est une illusion habituelle. Et cela pour plusieurs raisons, la première est de croire d’être le premier à résoudre ce problème. Même, si la situation est nouvelle, les éléments qui vont permettre de le résoudre existent déjà. Il suffit d’analyser et de décomposer le problème pour savoir ce qu’il faut chercher comme solutions validées. Le travail de programmeur consiste plus à assembler des solutions pérennes pour créer un programme de qualité, qu’à réécrire des algorithmes que d’autres ont validé depuis longtemps. La seconde est que le programme n’est pas destiné à un usage exceptionnel mais c’est un outil du quotidien. Une autre illusion est celle du client. Il s’imagine très souvent que son problème est particulier. Alors que son problème est la plupart du temps le même que ses concurrents au moins. Enfin, l’informatique est un travail d’ingénierie où la vraie difficulté est dans la compréhension des problèmes du client.

L’autre différence est sur les aspects économiques. Une entreprise informatique doit respecter deux contraintes majeures : les coûts et les délais. Contrairement à un artisan qui réalise un chef d’œuvre, les moyens sont limités.

La qualité a aussi une signification différente. Pour un artisan, c’est une notion intrinsèque car il travaille pour un seul client. Pour un industrielle, c’est une notion plus complexe car il y a des clients et des utilisateurs dont les besoins et les objectifs ne sont pas identiques. Ils concourent tous à la réussite de l’entreprise mais les contraintes de leurs travail ne sont pas les mêmes.

L’informatique en tant qu’industrie doit satisfaire des clients et des utilisateurs. Un problème supplémentaire se pose, c’est que les utilisateurs n’ont pas les mêmes besoins. Lors de la phase d’analyse des besoins clients, il est très important de définir correctement les rôles de chaque utilisateur, et de comprendre les besoins de chacun de ces rôles. En effet, même dans une petite entreprise il faut faire abstraction des individus car ils changeront au cours du temps alors que les rôles évolueront peu. Chaque rôle correspond à des fonctions précises. Certaines personnes pourront être associées à plusieurs rôles. Un avantage est que ces rôles sont en réalité une expression du métier de l’utilisateur et est partagé par des sociétés différentes. Ils existent même des rôles qui existent dans toutes les sociétés.

Un problème courant dans les sociétés informatiques (SSII, intégrateur, ou éditeur) est la polarisation sur la technologie. Il est certain que le suivi des évolutions technologiques est un problème en informatique car il est rapide. Mais c’est une illusion car c’est souvent la remise au goût du jour de technologie qui existe déjà. Il existe trois véritables révolutions : la programmation orientée objet, les méthodes agiles, et le cloud computing car elle change le niveau d’abstraction du métier qu’elle concerne : la programmation, l’organisation du travail, et l’infrastructure qui sont les trois bases de l’informatique.

L’informatique est une industrie dans son immense majorité. Il existe quelque cas particulier qui concerne peu d’informaticiens qui sont souvent les meilleurs. Un programmeur assemble le plus souvent des composants validés. L’analyste a la lourde tache de comprendre les besoins des clients et des utilisateurs. Le scrum product owner doit lui faire réaliser des fonctions standards tout en gérant la croyance de l’utilisateur dans la particularité de sa société.

Aucun commentaire:

Enregistrer un commentaire