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

41PARTAGES

5  0 
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 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...
1  0 
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…
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.
0  0