Cela dépend du projet, si vous travaillez seul sur un petit projet, il peut être parfaitement logique d'effectuer vos recherches et enquêtes technologiques dans le cadre du développement. Et bien que ne faisant pas partie d'Agile, bien sûr, une méthodologie Agile pourrait être utilisée pour ajouter un certain contrôle à cela. Cependant, cela rend le processus très difficile à prédire / ou la boîte de temps. Cela pourrait aller bien, encore plus rapidement, si vous travaillez seul sur un petit projet qui vous appartient entièrement, laissez vos exigences évoluer au fur et à mesure que vous les apprenez. Utilisez de bons principes en cours de route et soyez cohérent et vous ne devriez pas avoir à refactoriser autant.
Au travail, nous utilisons Kanban, Scrum et des approches plus traditionnelles en cascade. Cela dépend du projet, je trouve que les développements complexes avec des exigences initiales bien définies ne sont pas les mieux adaptés à l'agilité, cependant, beaucoup seront en désaccord.
Avant de commencer à travailler même sur un projet agile (tout sauf le plus simple qui soit), nous créons de la documentation. Nous avons une maquette (si elle est axée sur l'interface utilisateur), un ensemble d'exigences et une spécification fonctionnelle.
Le développement sera invité à créer la spécification technique à partir de la spécification fonctionnelle, et au cours de ce processus, nous spécifierons la technologie et effectuerons les recherches initiales dont nous avons besoin. Ce processus me semble si important, car il donne l'occasion de voir les lacunes dans les exigences / spécifications fonctionnelles - et donne les grandes décisions technologiques à l'avance aux personnes ayant l'expérience et les connaissances du système pour prendre de telles décisions.
L'important, cependant, est que la spécification fonctionnelle pourrait être une liste de puces, et la spécification technique sera généralement un modèle, avec des puces et des orientations technologiques, peut-être seulement 3 ou 4 pages dans certains cas.
Même lors de l'exécution d'un projet agile, nous créons de la documentation:
- Toute documentation a un coût.
- Se développer contre des exigences de haut niveau mobiles et mal définies a un coût.
- L'équilibre correct avec ce qui précède dépend de votre projet, de la culture et des personnes.
- Nous documentons Juste à temps, les documents sont périmés.
- Nous documentons à peine assez / juste assez.
- Nous ne conservons ni ne mettons à jour ces documents, nous n'y mettons pas beaucoup d'efforts. Ils sont petits. Nous comptons les jeter.
- Nous résolvons les grandes inconnues telles que les décisions technologiques, les exigences floues et l'architecture dès le départ.
- Nous savons ce que nous développons avant de commencer.
- Nous faisons confiance aux développeurs pour prendre des décisions éclairées concernant la documentation et discuter de tout problème.
- Nous privilégions la communication à la documentation, en tant que telle, nous attendons de toutes les personnes impliquées qu'elles communiquent souvent.
- Nous documentons les systèmes (aperçu) après le développement, pas pendant, pas avant.
Vous voyez, il y a une petite cascade dans notre processus agile.
Si vous travaillez seul, créez un modèle initial (diagramme!) Et jouez avec et choisissez la technologie, puis lorsque vous avez ce concept des exigences de haut niveau, poursuivez et développez de manière itérative agile, mais considérez les bons principes et cohérence au fur et à mesure et vous devrez refacturer moins, plus refondre au fur et à mesure.
Mais en général, s'il y a un coût réel (pas un passe-temps), sachez ce que vous développez avant d'écrire du code, mais ne perdez pas trop de temps à écrire de la documentation qui deviendra rapidement redondante car vous changerez d'avis, et devriez changez d'avis pendant le développement à mesure que vous devenez mieux informé. Et votre projet pourrait changer de cap énormément, mais partir d'une bonne base bien définie.