107 votes

Comment faire les programmeurs juniors à écrire des tests ?

Nous avons un programmeur junior qui n'a tout simplement pas écrire suffisamment de tests.
J'ai à nag lui toutes les deux heures, "avez-vous écrit des tests?"
Nous avons essayé:

  • Montrer que le design devient plus simple
  • Montrant qu'il empêche les défauts
  • Faire une chose en moi en disant seulement de mauvais programmeurs ne pas
  • Ce week-end, 2 membres de l'équipe ont dû venir travailler parce que son code était une référence NULLE, et il n'avait pas le tester

Mon travail exige de qualité supérieure code stable, et généralement de tout le monde "reçoit" et il n'y a pas besoin de pousser les tests de travers. Nous savons que nous pouvons lui faire écrire des tests, mais nous connaissons tous l'utilité des tests sont celles écrites lorsque vous êtes dedans.

Savez-vous de plus de motivations?

123voto

Justin Standard Points 15312

C'est l'une des choses les plus difficiles à faire. L'obtention de votre peuple pour l'obtenir.

Parfois, l'une des meilleures façons d'aider les juniors de niveau de programmeurs 'obtenir' et d'apprendre les bonnes techniques auprès des aînés est de faire un peu de programmation en binôme.

Essayez ceci: sur un projet à venir, la paire junior gars avec vous-même ou un autre programmeur senior. Ils doivent travailler ensemble, prenant tour à tour la "conduite" (l'un en tapant à elles clavier) et de "coaching" (en regardant par dessus l'épaule du pilote et en pointant des suggestions, des erreurs, etc comme ils vont). Il peut sembler comme un gaspillage de ressources, mais vous trouverez:

  1. Que ces gars-là peuvent produire un code beaucoup rapide et de meilleure qualité.
  2. Si votre junior gars apprend assez pour "en finir" avec un premier mec lui ordonnant le long de la voie droite (eg. "Ok, maintenant, avant de continuer, vous permet d'écrire à tester cette fonction.") Il sera bien en valeur les ressources de vous engager.

Peut-être aussi avoir quelqu'un dans votre groupe de donner le Test d'Unité 101 présentation par Kate Rhodes, je pense que c'est un excellent moyen d'amener les gens excité au sujet de test, si le produit est livré.

Une autre chose que vous pouvez faire est d'avoir votre Jr Devs pratique le Jeu de Bowling Kata qui va les aider à apprendre le Développement Piloté par les tests. Il est en java, mais pourrait facilement être adaptée à n'importe quelle langue.

21voto

RodeoClown Points 3949

Avoir un code examiner avant chaque validation (même si c’est une 1 minute « J’ai changé ce nom de la variable ») et dans le cadre de la révision du code et des tests unitaires.

N’approuvent la validation jusqu'à ce que les tests soient en place.

(Également - si son travail n’a pas été mis à l’essai - pourquoi était-ce dans une version de production en premier lieu ? Si il n’est pas testé, ne le laissez pas, alors vous n’aurez pas à travailler les fins de semaine)

20voto

dmckee Points 50318

Pour moi, j'ai commencé à insister pour que chaque bogue que j'ai trouver et de corriger être exprimé comme un test:

  1. "Hmmm, c'est pas bon..."
  2. Trouver éventuel problème
  3. Écrire un test, montrent que le code ne fonctionne pas
  4. Résoudre le problème
  5. Montrer que le nouveau code de passe
  6. Boucle si le problème persiste

J'essaie de faire, c'est même tout en frappant des trucs, et j'ai fait à peu près en même temps, seule une partie de la suite de tests déjà en place.

(Je ne vis pas dans une programmation commerciale de l'environnement, et je suis souvent le seul codeur de travail sur un projet en particulier.)

16voto

Marcio DaSilva Points 151

Imaginez que je suis un simulacre de programmeur, nommé... Marco. Imaginez je suis diplômé de l'école n'y a pas longtemps, et n'a jamais vraiment eu à écrire des tests. Imaginez que je travail dans une entreprise qui n'a pas vraiment d'appliquer ou de demande pour cela. OK? bon! Maintenant, imaginez que la société est de commutation à l'aide de tests, et ils essaient de me faire en ligne avec cela. Je vais donner un peu sarcastique réaction à des éléments mentionnés jusqu'à présent, comme si je n'avais pas fait de recherche sur ce.

Let's get cela a commencé avec le créateur:

Montrer que le design devient plus simple.

Comment peut écrire plus, rendre les choses plus simples. Je voudrais maintenant avoir à garder un œil sur l'obtention de plus de cas, et etc. Cela rend plus compliqué si vous me demandez. Donnez-moi les détails volumiques.

Montrant qu'il empêche les défauts.

Je sais qu'. C'est pourquoi ils sont appelés tests. Mon code est bon, et je l'ai vérifié pour les questions, donc je ne vois pas où ces tests pourrait l'aider.

Faire une chose en moi en disant seulement de mauvais programmeurs ne le font pas.

Ohh, alors vous pensez que je suis un mauvais programmeur juste parce que je ne fais pas autant utilisé le test. Je suis insulté et positivement gêné à vous. Je préfère avoir de l'aide et de soutien que les paroles.

@Justin Standard: Le début d'une nouvelle propect paire junior gars avec vous-même ou un autre programmeur senior.

Ohh, c'est tellement important que les ressources seront dépensés pour s'assurer que j'voir comment les choses sont faites, et avoir un peu m'aider sur la façon dont les choses sont faites. C'est utile, et je pourrais juste de commencer à faire de plus.

@Justin Standard: Lire le Test Unitaire 101 présentation par Kate Rhodes.

Ahh, c'était une présentation intéressante, et il m'a fait réfléchir à l'essai. Il martelé certains points à prendre en considération, et il pourrait avoir influencé mon point de vue un peu.

Je serais ravi de voir plus d'articles convaincants, et d'autres outils pour m'aider à faire la queue à penser que c'est la bonne façon de faire les choses.

@Dominic Cooney: Passez un peu de temps et de partager les techniques de test.

Ahh, cela m'aide à comprendre ce qui est attendu de moi autant que techniques, et il met plus d'articles dans mon sac de la connaissance, pour que je puisse l'utiliser à nouveau.

@Dominic Cooney: Répondre à des questions, des exemples et des livres.

Avoir un point de personne (des personnes) pour répondre à la question, est utile, il peut me faire plus tendance à essayer. De bons exemples sont grands, et il me donne un objectif, et quelque chose à regarder pour référence. Les livres qui sont pertinents pour la présente directement sont grande référence.

@Adam Hayle: La Surprise De L'Examen.

Dire ce que vous jailli quelque chose que je suis totalement pris au dépourvu. Je me sens mal à l'aise avec cela, mais vais faire de mon mieux. Je vais maintenant avoir peur et légèrement inquiet de ce venir à nouveau, je vous remercie. Cependant, la tactique de la peur pourrait avoir fonctionné, mais cela a un coût. Toutefois, si rien ne fonctionne, c'est peut-être juste la poussée qui est nécessaire.

@Rytmis: les Articles ne sont considérés comme quand ils ont des cas de test.

Ohh, c'est intéressant. Je vois vraiment que je dois faire maintenant, sinon je ne suis pas de remplir quoi que ce soit. Cela fait sens.

@jmorris: Get Rid / Sacrifice.

éclats, éclats, éclats - Il y a une chance que je pourrais apprendre, et avec le soutien et l'aide, je peux devenir un très important et la partie fonctionnelle de l'équipe. C'est un de mes handicaps maintenant, mais il ne sera pas pour longtemps. Cependant, si je ne reçois pas, je comprends que je vais. Je pense que je l'aurai.


En fin de compte, le soutien de mon équipe à jouer un grand rôle dans tout cela. Avoir une personne de prendre de leur temps pour aider, et de me faire de bonnes habitudes est toujours la bienvenue. Puis, par la suite d'avoir un bon réseau de soutien. Il serait toujours apprécié d'avoir quelqu'un à fait un peu de temps par la suite, et aller sur certains de code, pour voir comment tout est fluide, n'est pas dans une critique en soi, mais plutôt comme une visite amicale.

Raisonnement, de la Préparation, de l'Enseignement, de Suivi, de Soutien.

12voto

Rytmis Points 15848

J'ai remarqué que beaucoup de programmeurs à voir la valeur de test sur un niveau rationnel. Si vous avez entendu des choses comme "ouais, je sais que je devrais tester, mais j'ai vraiment besoin de le faire rapidement", alors vous savez de quoi je parle. Toutefois, sur le plan émotionnel, ils ont l'impression de faire quelque chose, seulement quand ils sont en train d'écrire le code réel.

Le but, alors, devrait être d'obtenir en quelque sorte de leur faire comprendre que le test est en fait la seule façon de mesurer quand quelque chose est "fait", et ainsi leur donner la motivation intrinsèque à écrire des tests.

Je crains que c'est beaucoup plus difficile qu'elle ne devrait l'être, si. Vous entendrez beaucoup d'excuses du genre "je suis vraiment pressé, je vais réécrire/refactoriser plus tard et ensuite ajouter les tests" -- et, bien entendu, le suivi n'arrive jamais, parce que, de façon surprenante, ils sont tout aussi occupé la semaine prochaine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X