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 !

« Agile tue l'innovation en confinant les développeurs dans des boîtes noires d'abstraction qui limitent la créativité et la compréhension des systèmes sous-jacents »,
Affirme l'un des développeurs de Signal

Le , par Mathis Lucas

90PARTAGES

12  0 
Moxie Marlinspike regrette l'absence inquiétante de l'innovation dans le développement logiciel moderne. L'entrepreneur américain pense que la cause principale de cette perte d'innovation est le développement Agile. Il a fait valoir que les méthodes Agile, largement adoptées au cours des deux dernières décennies, ont confiné les développeurs dans des "boîtes noires d'abstraction" qui limitent la créativité et la compréhension des systèmes sous-jacents. Cette approche aurait laissé de nombreux ingénieurs logiciels incapables de faire plus qu'un travail dérivé, ne possédant pas la compréhension profonde nécessaire aux développements révolutionnaires.

Moxie Marlinspike est cryptographe américain, chercheur en sécurité informatique et entrepreneur. Il est l'un des cocréateurs de l'application de messagerie chiffrée Signal et le cofondateur de la Fondation Signal. Lors de son passage à la conférence Black Hat 2024, Marlinspike a fait un bilan peu élogieux du développement logiciel moderne. Marlinspike a déclaré que le développement logiciel moderne n'encourage ni ne favorise l'innovation et est confronté à une complexité inutile. Selon le chercheur en sécurité, les bonnes pratiques de développement ont été progressivement perdues au cours des vingt dernières années.


Marlinspike pense savoir exactement ce qui est à blâmer : le développement Agile. « Nous avons passé les vingt dernières années à intégrer des personnes dans des logiciels en les plaçant dans des couches d'abstraction de boîtes noires, puis dans des organisations composées de couches d'abstraction de boîtes noires », a déclaré Marlinspike. Selon lui, cette approche "basée sur les boîtes noires d'abstraction" prive les développeurs de la liberté nécessaire à l'innovation :

Citation Envoyé par Moxie Marlinspike


Toute personne qui gère une organisation d'ingénierie aura une philosophie de gestion qui est, d'une manière ou d'une autre, en aval, dérivée, dans la zone ou liée d'une manière ou d'une autre à la méthode agile.

Au lieu de permettre aux développeurs d'opérer de bas en haut d'une manière qui leur permet de combiner l'expertise en ingénierie avec la vision de nouvelles capacités dans la technologie existante, les équipes agiles finissent par être cloisonnées, travaillant séparément les unes des autres, et sans beaucoup de visibilité sur ce que font les autres équipes.

En gros, Marlinspike affirme que "les ingénieurs en logiciel n'ont pas pu faire mieux que d'être des produits dérivés". Le PDG de Thistle Technologies, Window Snyder, s'est fait l'écho de ces préoccupations. Selon Snyder, ces équipes "boîte noire" ont tendance à manquer de visibilité sur certains aspects fondamentaux du fonctionnement de leurs propres produits. Snyder déplore le fait que plusieurs programmeurs se ruent sur les langages de haut niveau qui facilitent le développement d'applications, et à la fin, ils n'ont plus aucune connaissance des langages de bas niveau et des interactions avec le code machine.

Snyder affirme : « les étudiants en programmation n'apprennent pas les langages de bas niveau ni comment interagir avec le code machine, mais seulement des langages de haut niveau qui facilitent le développement d'applications, mais qui laissent les ingénieurs sans le contexte nécessaire pour comprendre comment leurs pièces du puzzle s'intègrent dans un ensemble plus vaste et largement interconnecté ». À ce propos, Marlinspike a fait valoir que les chercheurs en cybersécurité, qui sondent régulièrement les abstractions de surface, sont mieux placés pour stimuler l'innovation dans le développement de logiciels.

« Alors que l'ingénierie logicielle a passé les dernières décennies à s'efforcer de devenir plus rapide, plus flexible et, par extension, plus abstraite, les chercheurs en sécurité ont fait le contraire. La sécurité est le processus qui consiste à regarder à travers les abstractions afin de comprendre comment les choses fonctionnent, ce qu'elles contiennent, et parfois de les comprendre mieux que les personnes qui les ont construites au départ. Ce que j'essaie de dire, c'est que sans le savoir, je pense que vous, les personnes présentes dans cette salle, avez en fait hérité de leur Terre », a déclaré Marlinspike lors de son intervention.

Selon certains rapports, le problème souligné par Snyder et Marlinspike pourrait s'aggraver avec la profusion d'outils d'IA de génération de code. « Il y a de la magie dans le développement de logiciels », affirme Marlinspike, en ajoutant que la compréhension approfondie du fonctionnement est analogue à la maîtrise de la sorcellerie dans le monde d'Harry Potter, où le talentueux peut changer le monde avec rien d'autre que ses connaissances et une baguette magique.

Citation Envoyé par Moxie Marlinspike


Les spécialistes en sécurité informatique sont comparables aux élèves de Poudlard qui ne détestent pas vraiment leurs devoirs, contrairement à certains personnages principaux que nous pourrions citer. Les spécialistes de la sécurité sont ceux qui se sont assis à la bibliothèque, ont appris les formules magiques, ont compris comment tout cela fonctionne... comme dans le monde d'Harry Potter, la seule chose dont vous avez besoin pour utiliser ces connaissances est un ordinateur. Et il n'est même pas nécessaire que ce soit un bon ordinateur.

Le développement agile de logiciel est un état d'esprit qui découle des valeurs convenues par l'Agile Alliance, un groupe de 17 praticiens du logiciel, en 2001. Comme l'indique leur Manifeste pour le développement agile de logiciels, les praticiens accordent de l'importance aux valeurs suivantes : les individus et les interactions plutôt que les processus et les outils, un logiciel fonctionnel plutôt qu'une documentation exhaustive, la collaboration avec les clients plutôt que la négociation de contrats, la réaction au changement plutôt que le suivi d'un plan. Mais pour beaucoup de critiques, l'approche Agile ne marche pas.

La récente sortie de Marlinspike fait à de nombreuses autres plaintes selon lesquelles le développement logiciel a perdu tout son charme d'antan. Une étude menée auprès de 600 ingénieurs logiciels britanniques et américains a révélé que les projets qui adoptent les pratiques du Manifeste Agile ont 268 % plus de chances d'échouer que ceux qui font le contraire. L'étude démontre que les taux d'échec des projets de logiciels Agile peuvent être divisés par 6,5 en utilisant une nouvelle méthodologie d'ingénierie d'impact. Pourtant, de nombreuses équipes d'ingénierie se tournent systématiquement vers les méthodes Agile.

Selon l'étude, l'adoption d'une ingénierie d'impact pourrait permettre d'économiser 115 milliards de dollars par an en dépenses de R&D inutiles aux États-Unis et les contribuables britanniques pourraient économiser environ 7 milliards de livres sterling par an sur les projets gouvernementaux de changement numérique qui n'aboutissent pas. Certains experts affirment que l'approche Agile conduit les organisations vers une technique beaucoup plus importante.

Par ailleurs, l'approche Agile n'est peut-être pas le seul facteur qui limite l'innovation dans le développement logiciel moderne. Dans une analyse détaillée publiée le mois dernier, Avery Pennarun, ancien ingénieur de Google et PDG de la société de VPN Tailscale, a sévèrement critiqué les pratiques modernes de développement de logiciels. Pennarun affirme que le développement logiciel moderne est submergé par une complexité inutile et des "frais généraux inutiles".

Selon Pennarun, ce phénomène est dû à "une focalisation erronée" sur l'évolutivité pour des tâches qui en ont rarement besoin. Il met en cause : la mise à l'échelle, les conteneurs, le cloud computing, etc. Il oppose les pratiques de développement actuelles à l'efficacité de la programmation dans les années 90, où des systèmes plus simples pouvaient gérer des charges de travail substantielles rapidement et efficacement sans l'infrastructure gonflée que l'on voit aujourd'hui.

Source : Moxie Marlinspike

Et vous ?

Quel est votre avis sur le sujet ?
Êtes-vous d'avis que les méthodes Agile limitent les développeurs et empêchent l'innovation ?
Selon vous, pourquoi les pratiques Agile sont-elles de plus en plus décriées depuis quelques années ?
Quelle est votre expérience personnelle avec l'approche de développement Agile ? Agile est-elle le problème ?
Agile sacrifie-t-elle les bonnes pratiques de développement logiciel au profit d'un logiciel fonctionnel ?
Moxie Marlinspike affirme que les chercheurs en sécurité sont aujourd'hui les mieux placés pour stimuler l'innovation dans l'ingénierie logicielle. Partagez-vous cet avis ?

Voir aussi

268 % de taux d'échec en plus pour les projets logiciels agiles, selon une recherche qui fait suite aux échecs catastrophiques de logiciels, de plus en plus présents dans l'esprit du public

L'un des développeurs de Signal explique pourquoi les premiers outils de messagerie chiffrée ont échoué, il estime que les développeurs doivent gérer la complexité au lieu de la déléguer aux utilisateurs

Agile pourrait-il conduire les organisations vers une dette technique plus importante ? Oui selon Don Clos, développeur logiciel, qui propose une analyse détaillée de la situation

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

Avatar de OuftiBoy
Membre éclairé https://www.developpez.com
Le 14/08/2024 à 20:38
Bonjour à tous.

Nous voici donc avec une discution commencée en 2018 et qui "repart" en 2024. Intéressant... Je n'avais pas participé à l'époque, car la discussion ressemblait plus à une guerre de religion qu'a autre chose.

J'ai maintenant une certaine expérience, et des méthodes, j'en ai vu passer, du moins "théoriquement".

Sans penser avoir "la solution" à la difficulté de réussir un projet "logiciel", j'ai, au fil du temps, remarqué plusieurs choses. Je les cite en vrac.

- La "compétence" ou "formation" des "développeurs" a grandement diminué depuis qlq décénies. Je ne sais pas à quoi cela est dû exactement, c'est juste une constatation que j'ai faite. D'autres n'ont peut être pas ce ressentiment, et peut-être que cela dépend du domaine dans lequel on bosse.

- Faire appel à la sous-traitance a toujours été un fiasco. Un sous-traitant n'est pas là pour touver une "bonne solution" à un projet, mais à prendre tous les raccourcis possible pour livrer "au plus vite" quelque chose qui "ressemble" à une solution. Que cette solution puisse ou pas "évoluer" dans le temps long ne fait pas partie des préoccupations. C'est même le contraire, afin de se rendre "indispensable" au "client", s'assurant la/les mises à jour.

- De plus en plus (ça doit être l'époque qui veut ça), des mots magiques "sortent du lot" (pour l'instant c'est l'IA), et il faut utiliser ces nouvelles "religions" pour se sentir exister ou être "à la pointe du progrès".

- De plus en plus de couches se sont glissées entre le besoin et la réalisation de ce besoin. Au point de parfois même "inventer un besoin" pour justifier le rôle d'un "Poste".

- Pour monter en salaire, l'expérience n'est pas valorisée, et la seule solution et de soit changer de boîte, soit grimper dans la hiérarchie de l'entreprise. Et là, ça devient plus un jeu politique que technique, et les "camas" des "camas" auront toujours l'avantage, ce n'est plus une question de compétence.

- Très vite arrive le "principe de peters", à savoir que l'on arrête de monter lorsque l'on est arriver à un point ou l'on n'est plus compétent. Un bon développeur (pour gagner plus), tente de passer chef de projet, là ou il sera éventuellement médiocre. L'entreprise perd un "bon développeur" et gagne un "mauvais chef de projet". Il suffirait d'augmenter le salaire des "bons développeurs" pour éviter la chose, mais sauf dans une entreprise où le "logiciel" est au coeur du métier, "l'informaticien" ne sera jamais valorisé, c'est juste une "ressource" comme disent les RH, pensant qu'on remplace un "développeur" par un autre "développeur" comme on change une chaise par une autre.

- On complexifie inutilement les "porblèmes a solutionner", mais aussi "la manière dont on les solutionne".

Les méthodes permettent au "superviseur" du projet à avoir des graphiques et des "choses" a montrer à ses supérieurs. Un projet ne profite pas plus d'une méthode que d'une autre.

En fait, la seule chose qui compte pour qu'un projet réussisse, c'est la communication entre les membres de l'équipe, savoir dire "non", savoir expliquer pourquoi ce "non", privilégier le bons sens, et s'en tenir au principe KISS. Il faut également savoir garder les gens là où ils sont le plus utiles à l'entreprise, et donc ne pas privilégier la montée dans la hiérarchie pour la montée en salaire.

Avec le temps, j'en suis arriver à la conclusion qu'il ne faut pas de "méthode", ni de "documentation" (souvent générée automatiquement et pas à jour, un code source clair, limpide et simple vaut 1000x toutes les documentations), mais énormément d'échange et d'intéraction, pour comprendre les problèmes (qui n'en sont peut-être pas). Une fois un problème bien cerné, implémenter une solution limpide et le plus simplement possible.

Perso, je garde à jour un simple document, évolutif, dans lequel se trouve (1) ce que l'on fait, (2) pourquoi on le fait, et (3) comment on l'a fait. Le comment on l'a fait est mixte de "problème/solution" (expliquer le problème, et comment on le résout).

BàV et Peace & Love.
5  0 
Avatar de Fagus
Membre expert https://www.developpez.com
Le 13/08/2024 à 23:19
Citation Envoyé par Ryu2000 Voir le message

Qu'est-ce que c'est une "méthodologie d'ingénierie d'impact" ?
J'ai recherché vite fait et je n'ai rien trouvé.
Apparemment selon ce blog https://http103.medium.com/impact-en...w-c6625d97ccc7 ça vient de ce bouquin https://www.amazon.co.uk/Impact-Engi.../dp/1068605723 . Les critiques disent que c'est du baratin dans une prose à la GPT qui se résume à "écrire les spécifications avant de coder" plus sur des critiques infondées d'agile.

Si ça c'est révolutionnaire (comme le présente l'éditeur), alors il faut relire Jean-Raymond Abrial l'inventeur de la méthode b et ce qu'il pense des cycles classiques de développement. C'est assez drôle. https://www.01net.com/actualites/jea...er-173964.html
1  0 
Avatar de Ryu2000
Membre extrêmement actif https://www.developpez.com
Le 13/08/2024 à 21:41
Citation Envoyé par Mathis Lucas Voir le message
Snyder affirme : « les étudiants en programmation n'apprennent pas les langages de bas niveau ni comment interagir avec le code machine, mais seulement des langages de haut niveau qui facilitent le développement d'applications, mais qui laissent les ingénieurs sans le contexte nécessaire pour comprendre comment leurs pièces du puzzle s'intègrent dans un ensemble plus vaste et largement interconnecté ». À ce propos, Marlinspike a fait valoir que les chercheurs en cybersécurité, qui sondent régulièrement les abstractions de surface, sont mieux placés pour stimuler l'innovation dans le développement de logiciels.
Ce n'est pas vrai, j'ai eu des cours sur les langages bas niveau lors de mon master informatique.
Mais d'un autre côté c'est vrai que je ne me rappelle pas de grand chose.

Citation Envoyé par Mathis Lucas Voir le message
L'étude démontre que les taux d'échec des projets de logiciels Agile peuvent être divisés par 6,5 en utilisant une nouvelle méthodologie d'ingénierie d'impact. Pourtant, de nombreuses équipes d'ingénierie se tournent systématiquement vers les méthodes Agile.
Qu'est-ce que c'est une "méthodologie d'ingénierie d'impact" ?
J'ai recherché vite fait et je n'ai rien trouvé.

Citation Envoyé par Mathis Lucas Voir le message
Le développement agile de logiciel est un état d'esprit qui découle des valeurs convenues par l'Agile Alliance, un groupe de 17 praticiens du logiciel, en 2001. Comme l'indique leur Manifeste pour le développement agile de logiciels, les praticiens accordent de l'importance aux valeurs suivantes : les individus et les interactions plutôt que les processus et les outils, un logiciel fonctionnel plutôt qu'une documentation exhaustive, la collaboration avec les clients plutôt que la négociation de contrats, la réaction au changement plutôt que le suivi d'un plan. Mais pour beaucoup de critiques, l'approche Agile ne marche pas.
L'approche agile peut fonctionner pour plein de projets.

La collaboration avec les clients, un logiciel fonctionnel, la réaction au changement, je trouve ça plutôt cool.
En tout cas c'est adapté à ce que je fais, puisque je corrige ou j'ajoute des fonctionnalités dans des logiciels existants. Donc il y a des réunions régulières, parfois un client dit "dans ce scénario nous n'obtenons pas le résultat attendu" ou "nous avons besoin d'une nouvelle fonctionnalité" et lors de la réunion suivante on montre la progression au client. (quand ce sont des petites modifications il y a une livraison avant la réunion suivante)

====
Au moins les méthodes agiles ne sont pas le cycle en V, je n'aime pas le cycle en V.
1  1 
Avatar de Nagasaki79
Nouveau Candidat au Club https://www.developpez.com
Le 14/08/2024 à 10:39
Je suis développeur senior dans tous les languages, et depuis qu'on a adopté la méthode agile c'est clairement la cata. J'ai toujours l'impression d'avoir la tête dans le guidon. Les sprint ne correspondent a rien, ça n'a aucun sens en terme de développement. Cette méthode a ete inventé par des javaistes, qui sont pour la plupart incompetent. Ils ont donc pondu une méthode d'incompetent. Le pire c'est que par l'intermédiaire des scrum ils propagent leur idée comme une religion. Tant qu'il y aura des pigeons pour payer cette méthode prolifera comme un poison.
2  2 
Avatar de Ryu2000
Membre extrêmement actif https://www.developpez.com
Le 14/08/2024 à 17:37
Citation Envoyé par Nagasaki79 Voir le message
Les sprint ne correspondent a rien, ça n'a aucun sens en terme de développement.
Il existe des méthodes agiles qui ne reposent pas sur des sprints. (Kanban, Extreme Programming, Lean Software Development, Continuous Delivery/Continuous Integration)
Les sprints c'est un truc important dans SCRUM.
Il y a des itérations en Extreme Programming mais l'accent n'est pas mis la dessus.

En utilisant une méthode agile pour gérer un projet on peut répondre rapidement aux besoin du client.
Le client arrive, il dit "je veux cette fonctionnalité", les développeurs implémentent ce que la client à demandé, lors de la réunion suivante les développeurs montrent la fonctionnalité au client "Voilà exactement ce que vous avez demandé" et le client "Ah ben finalement ce n'était pas qu'il me fallait, j'ai mal exprimé mon besoin".
Donc c'est cool parce que le client voit rapidement ce qu'il demande, le projet peut ainsi répondre correctement aux besoins réels du client.
1  1 
Avatar de postb99
Membre du Club https://www.developpez.com
Le 15/08/2024 à 10:26
Là où je me retrouve quelque part dans le contexte de cet article, tout en n'étant pas d'accord avec l'opinion défavorable d'Agile de l'auteur : pour réussir, il faut décloisonner, si on a par exemple une API dans Azure et un middleware de messages vers d'autres applications, il faut un minimum de connaissance technique partagée pour réussir plus efficacement l'analyse de la résolution de problèmes qui concernent les deux éléments. Et là, l'article postule que l'équipe chargée de la sécurité a accès à tout, mais l'équipe de l'API et celle du middleware seraient chacune dans sa boîte noire... C'est de là que viennent les frustrations, si les gens ne savent plus communiquer, ne font plus l'effort de communiquer et ne s'intéressent plus à ce qu'il y a à la marge des autres boîtes noires.

En tant que dév senior dans le domaine .NET, je suis intéressée par beaucoup de choses qui gravitent autour de mes projets Agile, aussi bien fonctionnel que technique, et franchement je suis très satisfaite de la façon dont nous utilisons efficacement l'agilité, nous ne ressentons pas de lourdeur inutile, nous respections les sprints, ceux en amont sont rassurés par les delivery boards qui planifient plusieurs sprints à l'avance et mettent en avant les dépendances. On a attendu des années avant d'être efficaces sur ce dernier point mais c'est parce qu'on a changé de scrum master qu'ils ont enfin réussi à mettre en place certaines choses désirées depuis longtemps, en trouvant comment utiliser les outils.
0  0