Comment le prototypage rapide s'intègre-t-il dans une méthodologie agile?

12

Je travaille pour une grande entreprise, qui dicte l'utilisation de processus agiles. Par exemple, pour nos projets, nous utilisons des services basés sur le cloud qui sont spécifiquement destinés à gérer le développement agile.

Le groupe d'ingénierie spécifique pour lequel je travaille n'a pas traditionnellement développé de logiciel (au lieu de cela, nous aidons à conduire les projets d'un point de vue beaucoup plus aérien), mais cela change. Nous avons un large éventail de projets logiciels à venir / planifiés qui sont principalement axés sur les données - par exemple, nous ferons de la surveillance, de la collecte, de l'agrégation des données et de certains rapports. D'autres tâches impliquent l'automatisation avec du matériel spécialisé et divers types d'architectures client / serveur (à plusieurs niveaux). Je dois aider au processus d'embauche de plusieurs personnes et formuler bon nombre de nos plans pour aller de l'avant.

Ma question est de savoir si le prototypage rapide (code jetable) s'inscrit ou non dans une philosophie agile. Par exemple, j'adore Python et sa large gamme de packages. Je vois la possibilité de mettre en œuvre plusieurs de nos idées très rapidement avec un workflow basé sur Python. Cependant, je pense qu'il y aura beaucoup de perceptions que Python n'est pas "de qualité entreprise", et une grande partie de ce travail devrait être réécrite en Java ou peut-être en C ++.

Cependant, la création des prototypes Python nous donnerait beaucoup pour notre argent en nous permettant de fournir rapidement des résultats réels.

Avez-vous été en mesure d'intégrer un prototypage rapide - espérons-le en Python - dans un flux de travail agile solide dans un environnement d'entreprise?

BobIsNotMyName
la source
3
Écrire du code à jeter est une chose dangereuse à faire. Si cela fonctionne, pourquoi l'entreprise devrait-elle s'en soucier, "jeter". Cela arrive toujours, sauf si vous ne le leur montrez pas. Je ne compromets jamais la qualité de mon code, même lorsque je suis entré dans des hackathons. Je pourrais mettre le hack étrange ici et là - mais rien qui serait "jeter". Lorsque le prototypage se concentre sur les histoires qui font une bonne démo.
Dave Hillier
3
"grande entreprise, qui dicte l'utilisation de l'agile" - le mélange amusant de mots "dicte" et "agile" m'a en quelque sorte rappelé le Manifeste Agile Half-Arsed . Les individus et les interactions plutôt que les processus et les outils ... et nous avons des processus et des outils obligatoires pour contrôler la façon dont ces individus (nous préférons le terme «ressources») interagissent
moucher

Réponses:

11

Le concept de "prototypage", comme prévu dans RAD , est un peu étranger au développement agile. Cela ne signifie pas que cela ne peut pas être fait, mais c'est inhabituel.

Différents cas doivent être explorés:

  1. Le prototype est-il une "coquille vide", une maquette ou une démo, conçue pour donner une idée de l'apparence d'un produit? Vous pouvez certainement le faire avec une ou plusieurs histoires - mais vous construisez quelque chose à partir de votre propre imagination, pas à partir d'un vrai feedback. Les gens n'évaluent pas une démo comme ils évaluent un produit. Par exemple, consultez les commentaires sur notre prototype de barre supérieure par rapport à notre véritable implémentation de barre supérieure .

  2. Le prototype doit-il être construit afin de mieux comprendre l'espace problématique? Ensuite, il doit être couvert comme un pic , et seuls ses résultats doivent être conservés (le code source est transitoire).

  3. Le prototype est-il une version 0.x? Un produit minimum viable ? Utilisez ensuite le processus agile de votre choix. Si vous avez besoin de le reconstruire dans une autre langue, vous serez probablement mieux si vous traitez cela avec un produit différent. Notez que cela est parfois traité comme un moyen de raccourcir l'écriture d'une spécification ("cela devrait faire la même chose que le prototype!"). C'est une très mauvaise façon de documenter un produit, mais cela est probablement mieux expliqué en tant que question et réponse distinctes :-)

Sklivvz
la source
Je pense que c'est la pire réponse à ce jour, j'ai du mal à comprendre d'où viennent tous ces votes positifs. Le prototypage pour obtenir une rétroaction précoce n'est pas inhabituel, il est originaire du développement agile.
Martin Maat
@MartinMaat Par "prototype", vous entendez "une première version du produit livré au client qui évolue progressivement dans le produit de manière itérative"? Dans ce cas, bien sûr, vous avez raison, c'est lié au fonctionnement agile et les trois points que j'explique expliquent exactement comment. Ce n'est pas ce que les gens entendent par ce mot.
Sklivvz
8

Le prototypage rapide (ie développement itératif et incrémentiel) n'est-il pas en quelque sorte tout l'intérêt d'Agile?

Il semble que vous ayez des problèmes avec «la perception est la réalité» dans votre organisation. Vous voudrez peut-être rappeler à tout le monde qu'Agile ne signifie pas «jeter tous les plans», pas plus que le développement piloté par les tests ne signifie «jeter toute l'architecture».

Et Python n'est pas (s'il l'a jamais été) un langage jouet. La NASA et ses sous-traitants utilisent Python , et si c'est assez bon pour eux, c'est assez bon pour moi.

Robert Harvey
la source
D'accord, Python n'est pas un langage jouet ... Cependant, de nombreuses organisations de mon entreprise utilisent Java de manière intensive, et nous devrons interagir avec leur code, et c'est pourquoi nous devons faire appel à des personnes ayant une solide expérience Java. . De plus, ce n'est pas tant la perception des gens qui comprennent les logiciels qui est préoccupante - c'est la perception de ceux qui ne le comprennent pas. Ce sont ces gens qui veulent un nom qu'ils ont entendu auparavant, et ce nom est "Java" ... J'aimerais que nous construisions une équipe dédiée à Python en tant que langage principal, mais ce sera difficile.
BobIsNotMyName
1
Même si vous prototypez en Python et réécrivez une partie ou la totalité en Java, ce n'est pas nécessairement une mauvaise chose (python n'a pas le profil de performance dont certaines applications ont besoin). Avoir "entendu" parler une langue n'est pas exactement une approbation retentissante. Étant donné le choix, je choisirais personnellement un autre langage que Java, mais d'autres forces dictent souvent le choix du langage.
Robert Harvey,
@Robert Harvey: "Le prototypage rapide (c'est-à-dire le développement itératif et incrémentiel) n'est-il pas en quelque sorte tout l'intérêt d'Agile?": Pour autant que je comprends, le prototypage rapide signifie faire un prototype rapide et jetable et, après le client l'a approuvé, pour construire un vrai produit (avec une bonne conception, etc.). En agile, vous avez un compromis entre les deux: vous avez toujours un prototype qui est techniquement "assez bon" (probablement pas aussi bon qu'un système qui a été conçu d'avance, mais assez bon pour la production) afin qu'il puisse être livré en tant que produit dès que le client en est satisfait.
Giorgio
1
@Giorgio: C'est bien, mais les clients ne savent pas ce qu'ils veulent jusqu'à ce que vous le leur montriez et qu'ils disent "non, ce n'est pas ce que je veux, je le veux . " Que vous le fassiez en code ou sur un morceau de papier ne fait aucune différence pour moi, tant qu'il identifie ce que veut le client.
Robert Harvey
2

Il y a une pratique assez stable dans Extreme Programing appelée Spike . Cela signifie que c'est du code jetable. Il n'y a rien de spécial là-dedans. C'est juste un Sprint dans lequel le résultat attendu est la connaissance du code jetable.

Le lien ci-dessus contient suffisamment d'informations sur les bonnes pratiques, les pièges des pics.

Votre cas d'utilisation spécifique semble un bon exemple: il peut être utile de concevoir l'interface, de valider l'utilitaire et de le montrer à certains utilisateurs.

Borjab
la source
1

Vous allez jeter le code et ne pas le mettre en production (le rendre parfaitement clair pour TOUS), donc être agile ou non n'a pas vraiment d'importance. Toutes les pratiques agiles sont purement facultatives pour les prototypes: sprints, burn-down, tests, programmation par paires ou tout ce que vous prévoyez d'utiliser.

Si vous allez principalement construire des modèles fonctionnels en Python pour aider les propriétaires de produits et autres décideurs à conceptualiser le projet, vous n'avez pas besoin d'être prêt pour l'entreprise. Cependant, si vous créez une preuve de concept ou essayez de voir si vous pouvez gérer certains niveaux de performance, vous devriez probablement vous en tenir au langage de production. Cela ne signifie pas que vous ne pouvez pas l'essayer en Python.

Quoi qu'il en soit, vous allez jeter le code, mais avez la connaissance de pouvoir faire ce travail avec une meilleure idée de ce que veulent les propriétaires. Vous pouvez maintenant utiliser la méthode que vous souhaitez.

JeffO
la source
1

J'ajouterais que les prototypes sont cruciaux pour l'apprentissage, et aussi dans l'esprit Agile. Si le prototype vous permet d'apprendre, en particulier dans des cycles de rétroaction plus rapides, alors allez-y. Il s'agit de maximiser l'apprentissage et de partager les apprentissages avec l'équipe.

Mélisse
la source
0

En termes d'apprentissage, j'ajouterais que le prototypage vous permet d'apprendre plus rapidement. De cette façon, vous pouvez valider si les gens se soucient même du problème que vous essayez de résoudre - et si la solution que vous avez en tête est celle qu'ils recherchent - sans perdre beaucoup de temps à créer une solution complète qui peut , en fin de compte, ne pas résoudre un problème suffisamment douloureux ou ne pas le résoudre de la bonne façon.

Ethan Teng
la source
0

Le véritable esprit d'Agile réside dans l'interaction et la communication. Je dirais que si le prototype fonctionne bien comme outil d'aide à la communication, il n'y a rien de mal à l'utiliser dans le monde Agile. Dans notre équipe (nous pratiquons l'Agile depuis plus de 5 ans) nous l'avons utilisé de temps en temps. Et je peux voir certains avantages

1) Aider à la communication

2) Faites participer les utilisateurs aux entretiens de la solution et obtenez un retour rapide

Caveat:

La communication directe entre UX et les ingénieurs ne doit JAMAIS être remplacée par des artefacts de prototypage. Si possible, le jumelage avec un ingénieur fonctionne bien mieux que la communication via un médiateur (prototype).

Huimin
la source
0

D'autres ont déjà mentionné le but d'apprentissage des pointes. Ce qui manque, c'est le principe agile sous-jacent de celui-ci, c'est l' échec rapide .

L'un des piliers du développement agile est de reconnaître les parties dures et de rechercher des concepts, voir si vous pouvez le faire. La façon classique de travailler à travers toutes les tâches dans un ordre "logique" peut s'avérer très coûteuse si vous constatez que vous ne pouvez pas faire quelque chose tard dans le projet. Tout ce qui a été fait jusqu'à présent pourrait être un gaspillage.

Si cela doit finir ainsi, vous voulez le savoir le plus rapidement possible. Ensuite, les parties prenantes peuvent choisir soit d'arrêter de brûler de l'argent alors qu'il n'y en a pas encore beaucoup et d'accepter ce qu'elles veulent n'est pas possible, soit d'essayer une approche radicalement différente du problème qui aura de nouvelles chances de réussir. Si vos prototypes servent cet objectif, ils sont en effet les plus agiles.

Martin Maat
la source