J'aime penser à toutes les choses qui sont strictement critiques pour que mon site fonctionne. Pensez d'abord à la façon dont un utilisateur interagirait avec le site, au type d'informations qu'il voudrait stocker ou récupérer, et à la façon dont elle s'attend à ce que cela se passe et fonctionne. Ecrire une liste de toutes ces fonctionnalités, fournir autant de détails que vous pouvez facilement.
Prenez cette liste et triez-la en fonction de la difficulté d'une fonctionnalité, de son impact sur le reste du site, de l'importance de cette fonctionnalité.
Bon travail, vous venez d'écrire une spécification. Maintenant, vous pouvez écrire le code que vous voulez, selon la méthodologie que vous voulez (TDD ou autre) mais avec une spécification en main, cela vous permettra de rester concentré sur les choses importantes. Si vous trouvez que vous travaillez sur quelque chose qui n'est pas dans la spécification, demandez-vous d'abord si c'est vraiment dans les spécifications. Si c'est le cas, allez-y et ajoutez-le, mais si ce n'est pas le cas, déposez-le sur le sol. Rester à l'abri des ennuis, en évitant d'avoir 90% de chances de trouver quelque chose que l'on soit en train de courir après un hareng rouge, peut être difficile. La première façon d'éviter cela est de penser à la solution de pointe , la solution la plus simple, la plus bête, la plus brisée, qui pourrait probablement faire ce que vous parlez. Une solution de pointe est généralement inférieure à 6 lignes de code, parfois c'est juste une. L'idée est de le faire fonctionner aussi vite que possible, afin que vous sachiez ce qui fonctionne réellement. Ensuite, vous pouvez améliorer la solution de pointe en la complétant par un support pour tous les cas d'angle dont vous avez besoin.
Une autre chose que vous pouvez faire est de vous concentrer sur des tests automatisés rigoureux, à la fois des tests unitaires et des tests fonctionnels. Faites que vos tests s'exécutent aussi automatiquement que possible, afin que vous puissiez les exécuter et voir si vous avez cassé quelque chose. Vous pourriez casser quelque chose parce que vous venez de découvrir que ce que vous avez fait est faux et que vous devez le réécrire. Si vous avez de bons tests, vous pouvez refactoriser votre code sans pitié, et pourtant vous saurez tout ce que vous avez à réparer, et le moment précis où vous avez terminé, parce que vos tests vous disent ce qui ne fonctionne toujours pas, et quel est.