La réutilisation du code comme problème
Je pensais à cette question sur la livraison de logiciels, et je revenais sans cesse sur la question de la répétabilité et / ou de la reproductibilité . Ils sont importants, car si vous ne répétez pas un projet, il devient plus difficile d'améliorer le processus que vous avez utilisé pour construire le projet. L'ingénierie implique l'amélioration constante des processus impliqués dans la conception et la construction afin de produire des projets de meilleure qualité.
Le logiciel peut dépendre fortement de la réutilisation en raison de sa forme numérique. Au lieu de réécrire un module, il suffit de le rappeler ou de le copier sur l'autre système. Certains exemples sont l'authentification / connexion ou peut-être une fonction de journalisation. Il existe de nombreux exemples bien connus pour ces catégories, et la sagesse conventionnelle consiste à réutiliser ce qui existe au lieu de rouler le vôtre.
Quelques comparaisons avec d'autres disciplines
Construction
En revanche, la construction de systèmes physiques (bâtiments, ponts) est loin d'être aussi réutilisable. Il est vrai que le plan d'une maison peut être réutilisé plusieurs fois pour construire la même copie de la maison, mais la construction doit être effectuée à chaque fois. Le copier-coller ne fonctionne pas comme ça dans le monde analogique. Les plans de pont sont moins réutilisables que les maisons car les conditions du site varient.
Les maîtres d'œuvre sont des experts reconnus pour avoir conçu et / ou construit des dizaines, des centaines ou des milliers de choses dans leur région. Par exemple, Frank Lloyd Wright , architecte et designer de renommée mondiale designed more than 1,000 structures and completed 532 works
. Comparez cela avec Anders Hejlsberg qui a conçu "seulement" cinq langages (Turbo Pascal; Delphi; J ++; C #; Typescript). À bien des égards, c'est une comparaison injuste car les domaines sont différents. Mais à un niveau large, la production quantifiable de deux personnes très intelligentes est très différente.
Arts martiaux
Les artistes martiaux diront que la maîtrise d'un mouvement ne vient que de milliers de répétitions. Après qu'une bonne partie de ces répétitions ait été mise en place, de nombreux artistes martiaux sont surpris de voir comment un kata ou une forme auparavant perçu comme complexe est devenu simple. Les instructeurs de ces élèves remarqueront également comment le mouvement devient plus fluide et utile, tout en ayant une économie de mouvement. De même, les artistes martiaux expérimentés sont capables de ramasser des katas plus complexes plus rapidement que les étudiants moins expérimentés. L'expérience de la répétition leur a donné un cadre ou un processus qui leur permet d'apprendre plus rapidement.
Travail du bois
Les menuisiers connaissent une transformation similaire. Les menuisiers amateurs se réfèrent toujours à leur premier projet qui nécessitait beaucoup de tiroirs. S'ils achèvent le projet, ils acquièrent une nouvelle appréciation pour l'efficacité des chaînes de montage. Il y a d'autres avantages comme une meilleure compréhension de la disposition des pièces des tiroirs sur le stock de feuilles afin de maximiser l'utilisation du bois. Par rapport aux amateurs, les menuisiers professionnels sont en mesure de concevoir, de démarrer et de construire plus rapidement des articles qu'ils ont fabriqués à plusieurs reprises auparavant. Ils acquièrent également la capacité de voir les problèmes inhérents à la conception de quelqu'un d'autre ayant fait cette erreur dans leur travail.
La réutilisation des logiciels empêche-t-elle les développeurs de devenir plus compétents?
À bien des égards, la conception et la construction de logiciels sont toujours nouvelles. Nous ne répétons pas les travaux passés, car si nous pouvons réutiliser un module, une bibliothèque ou un système, nous le faisons. Nous étendrons préférentiellement un système existant avant de réécrire le tout à partir de zéro. Mais la répétition est ce qui nous permet de trouver de l'efficacité dans la conception et la construction. Quiconque a pratiqué un sport ou une activité physique vous dira que la répétition est la clé pour devenir un bon pratiquant.
Ma question: la capacité du logiciel à être réutilisé empêche-t-elle l'amélioration et l'efficacité des processus nécessaires qui découlent de la répétition d'un projet?