Articles de éric :
- 5′ introduction
- 15′ présentation du sujet
- 40′ travail libre en binôme
- 10′ pause
- 15′ présentation par un binôme
- 15′ perfection game par le public
- 10′ clôture
- 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.
- binômer avec Xavier
- avoir un fil rouge parmi une foule d’autres activités
#tdd at school
J’ai eu la chance plusieurs fois de discuter avec des professeurs qui enseignent le Java à l’université. Nous discutions d’intégrer le tdd à l’enseignement.
Une approche consiste à intégrer le tdd à la fin de l’enseignement. J’ai d’ailleurs eu la chance de participer à cette approche en allant enseigner le tdd dans plusieurs universités. En pratique ce sont les dernières années qui en ont profité puisque cette approche suppose qu’il faut tout d’abord apprendre un langage puis apprendre le tdd.
Une autre approche consiste à intégrer le tdd tout au long l’apprentissage. J’ai eu la chance d’assister à plusieurs des cours donnés par ces professeurs et ce qui m’a frappé c’est la manière utilisée pour avoir du feedback sur un code. Typiquement les étudiants exécute un programme et regardent les traces envoyées dans la console. L’idée est bien sûr de modifier cette habitude et d’utiliser des tests pour avoir du feedback sur le code.
Pour rendre cela concret, nous avons pris le sujet du cours qu’il venait de donner, un cours sur l’héritage et le polymorphisme en Java, et nous avons écrit le test ci dessous.
@Test public void
showPolymorphism() {
Vehicle bicycle = new Bicycle();
Vehicle car = new Car();
assertThat( bicycle.wheelCount(), equalTo(2) );
assertThat( car.wheelCount(), equalTo(4) );
}
Les professeurs ont vite imaginé comment ils pourraient grandement simplifier leur travail de correction
.
L’utilisation des tests est ici bien différente. Au lieu de considérer le tdd comme une approche à part, nous l’intégrons tout au long l’enseignement. Les praticiens du tdd le savent et l’écrivent souvent : le tdd est parfait pour apprendre un nouveau langage. Alors pourquoi pas à l’école ?
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.
Habituellement on choisit le binôme qui présente pendant la pause.
A bientôt ![]()
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:
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.
Professionnal Scrum Foundations
Salut,
Nous (Vincent et moi) venons de donner deux sessions de la nouvelle formation PSF de scrum.org. Et je voulais partager avec vous ce que j’ai appris.
Les participants aiment les exercices de simulation pendant lesquels ils construisent du logiciel. J’ai donné des formations pendant lesquelles les participants construisent des prototypes papier. J’ai ressenti qu’ils préfèrent le logiciel. Cela améliore visiblement leur compréhension de comment utiliser Scrum dans leur projet. Cela augmente aussi la participation ; ils sont plus motivés à faire les exercices.
La mise en pratique d’un Scrum avec plusieurs équipes a beaucoup de valeur pour les participants. Pendant la PSF, la quatrième itération – pendant la seconde après-midi – impose aux participants de mettre en commun leur travail pour construire un site internet portail de leurs différents produits. Les échanges sur les différentes stratégies d’intégration sont beaucoup plus profonds que dans une formation théorique car les participants sont riches de cette mise en pratique.
La PSF est plus pertinente que la PSM pour les équipes qui débutent avec Scrum. J’ai donné beaucoup de PSM. Elle n’est pas faite pour les débutants. La PSM se concentre sur la compréhension de Scrum nécessaire à un Scrum Master. La PSF aborde tous les rôles de Scrum de façon plus équilibrée. Les Product Owner, Team et Scrum Master ainsi que toute personne qui est ou sera en contact avec une équipe Scrum trouveront dans la PSF ce dont ils ont besoin pour commencer: des réponses à leurs questions commençant par « comment ».
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
.
“a working proposal” : semaine 3/3
C’est toujours émouvant pour moi d’arriver à ce qui semble être la “fin” d’une aventure. Depuis 3 semaines nous avons eu cette journée en point de mire. La construction de cette offre autour d’un logiciel qui fonctionne chaque semaine a été le fil rouge qui m’a guidé dans une foule d’autres activités.
Ce que j’ai aimé dans cette expérience:
Pour que cela soit parfait, faudrait-il que notre prospect décide de poursuivre ou bien est-ce que cela va chercher ailleurs ? Cette idée de “gagner la propale” dans le future rend-elle meilleure l’expérience passée ?
Comme on nous l’a dit souvent, c’est plus l’aventure, le parcours qui nous rend heureux, moins que la destination. Alors je n’ai pas d’idée pour améliorer l’aventure ; le logiciel oui
“a working proposal” : semaine 2/3
Deuxième semaine de notre aventure de construction logiciel en parallèle de la mise au point de notre offre de développement. Bien sûr cette semaine s’achève avec une revue d’itération et une rétrospective.
C’est l’occasion pour nous de faire le point sur notre incrément, le produit dans son ensemble, notre compréhension actuelle d’une stratégie incrémentale pertinente pour atteindre les objectifs visés. Pour cela nous nous sommes retrouvés autour du second incrément déployé sur Heroku, autour de notre Product Backlog et de notre propale.
La semaine dernière nous n’avions pas partagé avec notre prospect l’incrément réalisé. Cette semaine c’est différent. Maintenant que nous avons deux incréments, nous avons de quoi démontrer ce que veut dire “construire un logiciel par incréments successifs”. Il se trouve que notre prospect n’a jamais travaillé de cette manière. La semaine dernière nous avions décidé de déployer certes mais sans le lui dire. Notre sentiment était que la notion d’incrément risquait d’être très théorique à ce stade. Maintenant nous avons deux incréments, avec des adresses distinctes. On peut donc voir concrètement l’ajout de fonctionnalités entre les deux versions. Quel sera son feedback ? Suspence…
« a working proposal » : kick-off
Lundi matin nous avons fait un sprint planning un petit peu particulier. Je voulais partager ça avec toi cher lecteur
.
Nous travaillons à construire une offre pour un développement logiciel. « Bien sûr », en tant qu’infecté par l’agilité nous nous concentrons sur le « working software » et adoptons une démarche empirique. Sachant que nous avons un délai de 3 semaines ça a été naturel pour nous de partir sur 3 itérations de 1 semaine chacune. Chaque semaine nous allons construire un petit morceau du logiciel et d’autres choses autour ; par exemple le document très officiel de l’offre en elle même qui décrit notre démarche pour la suite.
Les étoiles se sont alignées pour nous aider. Nous avons pu passer une journée entière à faire du story mapping avec le client et nous avons pu voir le système actuel.
Maintenant nous avons démarré notre première itération sur cette offre. Qu’allons nous apprendre sur le domaine de ce client ? Qu’allons nous livrer ? Suspense…
#scrum release burndown chart
PM: I want to see increase the velocity of the Team
PO: I want to see decrease the remaining work
PM: If the velocity increases, the remaining work will decrease
PO: No, new work could be added at the same time
PM: I don’t like when the Team updates an item with a smaller effort estimation because the velocity could decrease
PO: I like when the Team updates an item with a smaller effort estimation because the remaining work decreases
PM: You don’t track the velocity in a velocity chart?
PO: No, I track the remaining work in a release burndown chart



