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 !

Un développeur estime que nous vivons dans l'âge des logiciels ratés
Et l'explique par les antipatterns et pratiques d'aujourd'hui

Le , par Michael Guilloux

62PARTAGES

17  0 
Il arrive souvent de trouver au sein des entreprises des logiciels développés par des ingénieurs censés être compétents, et pourtant qui laissent beaucoup à désirer. D’après un développeur, ce n’est pas parce qu’il manque de développeurs techniquement compétents, mais c’est simplement dû au fait que nous vivons dans l’âge des logiciels ratés, où les entreprises et le management sont ceux qui décident de la qualité des logiciels. En se basant sur du vécu, le développeur a dressé une liste d’anti patterns et mauvaises pratiques dans l’environnement actuel de développement de logiciels, qui conduisent à des logiciels de mauvaise qualité. Il situe le problème au-delà des compétences techniques, et le considère comme résultant de la vision de l’entreprise, du management ou encore la mentalité des développeurs eux-mêmes.

Le premier problème est que les entreprises et le management ont une vision à court terme. Comme l’explique le développeur, le monde des affaires actuel est plein d’incertitudes, ce qui conduit les entreprises à limiter la portée de certaines décisions au court terme. Malheureusement, les entreprises essaient d’appliquer cela également dans le développement de logiciels. « Plus votre logiciel peut être pensé sur le long terme, plus le développement sera robuste, économique et sans douleur », explique-t-il. Mais le management sacrifie l’intégrité de votre système logiciel avec ses prises de décisions « myopes », qui ne voient que le futur proche.

Vous devez être alignés sur le même point de vue que la direction, c’est le plus important. Ensuite, vous devez aider la direction à atteindre ses objectifs pour le prochain trimestre. « Cela signifie que la plupart de votre temps sera consacré à la lutte contre les incendies provoqués lors des trimestres précédents, la chasse aux bugs qui auraient pu être facilement évités ou refactoriser plusieurs morceaux de code indépendants, juste pour mettre en œuvre la prochaine fonctionnalité à problème ».

Si vous êtes architecte de logiciels, construire un système cohérent, compréhensible et bien conçu ne devrait pas être votre priorité. Votre mission sera de satisfaire la vision à court terme du management. Ce qui conduit à négliger une conception viable à long terme pour produire un système qui satisfait les besoins immédiats, tout en compromettant ceux à venir.

Un point mis en avant par le développeur est que vous n’êtes pas payés pour résoudre les problèmes, mais pour les endurer. L’essentiel, c’est qu’avec les codes existants qui sont remplis de bugs, vous puissiez arriver à un semblant de progrès.

Si les entreprises et le management sont myopes, vos collègues sont les seuls pour qui cela n’est pas un problème. « Alors que votre manager ne peut penser au-delà de la prochaine période de reporting, vos collègues ne peuvent probablement pas penser au-delà de la prochaine période de paie », explique-t-il. Tant que l’objectif premier de ces derniers - le salaire - est garanti, ils sont prêts à accepter n’importe quelle décision, et pour eux, le système tourne à merveille, pourquoi devrait-il donc changer ?

Si vos collègues pensent à la prochaine période de paie, il y en a probablement un dans le groupe qui a déjà ajusté ses habitudes de consommation à sa prochaine promotion. Selon le développeur, il s’agit en général de celui qui va remplacer l’architecte ou le lead. Se considérant comme le meilleur du groupe, il ne perd pas son temps dans les discussions inutiles. Il a la meilleure idée, s’il la propose et que vous ne la saisissez pas, tant pis ! « C’est le gars assis en face de vous qui ne se plaint jamais du code, qui ne perd jamais son temps pour nettoyer les choses, et qui est toujours le premier à arrêter la discussion ‘toxique’».

Le développeur regrette également l’introduction de la propriété collective du code. Il s’agit d’un principe de l’eXtreme Programming qui stipule que « chaque développeur doit pouvoir modifier toutes les parties du code si le besoin s'en fait sentir ». Pour lui, il peut être très avantageux que la modification du code soit un droit exclusif à certains développeurs. Il plaint donc la disparition d’un système où seuls les ingénieurs seniors avaient le droit de modification du code. Cela permettait en général de protéger le code contre les visions de court terme et contre « une équipe de management qui n’est pas en mesure de comprendre ou d’en apprendre davantage sur les compromis au jeu de l’ingénierie ». Ce système permettait de garantir également que le logiciel soit développé à un rythme durable avec le minimum de souffrances humaines. Malheureusement, il ne peut plus subsister avec la propriété collective du code.

Une conséquence logique est que le développeur estime que les méthodologies à l’instar de l’Agile sont plutôt des outils de management. Elles ne viennent pas pour aider à créer de meilleurs logiciels, dans la mesure où elles sont facilement détournées par le management.

Source : Medium

Et vous ?

Qu’en pensez-vous ? L’environnement moderne de développement de logiciels est-il moins favorable à la conception de bons logiciels ?

Voir aussi

Forum ALM

Forum Général Développement

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

Avatar de foetus
Expert éminent sénior https://www.developpez.com
Le 13/10/2015 à 17:19
Citation Envoyé par PierreMF Voir le message
Si par contre les gens restent longtemps, c'est qu'ils s'épanouissent dans leur travail.
Par forcément
Une bonne paye, pas trop de pression/ responsabilités, de bons horaires et le tour est joué.

Et si en plus la société a des avantages c'est "la patate de bonheur": CE, café gratuit, ...
12  0 
Avatar de anykeyh
Membre confirmé https://www.developpez.com
Le 13/10/2015 à 17:53
[truestory]
- Bonjour, je voudrais un logiciel pour ma société
- Ok, parlons-en, quels sont vos problèmes et vos besoins?
- Non, mais je veux un devis et des délais avant toute choses, afin de savoir combien ça va me coûter
- Euh...

ou encore

- Faites un effort! excel ne coûte que 50 euros par poste et vous me demandez [X dizaine de milliers d'euros] pour un ERP-QUIFAITOUT!

[/truestory]
12  0 
Avatar de DarkHylian
Membre habitué https://www.developpez.com
Le 13/10/2015 à 16:08
Pour ma part, ça ressemble bien à ce que je vis.
Et je vais me permettre une analogie :
Un excellent musicien perdra plus de temps à retoquer sa partition et sa maitrise de l'instrument pour arriver à produire le son "parfait" qu'il veut atteindre. Les maisons de disques sont juste là pour faire du fric rapidement.

De la même manière, le développement logiciel est un art théorique, et le monde de l'entreprise s'en sert comme d'une simple matière première...

Avec le temps, la vision financière des entreprises s'est malheureusement accrue, et du coup, on essaye de faire en sorte que la matière première devienne un produit fini plus rapidement, et tant pis si la qualité ne le fait tenir que quelques années (voire mois).
C'est pire que l'âge du logiciel raté, c'est l'âge du code poubelle... vive la société de conSOMMATION.
9  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 13/10/2015 à 15:53
Le principal problème c'est plus le temps de dev pour un projet, plus les délais sont serrés plus c'est difficile de faire du bon boulot.
9  1 
Avatar de 4sStylZ
Membre éprouvé https://www.developpez.com
Le 13/10/2015 à 17:51
Le développeur regrette également l’introduction de la propriété collective du code. Il s’agit d’un principe de l’eXtreme Programming qui stipule que « chaque développeur doit pouvoir modifier toutes les parties du code si le besoin s'en fait sentir ». Pour lui, il peut être très avantageux que la modification du code soit un droit exclusif à certains développeurs. Il plaint donc la disparition d’un système où seuls les ingénieurs seniors avaient le droit de modification du code. Cela permettait en général de protéger le code contre les visions de court terme et contre « une équipe de management qui n’est pas en mesure de comprendre ou d’en apprendre davantage sur les compromis au jeu de l’ingénierie ». Ce système permettait de garantir également que le logiciel soit développé à un rythme durable avec le minimum de souffrances humaines. Malheureusement, il ne peut plus subsister avec la propriété collective du code.
Ya que moi que ça remue ce genre de paragraphe?

En synthèse, ce mec prône la rétention d'info et de connaissances. Ça colle pas trop à l'idée de voir à plus long terme tout ça.

J'ai eu quelques fois des «seniors» qui s'accaparait de certains modules dans chaque projet car bon c'est eux qui les avaient conçus donc bon c'est plus facile comme ça parce qu'ils ont l'éxpérience.
Ça donne un super code en dehors de tout standards. Un code pensé par un seul cerveau «de génie» mais qui un jour se barrera élever des chèvres en Bretagne.

L'aboutissement dans cette propriété personnelle du code?*Une équipe remplie de mecs «moyens», des nazes en somme, qui devra ouvrir… TADAA : la boite de Pandore!
8  1 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 13/10/2015 à 22:19
Si les commerciaux arrêtais d'imposer des dates de sorties déjà, on aurais des produits moins buggé a leurs sorties.

Les exemples ne manques pas (les jeux ubisofts et EA), ou pire encore les os comme Windows10: fallait le sortir le 29 Juillet quoiqu'il arrive (je ne critique pas l'os, mais sa date butoirs).

Pour des applications critique comme un OS, une entreprise devrait le sortir uniquement quand il est prêt, comme le fait Debian par exemple.

Aujourd'hui j'ai l'impression que certains développeurs et chef de projets se disent "Au pire on publiera des maj de 2go pour corriger les bugs" (je parle des jeux vidéos avec nos pc est consoles ultra connecté), il y'a 10ans on ne pouvait pas publier de maj sur PS2 donc y'avait pas intérêt de sortir des jeux qui crashait avant même l'écran titre (N'es ce pas Ubisoft...)
Je travail dans l'embarqué et dans mon cas il est impossible de publier des maj, dans ma boite on sort un produit uniquement quand on est sur qu'il marche. On s'imposent pas de dates butoir et fixe. Sa limite déjà énormément le risque de sortir un produit plains de bugs.

Cela dit, il y'a aussi un autre facteurs a prendre en compte, les logiciels se sont aussi énormément complexifié par rapport à avant. On ne peut pas comparé MS DOS et Windows 10 en terme de complexité. Pareil entre un jeu d'arcades de Sega des années 80 et Skyrim, la complexité est incomparable. Plus un programme est complexe plus y'a de risque de bugs. On invente des techniques (les méthodes agiles par exemple, les tests unitaires, l'utilisation de gestionnaire de version comme svn ou git...) pour minimiser ces risques, mais sa reste quand même très compliqué.

J'ai parlé de Windows, mais même avec le kernel linux qui ces énormément complexifié en 20ans, on peut avoir de très mauvaise surprise.
6  0 
Avatar de Luckyluke34
Membre émérite https://www.developpez.com
Le 02/12/2015 à 14:13
Citation Envoyé par Jitou Voir le message
Je regrette par exemple d'avoir à développer des IHM Web en utilisant encore la logique request/response, la plupart des API dites modernes reposent encore largement sur ce principe d'un autre age. Le résultat est l'apport d'une complexité phénoménale dans le développement et la maintenance des applicatifs alors qu'une API orientée composant classique comme dans les années 90 alors à la mode du client/serveur donnerait des résultats bien plus rapide et autrement plus fiable.
Le modèle request/response est donc d'un autre âge et à bannir alors que le client/serveur est une bonne vieille recette simple et fiable ? J'avoue que j'ai du mal à comprendre là
6  0 
Avatar de danardf
Membre du Club https://www.developpez.com
Le 18/10/2015 à 7:26
"Faire vite et bien, ça ne colle pas! Demandez a votre femme.!!"
C'est ce que j'ai dit à mon patron.
Bah il y a un temps de silence après ....forcément. ....puis vient les éclats de rire de vos collègues.
Mais c'est tellement vrai.
5  0 
Avatar de PierreMF
Futur Membre du Club https://www.developpez.com
Le 13/10/2015 à 16:56
Il y a encore quelques sociétés où l'on a encore le goût de l'architecture avant le codage, où les specs existent, où l'on prend le temps d'avoir une vision à plus long terme.

Ce n'est peut-être pas la majorité, mais cela existe, et ce n'est pas si rare que ça. Alors si vous cherchez une mission ou un emploi, prenez le temps lors de l'entretien de vous renseigner sur les méthodes de management et de développement. Vous ne le regretterez pas !

La méthodologie agile est des fois utilisée pour fliquer et presser les développeurs, et correspond parfois à cette courte vue, mais ce n'est pas toujours le cas.

Le taux de turnover de la boîte est un élément important : si les gens ne restent pas longtemps, c'est généralement le cas d'une boîte décrite dans l'article. Si par contre les gens restent longtemps, c'est qu'ils s'épanouissent dans leur travail.

"Soyez le changement que vous voulez voir dans le monde" - Gandhi
4  0 
Avatar de robertolopes
Futur Membre du Club https://www.developpez.com
Le 13/10/2015 à 18:18
Je ne suis pas un dev pro rémunéré pour cela, je ne suis qu'un modeste amateur .
L'article ne tient pas compte d'une donnée importante à prendre en compte, les versions du matériel et des logiciels.
Prenons le PHP par exemple.
Quel code pourra tenir proprement et solidement plusieurs versions d'affilée.
Un projet est fait pour être exécuté dans ses conditions définies et connues.
Les technologies évolues si vite qu'il faut régulièrement s'adapter aux nouvelles exigences des utilisateurs, et avec une réactivité en prime.
C'est aussi cette course aux performances et nouveautés qui ruinent un code.
Donc, à mon humble avis, développer c'est toujours un travail en continu, pas comme une table livrée une bonne fois pour toutes par un menuisier. A l'échelle informatique dix ans, c'est la préhistoire presque.
Quel code pourra tourner plusieurs années, voire mois sans être bidouillé à chaque changement ou désir du client.
Aujourd'hui, tout doit être responsive, et avoir son application mobile, c'est ainsi, donc forcément on s'adapte jusqu'au jour où le maintien d'un vieux code coûte plus que si on refaisait tout ou une grosse partie.
Mais au final, le dev fera avec ce qu'on lui donne (temps, matériel, etc).
Il n'y a pas de miracles.
4  0