Je suis un programmeur contractuel avec beaucoup d'expérience. J'ai l'habitude d'être engagé par un client pour réaliser un projet de logiciel d'une forme ou d'une autre par moi-même, généralement à partir de rien. Cela signifie que je fais table rase du passé, presque à chaque fois. Je peux apporter des bibliothèques que j'ai développées pour démarrer rapidement, mais elles sont toujours facultatives. (et dépendent de l'inclusion des bonnes clauses de propriété intellectuelle dans le contrat). matériel informatique plateforme... donc nous parlons de liberté sérieuse ici.
Je peux voir des utilisations pour construire des tests automatisés pour certains codes : Les bibliothèques avec des fonctionnalités plus que triviales, les fonctionnalités de base avec un nombre élevé de références, etc. En gros, comme la valeur d'un morceau de code augmente en raison d'une utilisation intensive, je peux voir qu'il serait de plus en plus utile de tester automatiquement ce code afin de savoir si je ne le casse pas.
Cependant, dans ma situation Je trouve difficile de rationaliser plus que cela. J'adopterai des choses si elles s'avèrent utiles, mais je ne suis pas prêt à suivre aveuglément quoi que ce soit.
Je trouve que beaucoup de choses que je fais dans le cadre de la "maintenance" sont en fait de petits changements de conception. Dans ce cas, les tests ne m'auraient rien épargné et il faudrait maintenant les modifier aussi. Une approche de conception hautement itérative et axée sur le stub fonctionne très bien pour moi. Je ne vois pas comment je pourrais gagner autant de temps avec des tests plus poussés.
Les projets de loisir sont encore plus difficiles à justifier... ils durent généralement entre un week-end et un mois. Les bogues marginaux sont rarement importants, il s'agit de jouer avec quelque chose.
Lire des questions telles que celui-ci La réponse la plus votée semble dire que, d'après l'expérience/opinion de l'auteur de l'article, la TDD fait perdre du temps à moins de 5 personnes (même en supposant un certain niveau de compétence/expérience de la TDD). Cependant, cela semble couvrir le temps de développement initial, et non la maintenance. Il n'est pas clair comment la TDD se positionne sur l'ensemble du cycle de vie d'un projet.
Je pense que TDD pourrait être une bonne étape dans l'objectif louable d'améliorer la qualité des produits de notre industrie dans son ensemble. L'idéalisme en soi n'est plus aussi efficace pour me motiver, cependant.
I faire Je pense que la TDD serait une bonne approche pour les grandes équipes, ou pour toute équipe contenant au moins un programmeur peu fiable. Ce n'est pas ma question.
Pourquoi un développeur unique ayant de bons antécédents adopterait-il le TDD ?
J'aimerais entendre parler de toute sorte de mesures effectuées (officiellement ou non) sur la TDD... en se concentrant sur les développeurs solos ou les très petites équipes.
À défaut, des anecdotes sur vos expériences personnelles seraient également les bienvenues :)
Veuillez éviter d'énoncer des opinions sans expérience pour les étayer. N'en faisons pas une guerre d'idéologie. Egalement l'argument de l'abandon des options d'emploi. Il s'agit simplement d'une question d'efficacité.