Tout d'abord, vous n'avez pas besoin de les convaincre par un argument. Vous êtes indépendant, alors les choses sont formellement réglementées par votre contrat .
Cela dépend des spécificités de votre contrat, mais si vous êtes indépendant, il est raisonnable de supposer que toute fonctionnalité doit être acceptée pour être considérée comme terminée. Sinon, c'est la première chose à changer.
Une fois que c'est fait, ils DOIVENT payer pour tout changement, y compris les bogues.
Pendant leur exécution, ils DOIVENT payer pour tout bogue causé par des spécifications incomplètes ou erronées, des changements et des causes externes (pilote défectueux, mises à jour du système d'exploitation ...). Cependant, cela peut être difficile à déterminer, voir plus loin.
Vos propres erreurs avant l'acceptation peuvent être dans une zone grise, mais votre contrat EXISTANT devrait clarifier cela. Ils ne peuvent pas changer de contrat unilatéralement plus que vous ne pouvez commencer à facturer un taux horaire différent.
D'après mon expérience, le fait de ne pas facturer de bogues est controversé car la cause fondamentale est souvent jugée alors elle est généralement plus facile pour tout le monde de les compter dans le cadre du processus de développement. N'utiliserait-il pas plus de temps pour implémenter correctement cette fonctionnalité depuis le début? Combien en plus? Est-ce causé par une spécification incomplète ou peu claire? Un nouveau code plante à cause d'un bogue dans l'ancien code? L'ancien code plante à cause du nouveau code? Vous ne voulez certainement pas jouer à ce jeu tous les jours.
Si vous travaillez avec l'interface utilisateur, c'est encore plus évident: une approche bonne et sensée est itérative (avec des sessions de test utilisateur fréquentes) et certains résultats sont à la limite des bogues (même si vous avez littéralement et correctement interprété les spécifications). Je suis sûr que vous avez vécu cela et vous savez ce que je veux dire (par exemple, j'ai tendance à considérer un bogue comme une zone de texte pour entrer un chemin sans saisie semi-automatique, même si les spécifications ne mentionnent pas explicitement cette fonctionnalité ).
Si vous avez besoin d'avoir ce genre de discussions, vous ne les suivrez guère et vous perdrez votre temps et votre argent, traquer un bogue pourrait même prendre des jours.
Ne vous entendez pas là-dessus puis partez IMMÉDIATEMENT, vous aimerez peut-être le travail mais, à moins que vous ne soyez prêt à donner une partie éventuellement importante de votre salaire (ou à vous battre pour chaque bug), vous serez toujours celui qui perdra quelque chose.
Alternativement, en supposant que vous faites de votre mieux pour fournir un logiciel de bonne qualité :
- S'ils veulent renégocier le contrat (et vous êtes prêt à le faire), vous pouvez modifier votre taux horaire pour compenser le temps que vous passerez à corriger les bogues (maintenant vous avez probablement assez de données pour extrapoler un nombre). Cela coûtera plus cher, mais il leur sera toujours facile de planifier ces coûts à partir du taux horaire mis à jour et de la vitesse de développement des projets / codes précédents.
- Vous ne fournissez pas de fonctionnalité tant que vous n'avez pas effectué tous les tests, avec tous les outils, un testeur ferait l'affaire. Bien sûr, vous facturez cela en tant que développeur, pas en tant que testeur. Ils verront que, généralement, il est moins coûteux de laisser trouver certains bogues par les testeurs. Soyez prudent car la définition de ce qu'est un bogue doit être formellement acceptée. Si vous utilisez déjà tous les outils pour fournir raisonnablement du code sans bogue (le fait qu'ils en aient trouvé à l'aide d'un outil automatisé est suspect), cela coûtera beaucoup plus cher à l'entreprise car l'estimation du développement / test / correction est fusionnée et moins prévisible. Ils doivent absolument être conscients de ses implications car ils paient un développeur pour faire le travail de testeur, y compris les tests de singe qui en font toujours partie.
D'après mon expérience, si vous choisissez l'option 2 alors vous intégrerez évidemment aussi l'option 1 (il y aura toujours des bugs et personne ne travaille gratuitement) puis les coûts globaux sont voués à augmenter. Dans la mesure du possible, une relation de confiance, saine et professionnelle devrait éviter les deux.
Remarque: ne vous trompez pas en pensant que vous pouvez trouver tous les bogues qu'un testeur peut trouver. Les tests logiciels sont une expertise différente, un art distinct, qui nécessite du temps pour être maîtrisé et il ne s'agit pas seulement de tests unitaires / d'intégration / de régression / de stress (que vous DEVEZ déjà avoir en place). Bien sûr, vous pouvez apprendre à être un bon testeur, mais cela n'arrivera pas en un jour.