logo

Qu’est-ce que le principe YAGNI (Vous n’en aurez pas besoin) ?

YAGNI représente Vous n’en aurez pas besoin. Il s'agit d'un principe du développement logiciel qui suggère que les développeurs ne doivent implémenter que les fonctionnalités nécessaires aux exigences actuelles et n'ajouter aucune fonctionnalité supplémentaire qui pourrait être nécessaire à l'avenir. Ce principe repose sur l’idée selon laquelle l’ajout de fonctionnalités inutiles peut entraîner une complexité accrue, des temps de développement plus longs et potentiellement davantage de bugs.

Le principe YAGNI est étroitement lié au BAISER principe (Keep It Simple, Stupid), qui préconise la simplicité de la conception et évite toute complexité inutile. Ces deux principes encouragent les développeurs à se concentrer sur la fourniture de la solution la plus simple répondant aux exigences actuelles, plutôt que d’essayer d’anticiper et de répondre aux besoins futurs potentiels.



Qu'est-ce que le directeur de YAGNI

Table des matières

Qu’est-ce que YAGNI ?

YAGNI est un principe qui encourage les développeurs à éviter d'ajouter des fonctionnalités à un système jusqu'à ce qu'elles soient explicitement requises. Il repose sur le principe selon lequel l’ajout de fonctionnalités inutiles peut entraîner une complexité accrue, des temps de développement plus longs et potentiellement davantage de bogues. Au lieu de cela, les développeurs doivent se concentrer sur la fourniture de la solution la plus simple qui répond aux exigences actuelles.



YAGNI est dérivé de la programmation extrême .

Pourquoi un développeur devrait suivre le principe YAGNI ?

Le développeur doit suivre les principes YAGNI pour les raisons suivantes :

  • Coût de construction : Le coût de création correspond au temps, aux efforts et aux ressources consacrés à la création d'une fonctionnalité ou d'une solution. Il comprend tout, de la planification et du codage aux tests. Si vous construisez quelque chose qui s’avère inutile, le coût de construction représente l’investissement que vous avez réalisé pour le créer.
  • Coût du retard : Le coût du retard est l’opportunité manquée ou l’impact économique de la non-livraison rapide d’une fonctionnalité ou d’une solution. Si vous consacrez du temps à des fonctionnalités moins critiques, vous risquez de retarder la mise en œuvre de fonctionnalités plus importantes. Ce retard peut entraîner des opportunités manquées de revenus ou d’autres avantages.
  • Coût de transport : Le coût de portage correspond à la difficulté continue et au travail supplémentaire causés par la présence d'une fonctionnalité particulière dans votre logiciel. Lorsqu'une fonctionnalité ajoute de la complexité, elle peut rendre plus difficile le travail sur d'autres parties du logiciel, ce qui entraîne du temps et des efforts supplémentaires. C’est comme porter un poids supplémentaire tout en essayant d’avancer.
  • Coût de réparation : Le coût de réparation, également appelé dette technique, est le coût permanent associé à la correction d'erreurs, de bugs ou de mauvais choix effectués lors du développement d'une fonctionnalité. Si vous construisez quelque chose qui nécessite des ajustements plus tard, résoudre ces problèmes nécessite du temps et des ressources supplémentaires, un peu comme rembourser une dette.

Pourquoi le développeur devrait suivre le directeur de YAGNI



tri à bulles python

Pourquoi YAGNI est-il important ?

YAGNI est important car il permet de maintenir le développement de logiciels ciblé et efficace. En implémentant uniquement les fonctionnalités nécessaires, les développeurs peuvent éviter de perdre du temps et des ressources sur des fonctionnalités inutiles. Cela peut conduire à des temps de développement plus rapides, à une complexité réduite et à une base de code plus maintenable.

L'idée derrière YAGNI

Utiliser YAGNI en tant que développeur, c'est comme avoir un guide pratique pour garder votre travail concentré et efficace.

Directeur YAGNI pour les développeurs

1. Obtenez les exigences nécessaires

Toutes les choses dont votre projet a besoin et triez-les en éléments indispensables et peuvent attendre. Cela vous aide à savoir exactement sur quoi travailler. Que vous l'écriviez sur papier ou que vous la tapiez sur un écran, avoir une liste vous permet de rester organisé.

nombres a b c

2. Discutez avec votre équipe

Après cela, il est temps de discuter avec votre équipe. Partagez vos projets et vos objectifs avec eux. Cela garantit que tout le monde est sur la même longueur d’onde et comprend ce qui doit être fait. C’est comme être capitaine d’équipe et s’assurer que tout le monde joue au même jeu.

3. Analyser un plan simple pour la solution

Désormais, lorsqu’il s’agit de planifier le travail proprement dit, restez simple. Décomposez vos grands objectifs en tâches plus petites. Cela vous aide à éviter de vous laisser submerger et garantit que vous vous concentrez sur ce qui compte vraiment. Pensez-y comme si vous construisiez une feuille de route étape par étape pour votre projet.

4. Refusez si cela ne convient pas à la solution

Parfois, votre équipe peut proposer de nouvelles idées ou vouloir ajouter des éléments supplémentaires. Même si ces idées peuvent être intéressantes, vous devez être prêt à dire non à moins qu’il ne s’agisse d’une infime amélioration. Dire non peut être difficile, mais cela vous évite de dérailler et de manquer les délais.

5. Gardez une trace de vos progrès

Gardez une trace de ce que vous avez fait. C’est comme compter les points dans un match. Cela vous aide à voir jusqu’où vous êtes arrivé et si vous allez dans la bonne direction. Les outils qui vous aident à gérer ce processus sont comme des tableaux de bord pour les développeurs, les aidant à rester sur la bonne voie et à fournir ce dont les clients ont réellement besoin.

YAGNI vs autres principes

YAGNI (You Aren’t Gonna Need It) est un principe de développement logiciel qui déconseille d’ajouter des fonctionnalités jusqu’à ce que cela soit nécessaire. Il contraste avec d’autres principes de plusieurs manières :

  1. KISS (Gardez les choses simples, stupides) : KISS est un principe qui prône la simplicité de la conception et évite toute complexité inutile. YAGNI complète KISS en déconseillant l'ajout de fonctionnalités inutiles, ce qui peut entraîner une complexité accrue.
  2. SEC (ne vous répétez pas) : DRY est un principe qui prône la réutilisation du code et évite la duplication. Alors que DRY se concentre sur l'élimination du code redondant, YAGNI s'efforce d'éviter les fonctionnalités inutiles.
  3. SOLIDE : SOLID est un ensemble de principes de conception orientée objet qui favorisent un code modulaire, maintenable et évolutif. Alors que les principes SOLID se concentrent sur la conception et l'architecture du code, YAGNI se concentre sur la fonctionnalité du code.
  4. TDD (développement piloté par les tests) : TDD est un processus de développement qui implique l'écriture de tests avant d'écrire le code. TDD se concentre sur l'écriture de tests pour piloter le processus de développement, tandis que YAGNI s'efforce d'éviter les fonctionnalités inutiles.
  5. Agile : Agile est un ensemble de principes et de pratiques pour le développement de logiciels qui mettent l'accent sur la collaboration, la flexibilité et les commentaires des clients. YAGNI peut être considéré comme un principe Agile, car il encourage les développeurs à se concentrer d'abord sur la fourniture des fonctionnalités les plus importantes et à s'adapter aux exigences changeantes.

Voici une comparaison de YAGNI avec d'autres principes de développement logiciel basée sur les aspects de YAGNI et comment d'autres principes les résolvent :

Aspect de YAGNI Comment d'autres principes le résolvent Comment YAGNI le résout
Simplicité D'autres principes, tels que KISS (Keep It Simple, Stupid), préconisent également la simplicité de la conception et évitent toute complexité inutile. YAGNI complète KISS en déconseillant l'ajout de fonctionnalités inutiles, ce qui peut entraîner une complexité accrue.
Efficacité D'autres principes, tels que le développement logiciel Agile et Lean, mettent l'accent sur la fourniture de valeur au client et l'élimination du gaspillage. YAGNI se concentre sur la fourniture de la solution la plus simple qui répond aux exigences actuelles, ce qui peut conduire à des cycles de développement plus rapides et à une utilisation plus efficace des ressources.
La flexibilité D'autres principes, tels qu'Agile et Scrum, mettent l'accent sur la collaboration, la flexibilité et l'adaptation aux exigences changeantes. YAGNI encourage les développeurs à se concentrer d'abord sur la fourniture des fonctionnalités les plus importantes et à s'adapter aux exigences changeantes.
Réduction de risque D'autres principes, tels que le développement piloté par les tests (TDD) et l'intégration continue (CI), se concentrent sur la fourniture d'un code de haute qualité répondant aux exigences actuelles. YAGNI déconseille d'ajouter des fonctionnalités inutiles, ce qui peut réduire le risque d'introduction de bogues et d'autres problèmes dans la base de code.
Focus utilisateur D'autres principes, tels que le développement logiciel Agile et Lean, se concentrent sur la création de valeur pour le client. YAGNI permet de se concentrer sur la fourniture des fonctionnalités les plus importantes en premier, ce qui peut garantir que le logiciel répond aux besoins et aux attentes de l'utilisateur.
Économies de coûts D'autres principes, tels que le développement logiciel Agile et Lean, se concentrent sur l'élimination du gaspillage et la création de valeur pour le client. YAGNI peut générer des économies en évitant les fonctionnalités inutiles et en se concentrant d'abord sur la fourniture des fonctionnalités les plus importantes.
Maintenabilité D'autres principes, tels que SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), se concentrent sur la conception et l'architecture du code. YAGNI aide à garder la base de code simple et ciblée, la rendant plus facile à comprendre et à maintenir.

Dans l'ensemble, YAGNI complète d'autres principes de développement logiciel en se concentrant sur la fourniture de la solution la plus simple qui répond aux exigences actuelles et en évitant les fonctionnalités inutiles.

Exemples de YAGNI

Voici quelques exemples de la façon dont YAGNI peut être appliqué :

  1. Évitement du fluage des fonctionnalités : Une équipe de développement travaille sur une application web. Ils prévoient initialement d'inclure une fonctionnalité permettant aux utilisateurs de créer et de partager des avatars personnalisés. Cependant, après avoir examiné le temps et les ressources nécessaires à la mise en œuvre de cette fonctionnalité, ils décident de la reporter jusqu'à ce qu'ils reçoivent des commentaires des utilisateurs indiquant qu'elle est nécessaire.
  2. Réduction de la complexité : Un développeur travaille sur une application mobile qui permet aux utilisateurs de suivre leurs programmes d'exercices. Dans un premier temps, ils prévoient d’inclure une fonctionnalité qui génère automatiquement des plans d’entraînement personnalisés en fonction des objectifs de remise en forme de l’utilisateur. Cependant, après avoir examiné la complexité de la mise en œuvre de cette fonctionnalité et l’impact potentiel sur les performances de l’application, ils décident de s’en tenir à une approche plus simple qui permet aux utilisateurs de créer manuellement leurs propres plans d’entraînement.
  3. Allocation des ressources : Une équipe de développement travaille sur une plateforme e-commerce. Ils prévoient initialement d'inclure une fonctionnalité permettant aux utilisateurs de créer des listes de souhaits et de les partager avec des amis. Cependant, après avoir pris en compte le temps et les ressources limités disponibles pour le projet, ils décident de se concentrer sur d’autres fonctionnalités plus essentielles au succès de la plateforme.
  4. Gestion de la portée : Une équipe de développement travaille sur un projet logiciel pour un client. Le client demande dans un premier temps plusieurs fonctionnalités supplémentaires qu’il estime nécessaires à la réussite du projet. Cependant, après avoir examiné le budget et le calendrier du projet, l’équipe de développement décide de limiter la portée du projet pour n’inclure que les fonctionnalités les plus critiques.
  5. Développement basé sur les commentaires : Une équipe de développement travaille sur un nouveau produit logiciel. Ils prévoient initialement d’inclure une fonctionnalité permettant aux utilisateurs de fournir des commentaires sur les performances du produit. Cependant, après avoir examiné l’impact potentiel sur la convivialité du produit et le temps nécessaire à la mise en œuvre de cette fonctionnalité, ils décident de la reporter jusqu’à ce qu’ils reçoivent des commentaires des utilisateurs indiquant que cela est nécessaire.

Avantages de YAGNI

Les avantages de YAGNI (You Aren’t Gonna Need It) dans le développement de logiciels sont nombreux et peuvent avoir un impact significatif sur le processus de développement, la qualité du produit final et la réussite globale du projet. Voici quelques-uns des principaux avantages :

  • Développement plus rapide : En se concentrant uniquement sur ce qui est nécessaire pour le moment, les développeurs peuvent éviter de perdre du temps sur des fonctionnalités qui pourraient ne jamais être utilisées. Cela peut conduire à des cycles de développement plus rapides et à une utilisation plus efficace des ressources.
  • Simplicité : Les fonctionnalités inutiles peuvent ajouter de la complexité à la base de code, la rendant plus difficile à maintenir et à comprendre. YAGNI aide à garder la base de code simple et ciblée, ce qui facilite le travail des développeurs.
  • La flexibilité : En évitant les fonctionnalités inutiles, les développeurs peuvent garder la base de code flexible et adaptable au changement. Cela peut être particulièrement important dans des environnements en évolution rapide où les exigences peuvent changer fréquemment.
  • Risque réduit : Des fonctionnalités inutiles peuvent introduire des bugs et d’autres problèmes dans la base de code. En évitant ces fonctionnalités, les développeurs peuvent réduire le risque d'introduire des bogues et d'autres problèmes dans la base de code.
  • Focus utilisateur : YAGNI aide à rester concentré sur la fourniture de valeur à l'utilisateur final. En implémentant uniquement les fonctionnalités nécessaires à l'utilisateur, les développeurs peuvent garantir que le logiciel répond aux besoins et aux attentes de l'utilisateur.
  • Économies de coûts : En évitant les fonctionnalités inutiles, les développeurs peuvent économiser du temps et des ressources qui seraient autrement consacrés à la mise en œuvre et à la maintenance de ces fonctionnalités. Cela peut entraîner des économies de coûts pour l’organisation.
  • Maintenabilité améliorée : Une base de code plus simple est plus facile à comprendre et à maintenir, ce qui permet aux développeurs d'apporter plus facilement des modifications et de corriger des bogues.
  • Meilleure expérience utilisateur : En se concentrant d'abord sur la fourniture des fonctionnalités les plus importantes, les développeurs peuvent garantir que les utilisateurs obtiennent plus rapidement les fonctionnalités dont ils ont besoin, ce qui conduit à une meilleure expérience utilisateur globale.

Conclusion

Le principe YAGNI peut être utile dans divers aspects du développement logiciel. Il favorise la simplicité, réduit la complexité inutile et aide les équipes à se concentrer sur la fourniture des fonctionnalités essentielles. En envisageant YAGNI, les développeurs peuvent améliorer la productivité, la maintenabilité et la réussite globale du projet. Cependant, il est important de faire un équilibre et de ne pas interpréter YAGNI comme une excuse pour négliger les considérations prospectives ou architecturales.

FAQ de YAGNI

T1. Quelles sont les critiques à l’encontre de YAGNI ?

Certaines personnes disent que YAGNI a un inconvénient. Ils soutiennent que si vous pensez uniquement à ce dont vous avez besoin maintenant et ignorez les besoins futurs potentiels, vous pourriez devoir refaire une grande partie de votre travail plus tard lorsque de nouvelles exigences apparaîtront.

Q2. Quelles sont les règles YAGNI ?

Vous n’en aurez pas besoin. YAGNI est un principe de développement logiciel dérivé de la programmation extrême (XP) qui stipule que le programmeur ne doit pas ajouter de fonctionnalités supplémentaires tant que cela n'est pas nécessaire.

méthodes de liste de tableaux

Q3. Quels sont les arguments en faveur du principe YAGNI ?

Une dérive des fonctionnalités est évitée, ce qui signifie qu'un développeur n'utilisera pas des fonctionnalités qui ne seront guère utilisées à l'avenir.

Q4. Quelle est la différence entre SOLIDE et YAGNI ?

SOLID s'attend à ce que vous ayez une idée, même si ce n'est qu'une petite idée, de la façon dont le code pourrait changer à l'avenir, en particulier avec le principe de responsabilité unique (SRP). C’est comme espérer pouvoir prédire certaines choses. D’un autre côté, YAGNI suppose que la plupart du temps, vous ne savez pas où va le code dans le futur. C’est comme douter un peu de notre capacité à prédire.