Ne peut pas comprendre un certain point dans les principes du Manifeste Agile

24

Je lisais les principes du Manifeste Agile . Tout semble clair et raisonnable sauf un point:

La simplicité - l'art de maximiser la quantité de travail non effectuée - est essentielle.

Je ne comprends pas ça. Est-ce à dire que le travail qui n'a pas été fait doit être exagéré? Si c'est le cas, cela n'a pas vraiment de sens.

superM
la source
2
+1 pour contrer le vote négatif - vous avez ici une question étonnamment intéressante.
1
Voir également Wu Wei et imaginer comment il peut être appliqué au développement de logiciels en général. C'est la progression naturelle de la philosophie exprimée dans votre question.

Réponses:

30

Supprimez le commentaire entre parenthèses. Reste «la simplicité est essentielle», qui est d'ailleurs une application du principe à son expression même.

La simplicité est essentielle, car vous avez distillé ce dont vous avez vraiment besoin, supprimant ce qui alourdit la tâche à accomplir, moins élégante: complexe.

J'ai toujours interprété dans le sens de la concision de Pascal : " J'aurais écrit une lettre plus courte, mais je n'ai pas eu le temps. " Il faut éviter ce qui n'est pas annulé (de la lettre, du code) et c'est une tâche active et pas facile. Ce n'est pas quelque chose qui se produit tout seul.

Francesco
la source
35

L'idée est d'éviter de faire un travail qui n'est pas nécessaire, c'est-à-dire "maximiser la quantité de travail non effectué".

Donc, si dans un projet traditionnel vous planifiez et construisez un excellent système de base abstrait pour répondre à tous vos besoins possibles plus tard, il vous suffit de sauter cela et de créer la chose la plus simple qui puisse fonctionner pour les exigences actuelles . Ne construisez pas des choses dont vous n'avez pas besoin.

YAGNI est un concept connexe.

Joachim Sauer
la source
5
Par coïncidence, c'est probablement le principe agile avec lequel je suis le moins d' accord . Poussé à l'extrême, la prévoyance abstraite est ce qui nous sépare des autres animaux ... Je dis que nous devons l'utiliser chaque fois que nous le pouvons. Bien sûr, je sais à quel type d'atrocités le principe doit être une réaction - mais un peu de prévoyance ne fera pas de mal. Parfois, c'est YAGNI, mais j'ai vu certains développeurs si dogmatiques qu'ils n'arrêteront même pas de penser quelques heures à l'avance (et réalisez que la simplicité qu'ils mettent en œuvre maintenant ne suffira même pas en 4 à 8 heures).
Max
2
@Max, je pense qu'il est nécessaire de voir prévoir les futurs changements possibles. C'est là que la prévoyance est d'une grande aide. Et les développeurs que vous décrivez sont plus comme des autruches, qui se cachent dans le sable.
superM
7
Les clients @max ne veulent pas payer pour ce que vous pensez qu'ils pourraient avoir besoin à l'avenir, ils veulent payer pour ce qu'ils ont besoin maintenant le plus tôt possible . Il y a des milliards de $ d'efforts gaspillés chaque mois sur les bonnes intentions de "cela permettra d'économiser tellement de temps plus tard" et que "plus tard" ne vient jamais, mais les choses sont complexes, boguées et tardives à cause de toute cette "prévoyance"
15
@Max: YAGNI consiste à reporter les décisions au dernier moment responsable . Ce dont vous parlez, c'est de reporter la décision au dernier moment possible , ce qui est en fait une mauvaise idée ™. Le fait est que vous n'aurez jamais moins d'informations sur lesquelles baser une décision que vous n'en avez actuellement. Dans le pire des cas, vous aurez les mêmes informations demain. Mais généralement, vous aurez appris quelque chose d'ici là. Dans le cas que vous avez mentionné, vous savez que vous êtes en avoir besoin, donc YAGNI ne s'applique pas seulement. Essayer de l'appliquer est en effet stupide dans ce cas.
Jörg W Mittag
2
@Max: Ce que vous décrivez ici est exactement le contraire de la maximisation de la quantité de travail non effectuée. Il fait deux fois plus de travail.
pdr
5

Nous appelions autrefois ce "placage à l'or". L'exigence d'un marteau est qu'il peut frapper un clou dans un morceau de bois. Il ne fait pas mieux le travail pour être un marteau plaqué or.

Plusieurs fois, un développeur suggérerait d'utiliser un nouveau framework sympa ou d'ajouter des fonctionnalités qui, bien que cool, n'étaient pas nécessaires. Nous noterions cette idée, mais pour cette version, nous ne le ferons pas. Nous maximiserons le travail non effectué. Il est assez difficile de livrer le logiciel à temps, alors ne livrez pas plus de code que vous n'en avez besoin. Si cela doit être fait, il finira par s'inscrire dans le plan et être fait au moment opportun.

Stuart Woodward
la source
4

Cette idée est très similaire à un concept du système de production Toyota (TPS) , qui a conduit au Lean Manufacturing plus générique , puis à l'application de ces techniques au développement de logiciels Lean . Le TPS est largement antérieur au mouvement agile, avec ses racines dans la fabrication à la fin des années 1950.

Le concept de maximisation de la quantité de travail non effectué est similaire à l'élimination des déchets. Dans l'environnement de fabrication, les déchets comprennent des choses comme la surproduction de marchandises, l'attente de ressources, le mouvement inutile de personnes ou de produits, un stock trop important et des produits défectueux. Dans Lean Software Development, ces déchets se sont traduits par des fonctionnalités inutiles, des retards dans le processus de développement, des exigences peu claires qui ralentissent la production de logiciels, un manque de tests et des retards de communication.

L'idée générale des deux concepts est la même - les choses qui n'ajoutent pas de valeur sont du gaspillage et doivent être minimisées. Le but ultime est d'augmenter la qualité tout en réduisant le temps et les coûts de production.

Thomas Owens
la source