À un moment donné, un programme est en développement. Des fonctionnalités sont ajoutées, supprimées ou modifiées tout le temps. Chaque version n'est qu'un prototype. Je ne perds donc pas beaucoup de temps à écrire du code super propre à ce stade, car je ne sais jamais combien de temps dure quelque chose. Bien sûr, j'essaie de maintenir la qualité du code selon certaines normes, mais le temps est toujours un problème.
Vient ensuite le moment où le programme est terminé et que le ou les décisionnaires disent "c'est tout". J'ai un prototype fonctionnel à ce stade, mais le code qu'il contient est un peu compliqué à cause de tout le va et vient pendant la phase de développement. Je suis censé commencer les tests / le débogage final, mais mon instinct me dit que je devrais maintenant nettoyer ou réécrire des éléments pour lui donner une architecture appropriée qui facilite la maintenance, etc.
Une fois que les éléments ont été testés et approuvés, il n’a aucun sens de les réécrire. Je me tiens régulièrement sur place avec un prototype «fini» en état de fonctionnement et je reçois un bogue lors des tests et je vois que cela résulte d'un codage non intelligent, résultat de tout le processus de développement. Je suis en train de tester et le correctif serait une réécriture ... c'est un gâchis!
Il y a de meilleures façons / manuel, j'en suis sûr. Mais je dois travailler dans un environnement de travail réel où tout n'est pas manuel.
Alors, comment puis-je passer mon prototype de travail à une version finale avec une base de code stable? Peut-être que je ne devrais pas considérer le développement comme terminé une fois que je l'ai fait et le considérer comme une phase de nettoyage ... Je ne sais pas, j'ai besoin d'aide ici.
MODIFIER
Je veux clarifier quelques points.
Je suis à 100% du côté de le faire juste avant et pas après, un code propre et lisible. Mais je dois aussi faire avancer les choses et je ne peux pas rêver de la beauté d'un code propre et brillant. Je dois trouver un compromis.
souvent, une nouvelle fonctionnalité est vraiment juste quelque chose que nous voulons essayer et voir s'il est logique de mettre en œuvre une telle chose. (en particulier dans les applications mobiles, pour obtenir une apparence réelle sur un appareil réel) C'est donc quelque chose de petit qui (à mon humble avis) ne justifie pas trop de travail dans une première itération "voyons voir". Cependant parfois la question se pose QUAND dois-je payer ce tech.debt? C'est ce que cette question est tout au sujet.
Si je sais que la moitié des fonctionnalités seront supprimées un jour plus tard (assez d’expérience dans notre société à ce jour), j’ai vraiment du mal à croire que la meilleure façon d’aborder mon problème est d’investir du temps supplémentaire pour tout écrire proprement, même si l'essentiel sera abandonné peu de temps après. Je sens que je gagnerai du temps si je fais un grand nettoyage une fois que la chose est solide, d’où ma question.