IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les ingénieurs en logiciel ne sont pas (et ne devraient pas être) des techniciens, car un grand ingénieur en logiciel est celui qui automatise le travail répétitif ou manuel
Par Gabriella Gonzalez

Le , par Gabriella Gonzalez

76PARTAGES

6  2 
Les ingénieurs en logiciel ne sont pas (et ne devraient pas être) des techniciens, car un grand ingénieur en logiciel est celui qui automatise le travail répétitif ou manuel, par Gabriella Gonzalez

Les ingénieurs logiciels ne sont pas (et ne devraient pas être) des techniciens, par Gabriella Gonzalez

Je ne pense pas que la prévisibilité soit une bonne chose dans le domaine du génie logiciel. Cela va probablement surprendre certaines personnes (en particulier les managers), mais je vais expliquer ce que je veux dire.

Selon moi, un grand ingénieur logiciel est celui qui automatise le travail répétitif/manuel. On pourrait penser qu'il s'agit là d'une barre assez basse à franchir, n'est-ce pas ? L'automatisation des tâches répétitives n'est-elle pas... comme... la programmation 101 ? La plupart des ingénieurs en informatique ne seraient-ils pas d'excellents ingénieurs selon mon critère ?

Non.

Je dirais que la plupart des grandes organisations d'ingénierie logicielle encouragent l'anti-automatisation, principalement en raison de leur penchant pour la prévisibilité, en particulier pour les estimations et le travail prévisibles. La raison en est que le travail prévisible est un travail qui aurait pu être automatisé, mais qui ne l'a pas été.

Exemple

Je vais vous donner un exemple concret de travail prévisible dans le cadre de mon dernier emploi. Au début, nous avions un développeur dédié à la maintenance de notre API web. Chaque fois qu'une autre équipe ajoutait un nouveau point d'extrémité API gRPC à un service interne, ce développeur était chargé d'exposer ces mêmes informations via une API HTTP. Il s'agissait d'un travail relativement routinier, mais qui nécessitait néanmoins du temps et de la réflexion de la part du développeur.

Au départ, les responsables ont apprécié le fait que ce développeur puisse faire des estimations fiables (parce que le travail était bien compris) et ce développeur a apprécié le fait qu'il n'avait pas à sortir de sa zone de confort. Mais ce n'était pas très bon pour l'entreprise ! Cette personne devenait souvent un goulot d'étranglement pour le lancement de nouvelles fonctionnalités parce qu'elle avait inséré son propre travail manuel comme une étape nécessaire dans le pipeline de développement. Elle a fait valoir que la direction devrait embaucher davantage de développeurs de ce type pour faire face à la demande croissante de leur travail.

Notre équipe s'est opposée à cette idée car nous avons reconnu que le travail de ce développeur était tellement prévisible qu'il pouvait être complètement automatisé. Nous avons fait valoir à la direction qu'au lieu d'embaucher une autre personne pour faire le même travail, nous devrions l'automatiser davantage et c'est une bonne chose que nous l'ayons fait ; ce développeur a rapidement quitté l'entreprise et au lieu d'embaucher pour le remplacer, nous avons automatisé son travail à sa place. Nous avons écrit du code pour générer automatiquement une API HTTP à partir de l'API gRPC correspondante (De nos jours, il existe des outils prêts à l'emploi pour faire cela, comme grpc-gateway, mais nous n'en disposions pas à l'époque) et cela a généré beaucoup plus de valeur pour l'entreprise que l'embauche d'un nouveau développeur.

Techniciens vs ingénieurs

J'aime utiliser le terme « technicien » pour décrire un développeur qui (A) fait un travail bien compris et (B) n'a pas besoin de sortir très souvent de sa zone de confort. Il n'y a évidemment pas de frontière nette entre les ingénieurs et les techniciens, mais en général, plus le travail d'un développeur est prévisible et routinier, plus il a tendance à devenir un technicien. Dans l'exemple ci-dessus, je considère que le développeur chargé de la maintenance de l'API Web est davantage un technicien qu'un ingénieur.

À l'inverse, plus une personne s'oriente vers le métier d'ingénieur, plus son travail devient imprévisible (de même que ses estimations). Si vous automatisez constamment les choses, tout le travail prévisible se tarit lentement et il ne reste plus que le travail imprévisible. La nature du travail d'un ingénieur logiciel est qu'il s'attaque à des tâches de plus en plus difficiles et ambitieuses au fur et à mesure qu'il automatise davantage.

Je pense que la plupart des entreprises technologiques ne devraient pas privilégier la prévisibilité et devraient éviter d'embaucher ou de cultiver des techniciens. La raison pour laquelle les entreprises technologiques affichent des valorisations hors normes est l'automatisation. Le fait de privilégier la prévisibilité et le travail bien compris encourage par inadvertance le travail manuel au détriment de l'automatisation. Cela n'est pas évident pour beaucoup d'entreprises technologiques car elles supposent que tout travail impliquant du code est nécessairement de l'automatisation, mais ce n'est pas toujours le cas - ou même habituellement ; je suis personnellement très cynique quant à l'efficacité de l'ingénierie de la plupart des entreprises technologiques. Les entreprises technologiques qui n'en tiennent pas compte finissent par sur-embaucher et par se demander pourquoi moins de travail est effectué par plus de personnes.

Ou, pour le dire autrement, je considère que c'est un signal d'alarme : Je considère en fait comme un signal d'alarme le fait qu'un ingénieur ou une équipe entre dans un « flux » prévisible, car cela signifie qu'il existe une opportunité prometteuse d'automatisation qu'ils sont en train d'ignorer.

Licence : This work is licensed under a Creative Commons Attribution 4.0 International License. - Ce travail est soumis à une licence Creative Commons Attribution 4.0 International License.

Source : "Software engineers are not (and should not be) technicians" (Gabriella Gonzalez)

Et vous ?

Pensez-vous que l'avis de Gabriella Gonzalez est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

Huit conseils pour ceux désireux de faire long feu et donc une longue carrière en tant que développeur : un condensé de 26 ans d'expérience, par Jayme Edwards

Peut-être que la programmation ne vous rend pas malade, c'est tout ce qui vient presque nécessairement avec la programmation pour gagner sa vie

Réflexions sur l'avenir du développement de logiciels suite à l'arrivée des grands modèles de langage (LLM) capables de générer du code, par Sheshbabu Chinnakonda
Vous avez lu gratuitement 1 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de JPLAROCHE
Membre expérimenté https://www.developpez.com
Le 05/03/2025 à 2:48
Tout à fait d'accord, encore faut-il que l'ingénieur possède son environnement,
j'ai monté 3 programme (moteur) en C sur as400 en 1995 cela a remplacé 2500 programme géré les tables , visue, query , liste, mise à jour de tables ect.

Après avoir dégagé le service Informatique de l'intendance , j'ai aussi monté un AGL pour automatiser les mises à jour , gain de temps à l'époque, c'était le temps le plus important , pour recompiler un système de plus 1 millions de lignes , 1h30. cela nous permettaient de savoir pour une zone quel programme était impacté, idem pour les écrans les spool ect, et qu'elles répercutions pour le changement d'attribut pour les fichiers et tous objets qui peuvent être impactés.

Cela nous a permis d'une part de pouvoir partir à l'heure (hormis les gros démarrages), mais surtout du temps pour se pencher sur de vrais problèmes, par exemple faire un devis pour l'imprimerie, un casse-tête,
mais aussi prendre sont temps pour se cultiver et profiter d'un maximum de ce que peu faire la machine en l'exploitant au maximum.
Pour le devis, nous avons pensé à la théorie des ensembles pour l'articulation… Quelque chose que les US nous enviait.

Alors se dégager des tâches (pisseur de lignes) OUI. Mais ne pas abandonner la connaissance de la machine est aussi très important et la formation continue…
3  0 
Avatar de boboss123
Membre éprouvé https://www.developpez.com
Le 04/03/2025 à 8:47
Pas fan de l'automatisation à outrance après il faut gérer la maintenance surtout quand il y a des dépendances dans l'outil vers des bibliothèques/logiciels externes
1  0 
Avatar de Razmauve12
Membre à l'essai https://www.developpez.com
Le 04/03/2025 à 15:46
Tout ce qui est automatisation est comme une boite noire, bien sur que c'est efficace mais tout est perdu si la personne qui gère la boite noire s'en va...
2  1 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 01/05/2025 à 16:12
Mais alors, pas du tout. C'est une réflection typique d'une personne se sentant supérieur, remplie de condescendences.

Citation Envoyé par Gabriella Gonzalez Voir le message
Les ingénieurs logiciels ne sont pas (et ne devraient pas être) des techniciens, par Gabriella Gonzalez
Cela est bien vrai, je n'ai jamais rencontré un "ingénieur logiciel" qui arrive ne fusse qu'à la cheville d'un bon développeur, ou même d'un développeur moyen. Un "ingénieur logiciel" n'a pas le niveau d'un technicien. C'est normal, car ce n'est pas son métier.

Citation Envoyé par Gabriella Gonzalez Voir le message
Je ne pense pas que la prévisibilité soit une bonne chose dans le domaine du génie logiciel. Cela va probablement surprendre certaines personnes (en particulier les managers), mais je vais expliquer ce que je veux dire.
C'est beau "l'imprévisibilité", ça permet de se tenir éloigné de la réalité. L'"ingénieur logiciel" est au développeur ce qu'un "politique" est au "peuple". Un être isolé dans son savoir, rarement capable d'apporter une réponse correct, judicieuse, compréhensible, réaliste et réalisable. Il est, comme nos politiques, hors-sol, mais persuadé de son savoir.

Citation Envoyé par Gabriella Gonzalez Voir le message
Selon moi, un grand ingénieur logiciel est celui qui automatise le travail répétitif/manuel. On pourrait penser qu'il s'agit là d'une barre assez basse à franchir, n'est-ce pas ? L'automatisation des tâches répétitives n'est-elle pas... comme... la programmation 101 ? La plupart des ingénieurs en informatique ne seraient-ils pas d'excellents ingénieurs selon mon critère ?

Non.
Carrément d'accord avec le dernier mot Non.. Pour le reste, on passe au stade supérieur, on parle maintenant d'"un grand ingénieur logiciel", bref, MOI, mais pas "les autres"...

Citation Envoyé par Gabriella Gonzalez Voir le message
Je dirais que la plupart des grandes organisations d'ingénierie logicielle encouragent l'anti-automatisation, principalement en raison de leur penchant pour la prévisibilité, en particulier pour les estimations et le travail prévisibles. La raison en est que le travail prévisible est un travail qui aurait pu être automatisé, mais qui ne l'a pas été.
Bla bla bla, si tout se qui est "prévisible" pouvait être "automatisé", cela se saurait.

Citation Envoyé par Gabriella Gonzalez Voir le message
Exemple

Je vais vous donner un exemple concret de travail prévisible dans le cadre de mon dernier emploi. Au début, nous avions un développeur dédié à la maintenance de notre API web. Chaque fois qu'une autre équipe ajoutait un nouveau point d'extrémité API gRPC à un service interne, ce développeur était chargé d'exposer ces mêmes informations via une API HTTP. Il s'agissait d'un travail relativement routinier, mais qui nécessitait néanmoins du temps et de la réflexion de la part du développeur.

Au départ, les responsables ont apprécié le fait que ce développeur puisse faire des estimations fiables (parce que le travail était bien compris) et ce développeur a apprécié le fait qu'il n'avait pas à sortir de sa zone de confort. Mais ce n'était pas très bon pour l'entreprise ! Cette personne devenait souvent un goulot d'étranglement pour le lancement de nouvelles fonctionnalités parce qu'elle avait inséré son propre travail manuel comme une étape nécessaire dans le pipeline de développement. Elle a fait valoir que la direction devrait embaucher davantage de développeurs de ce type pour faire face à la demande croissante de leur travail.

Notre équipe s'est opposée à cette idée car nous avons reconnu que le travail de ce développeur était tellement prévisible qu'il pouvait être complètement automatisé. Nous avons fait valoir à la direction qu'au lieu d'embaucher une autre personne pour faire le même travail, nous devrions l'automatiser davantage et c'est une bonne chose que nous l'ayons fait ; ce développeur a rapidement quitté l'entreprise et au lieu d'embaucher pour le remplacer, nous avons automatisé son travail à sa place. Nous avons écrit du code pour générer automatiquement une API HTTP à partir de l'API gRPC correspondante (De nos jours, il existe des outils prêts à l'emploi pour faire cela, comme grpc-gateway, mais nous n'en disposions pas à l'époque) et cela a généré beaucoup plus de valeur pour l'entreprise que l'embauche d'un nouveau développeur.
Tirer d'un exemple une généralité, ça c'est très "ingénieux". Des exemples d'"ingénieur ingénieux", on en voit partout. Et généralement, c'est pas très beau a voir. Que ce soit dans le monde du logiciel ou dans d'autres domaines.

Citation Envoyé par Gabriella Gonzalez Voir le message
Techniciens vs ingénieurs

J'aime utiliser le terme « technicien » pour décrire un développeur qui (A) fait un travail bien compris et (B) n'a pas besoin de sortir très souvent de sa zone de confort. Il n'y a évidemment pas de frontière nette entre les ingénieurs et les techniciens, mais en général, plus le travail d'un développeur est prévisible et routinier, plus il a tendance à devenir un technicien. Dans l'exemple ci-dessus, je considère que le développeur chargé de la maintenance de l'API Web est davantage un technicien qu'un ingénieur.

À l'inverse, plus une personne s'oriente vers le métier d'ingénieur, plus son travail devient imprévisible (de même que ses estimations). Si vous automatisez constamment les choses, tout le travail prévisible se tarit lentement et il ne reste plus que le travail imprévisible. La nature du travail d'un ingénieur logiciel est qu'il s'attaque à des tâches de plus en plus difficiles et ambitieuses au fur et à mesure qu'il automatise davantage.
Que d'humilité... Un développeur qui fait de mieux en mieux son travail, est donc quelqu'un qui n'est plus qu'un technicien, un robot ? C'est vraiment mal connaître le métier. Cela ne m'étonne pas, car il s'agit de deux métiers complètement différents. La discussion entre un "ingénieur" et un "développeur" est très difficile. L'ingénieur peine souvent a se faire comprendre. Et quand on comprend sa dernière grande idée, le "petit technicien développeur de m...." n'a souvent pas beaucoup d'effort a faire pour expliquer que la GRANDE IDEE DU GRAND INGENIEUR LOGICIEL (OU PAS) n'est pas appliquable, réaliste, et a déjà été proposée 25x par les ingénieurs ingénieux l'ayant précédé. Voilà bien quelque chose de prévisible !

Citation Envoyé par Gabriella Gonzalez Voir le message
Je pense que la plupart des entreprises technologiques ne devraient pas privilégier la prévisibilité et devraient éviter d'embaucher ou de cultiver des techniciens. La raison pour laquelle les entreprises technologiques affichent des valorisations hors normes est l'automatisation. Le fait de privilégier la prévisibilité et le travail bien compris encourage par inadvertance le travail manuel au détriment de l'automatisation. Cela n'est pas évident pour beaucoup d'entreprises technologiques car elles supposent que tout travail impliquant du code est nécessairement de l'automatisation, mais ce n'est pas toujours le cas - ou même habituellement ; je suis personnellement très cynique quant à l'efficacité de l'ingénierie de la plupart des entreprises technologiques. Les entreprises technologiques qui n'en tiennent pas compte finissent par sur-embaucher et par se demander pourquoi moins de travail est effectué par plus de personnes.
C'est un peut le contraitre de tout ce qui est dit avant... La sur-embauche a bien souvent ces racines dans la manière dont un projet est mené. Et ajouter x développeurs en plus, c'est également ajouter x problèmes de communication. 1 + 1 < 2. Un ingénieur a du mal avec ce concept. Mais bon, vu qu'on est dans un monde où se sentir important est tellement une bonne chose, que c'est agréable de penser qu'on peut remplacer un développeur par un autre, comme on remplace une chaise par une autre.

Citation Envoyé par Gabriella Gonzalez Voir le message
Ou, pour le dire autrement, je considère que c'est un signal d'alarme : Je considère en fait comme un signal d'alarme le fait qu'un ingénieur ou une équipe entre dans un « flux » prévisible, car cela signifie qu'il existe une opportunité prometteuse d'automatisation qu'ils sont en train d'ignorer.
Et paf, en plein dans le vrai. C'est la "maladie" de l'ingénieur. Il ne semble pas savoir qu'à un moment, il faut savoir s'arreter. Qu'il faut bien qu'un produit sorte, même s'il n'est pas à 100% parfait. On peut toujours faire mieux, toujours. Ce qu'il faut trouver n'est pas la solution 100% optimale, mais la solution suffisament bonne. Sinon, pendant que l'ingénieur ingénieux retourne le problème dans tous les sens, le concurrent a sorti une solution satifaisante, qui fait le job

Citation Envoyé par Gabriella Gonzalez Voir le message
Pensez-vous que l'avis de Gabriella Gonzalez est crédible ou pertinente ?
Quel est votre avis sur le sujet ?
Je n'ai pas envie de penser, j'ai du vrai travail de "technicien développeur de m...." qui doit être fait...
1  0 
Avatar de Nb
Membre averti https://www.developpez.com
Le 03/03/2025 à 21:08
Un ingenieur (peut importe le domaine) serait donc là pour résoudre des problemes complexes et pas appliquer des procedures toutes faites bêtement? Je n en reviens pas.
1  1 
Avatar de PomFritz
Membre confirmé https://www.developpez.com
Le 02/04/2025 à 13:10
C'est simplement un rapport coûts/bénéfices, peu importe qui le fait. Ajouter à celà des responsables qui managent parce qu'ils n'aiment pas/plus coder et voilà!
0  0