Question: Pouvons-nous, en tant que développeurs, apprendre des processus de l'industrie manufacturière? L'adoption de leurs processus peut-elle augmenter le taux de réussite du développement logiciel?
Réponse: oui, bien sûr. Les développeurs de logiciels peuvent tirer de nombreuses leçons de la fabrication, même si le développement de logiciels est un processus créatif. Le développement de logiciels est lui-même un processus, et il comprend de nombreux autres processus. Mieux vous pouvez définir et contrôler ces processus, mieux vous maîtrisez le processus de développement logiciel dans son ensemble. Cela ne signifie pas que vous devez prescrire chaque frappe effectuée par un développeur; cela signifie simplement qu'en tant que développeur, vous effectuez naturellement des tâches dans un certain ordre, et ces tâches peuvent souvent être gérées. Voici quelques exemples:
suivi des défauts: lorsqu'un bug est observé ou signalé, que se passe-t-il? L'écrivez-vous sur un morceau de papier et le collez-vous sur une pointe «enquête»? Enlevez-vous plus tard ces morceaux un à la fois, examinez-les et éventuellement déplacez-les vers le pic «résolu»? Si vous le faites sans échec chaque fois que vous recevez un rapport de bogue, vous disposez d'un processus bien défini et mesurable, et vous êtes probablement beaucoup mieux que quelqu'un qui a un système de suivi de défauts sophistiqué et de haute technologie qui est si onéreux que certains membres de l'équipe suivent les bogues autrement, ou pas du tout.
contrôle de version: il y a de fortes chances que vous utilisiez le contrôle de version là où vous travaillez, et le contrôle de version est évidemment beaucoup plus utile lorsque tout le monde l'utilise de la même manière.
conception du produit: décidez-vous des fonctionnalités à mettre en œuvre en lançant des fléchettes sur un mur recouvert de post-it? Si oui, vous avez un processus. Je ne pense pas que quiconque dirait que c'est un excellent processus, mais au moins c'est un point de départ. Si vous changez le processus, comment pouvez-vous être certain que votre changement était en fait une amélioration, à moins que vous ne mesuriez avant et après? Tu ne peux pas.
revues de code: Une revue de code serait-elle utile si le processus de revue et les critères de codage changeaient pour chaque revue? Bien sûr que non.
cycle de vie du développement logiciel: l'ensemble de l' analyse -> conception -> mise en œuvre -> test -> cycle de maintenance est un processus qui doit être clairement défini.
Dans chacun de ces cas, la mise en place d'un processus vous permet de mesurer les entrées et les sorties et de déterminer si les modifications que vous apportez ont l'effet escompté. Ne pas avoir de processus en place signifie que vous devinez simplement quand vous essayez d'améliorer votre façon de travailler. C'est vraiment ce qu'est la fabrication, et cela n'a de sens que d'emprunter les outils de raffinement successifs de la fabrication lorsqu'ils sont appropriés.
Il y a tout un domaine consacré à la définition et à l'amélioration des processus utilisés pour créer et maintenir des logiciels; cela s'appelle le génie logiciel . Il n'est pas surprenant que vous ayez des questions sur le processus de développement en lisant sur CMMI - CMMI est un produit du Software Engineering Institute .
Le développement de logiciels a déjà adopté de nombreux concepts de fabrication:
Il est difficile de ne pas voir l'influence des pièces interchangeables d'Eli Whitney sur la POO et le développement à base de composants .
Les techniques de gestion de projet utilisées dans le développement de logiciels ne sont pas très différentes de celles développées pour la fabrication. À titre d'exemple, le monde du logiciel n'a adopté que récemment le concept Kanban qui a été développé il y a des décennies chez Toyota, et les diagrammes de Gantt ont été utilisés dans la fabrication bien avant la construction du premier ordinateur électronique.
Les méthodologies de gestion de la qualité comme Six Sigma qui ont été développées pour la fabrication ont été adaptées au développement de logiciels.
Malgré l'environnement lourd axé sur les processus, le développeur doit s'engager à créer des choses "à la volée".
Êtes-vous en train de me dire que quelqu'un va décider par lui-même d'ajouter un patch au package de reconnaissance faciale, et qu'il va l'ajouter dans la version de production sans créer d'abord un problème dans le système de suivi, en faisant réviser la conception, vérifier le code dans le contrôle de version, ou demander aux gens de tester de le regarder en premier? Notre processus nécessite ces éléments pour de très bonnes raisons. Si par «à la volée» vous voulez dire «en dehors du processus», c'est inacceptable.
Faire des choses à la volée est contraire à l'esprit de fabrication.
Encore une fois, si «à la volée» signifie «en dehors du processus», vous avez raison. Mais si vous pensez que la fabrication ne nécessite pas une réflexion rapide et le développement de solutions créatives aux problèmes, vous vous trompez. Toutes sortes de problèmes surviennent dans le processus de fabrication - les cupcakes n'ont pas suffisamment de crème, les surfaces peintes cessent soudainement de passer le test de rayures de QA, 20% des pièces finies manquent d'un anneau de retenue important, le système de mélange de la pâte a cassé un partie critique...