D'accord, je l'ai rencontré plusieurs fois, mais voici le pire des cas légèrement exagéré.
Un client dit "hé pouvez-vous nous faire ce petit module pour faire cette petite tâche"?
Moi: "Bien sûr pas de problème".
Donc, en fonction des budgets et des contraintes, etc., je saute une partie de l'architecture et je plonge directement et je ne fais pas de sueur.
Ensuite, ils demandent un autre module. Et un autre. Et quelques améliorations. Et tout cela se passe très lentement, au fil des ans. Et avant de le savoir, vous avez cette application monstre horriblement architecturée.
Que faites-vous quand on vous demande de faire quelque chose de petit? Vous ne savez pas si cela continuera de croître ... si le client continuera à demander des ajouts (et eux non plus).
Vous ne pouvez pas sur-architecturer la chose, car ce n'est qu'une petite application après tout, et ils iront ailleurs si vous dites (en ce que je connais toute la voix) "Eh bien juste au cas où, architecturons cette chose en couches avec top -sécurité en ligne et séparation des préoccupations. En fait, allons-y avec un outil d'injection de dépendances qui rendra vraiment cette chose fantastique bla bla bla ".
Ils diront "ouais bien" et iront voir quelqu'un d'autre.
Le budget, le temps et la perception sont aussi importants que l'architecture de l'application elle-même.
Comment cela devrait-il être abordé?
Je suppose que la question se résume vraiment à "Lorsque vous ne disposez pas de toutes les informations pour le résultat final de ce qui semble être une petite application, comment éviter (ou atténuer) de prendre des décisions architecturales et de conception dès le début qui seront complètement innaproprié plus tard?