Archive

Posts Tagged ‘coding-dojo’

Children Driven Development

15 avril 2013 1 commentaire

La semaine dernière, j’ai rejoué avec plaisir au kata GameOfLife. Mon ambition était de me chronométrer sous la barre des 30 minutes. Après plusieurs occurrences, j’ai été demander de l’aide autour de moi pour améliorer les tests que j’avais écrits.

En regardant la version ci-dessous, mon fils m’a dit « pffuu je comprends rien ».

Alors je me suis mis dans la tête de faire mieux. J’ai secoué mes cellules grises et je suis arrivé à cette nouvelle version.

Cette fois-ci c’est le tour de ma fille de me dire « tu peux pas enlever ces guillemets ? ».

J’avais envie de continuer à jouer en Java et la meilleure idée que j’ai eu à ce moment là était de prendre le chemin consistant à parser un fichier de spécifications. Bien sûr cela demande un peu plus de travail. C’est aussi un bon exercice à faire en se laissant piloter par les tests. Et finalement je suis arrivé à une écriture que mes enfants comprennent beaucoup plus facilement.

Et en écrivant les tests de cette manière, je passe même encore plus facilement sous la barre des 30 minutes. En plus j’ai une pyramide de tests avec des tests dans deux techno différentes, ce qui illustre le point d’écrire des tests avec des formalismes adaptés à des audiences spécifiques.

Merci les enfants 🙂

Publicités
Catégories :Journal, TDD Étiquettes : , , ,

TDD & SQL

La semaine dernière j’animais une PSD et certains participants ont profité de l’occasion pour jouer avec le kata des chiffres romains. Hasard ou rappel inconscient, c’était justement le kata de février de notre ami 12meses12katas.

Bref, j’ai joué aussi et comme l’ambiance s’y prêtait bien, j’ai ressorti ma doc de mysql. Un petit guard dans un coin pour avoir mon autotest et hop c’est parti. J’ai fait une petite vidéo du début pour vous partager de quoi ça peut avoir l’air et démystifier un peu le tdd avec le sql. Dans la session la semaine dernière nous avons pris l’option de ne pas utiliser de framework « sur étagère », histoire de bien comprendre ce qui se passe en refaisant juste ce dont nous avions besoin. C’est cette option que j’ai repris ici.

Catégories :Journal, TDD Étiquettes : ,

Refactoring challenge

Mercredi soir, le groupe Alt.Net de Montréal m’a invité à un coding-dojo dans les locaux de Microsoft qui leur ouvre ses locaux.

Cela a encore été une bonne occasion d’apprentissage.

  • Nous avons pris le temps d’explorer plusieurs manières d’exprimer nos tests : les  assertions basiques de NUnit, l’écriture d’une contrainte personnalisée.
  • Nous avons évoqué le Broken Test Pattern avant la pause. Partir avec un test rouge avant la pause nous aide au retour à savoir où nous en sommes.
  • Nous avons utilisé nos moments de refactoring pour introduire au maximum le langage du domaine qui faciliterait une conversation avec un expert du domaine.
  • Chemin faisant nous avons créé de la duplication algorithmique et nous avons ressenti le dilemme entre payer cette dette et augmenter les capacités de notre code.

Cela a été une séance très agréable avec beaucoup d’interactions. Cela nous a tous donner envie de refaire une séance de ce type à l’automne.

Le lendemain matin, je me suis lancé dans un refactoring. Puis je me suis dit que j’aimerais connaître vos idées de refactoring. Quelles modifications ferriez-vous ? Bien sûr, il ne suffit pas de dire ce que vous ferriez, il faut le prouver avec du code.

Le code de départ est sur Github : le refactoring-challenge. Faites un ou plusieurs refactoring et partagez-nous vos réflexions et résultats.

Amusez-vous bien :).

Catégories :Journal, TDD Étiquettes : ,

Dojo@Pyxis

J’animerai un coding-dojo dans les locaux de Pyxis à Laval le mercredi 29 juin prochain de 5pm à 7pm. Et vous êtes tous les bienvenus !

Pour ne pas lutter avec un clavier et un IDE inconnus, apportez votre laptop avec votre environnement de développement préféré prêt à faire rouler des tests.

Pour cette première édition, je vous proposerai une formule que j’utilise lorsque j’aide un groupe à débuter avec les katas. Cela ressemble au déroulement ci dessous.

  1. 5′ introduction
  2. 15′ présentation du sujet
  3. 40′ travail libre en binôme
  4. 10′ pause
  5. 15′ présentation par un binôme
  6. 15′ perfection game par le public
  7. 10′ clôture

Habituellement on choisit le binôme qui présente pendant la pause.

A bientôt 🙂

Catégories :Journal, TDD Étiquettes : ,

ATTD avec Cucumber

L’exercice proposé ce mois-ci par @12meses12katas m’a donné envie cette fois d’utiliser Cucumber. J’avais dans l’idée d’apprendre à utiliser les Scenario Outline qui sont une alternative intéressante aux tableaux lorsqu’on veut donner plusieurs exemples d’utilisation d’une même formule. Comme je n’avais jamais fait cela, c’était une bonne occasion.

Pour ceux qui ne voient pas de quoi il s’agit, voici à quoi cela ressemble rapidement:

Je voulais rester dans des temps raisonnable pour l’enregistrement vidéo. Alors j’ai essayé de n’écrire que des tests Cucumber, pour gagner du temps. Je n’étais pas très confortable avec cette idée car j’anticipais que j’allais avoir envie d’écrire des tests plus unitaires en cours de route. Cela m’a incité à écouter les tests avec plus d’attention et à programmer par intention.

J’ai vraiment apprécié cet exercice et plus particulièrement:

  • Coder dans le train avec Vincent qui a mis à mal la première version de mon modèle,
  • La liste de tests capturée sous la forme de scénarios à venir,
  • le refactoring de la liste de test qui précise les intentions des tests quand vient le temps de les écrire. Cette activité est homogène à un travail sur un backlog pendant un planning d’itération.
J’ai fait le choix de mettre toutes les classes du domaine au même endroit. Il s’agissait au début de gagner du temps au chronomètre. Finalement cela s’est aussi avéré très pratique en cours d’exercice.
Catégories :Journal, TDD Étiquettes : ,

Kata .Net

Que faites-vous le 15 juin prochain après le souper ? Vous êtes les bienvenus dans les locaux de Microsoft à Montréal à partir de 18:30 pour un kata. Amenez de quoi coder pour en tirer le maximum. Plus d’info sur le site de la communauté .Net de Montréal ici.

Catégories :Journal, TDD Étiquettes : ,

Classes ouvertes en ruby

Le kata du mois dernier proposé par @12meses12katas m’a encore appris quelque chose. C’était la première fois que je faisais en Ruby le kata bowling. Comme d’habitude je voulais passer sous les 10 minutes avec un code et des tests avec lesquels je sois confortable, c’est à dire qui communiquent leurs intentions d’une manière que je pourrais encore comprendre l’année prochaine.

J’ai commencé par écrire des tests qui ressemblaient à ceci:

describe Bowling do
    specify "spare" do
        claire.sheet = "1/------------------"
        claire.score.should == 10

        claire.sheet = "1/2-----------------"
        claire.score.should == 14
    end
end

J’ai continué tranquillement avec le kata et lorsque j’ai fait passé les tests avec les cas plus complexes avec des spares et des strikes j’ai regardé mon chronomètre et j’ai pris une baffe: 24 minutes. J’ai recommencé plusieurs fois, j’ai posé mon scénario sur une feuille, pour arrêter de perdre du temps à calculer les résultats attendus, j’ai utilisé un raccourcis clavier de plus pour introduire une variable dans RubyMine, j’ai tapé sur mon clavier comme un fou, j’ai mis une table dans les tests, et j’ai péniblement atteint 18 minutes. Bof.

Puis je me suis rappelé du kata des chiffres romains de @jacegu du mois dernier et j’avais bien aimé ses tests qui utilisaient une extension de la classe Fixnum. Alors j’ai essayé de mettre ça en pratique et cela donnait des tests assez différents:

describe Bowling do
    specify "spare" do
        "1/------------------".scores(10)
        "1/2-----------------".scores(14)
    end
end

J’aime mieux cette version des tests qui se concentrent sur le problème à résoudre et supprime le bruit. En plus cela m’a permis de baisser le chrono :).

Catégories :Journal, TDD Étiquettes : ,