Découvrez dès maintenant le Journal du Scrum Day France 2012, proposé par le French Scrum UG.
Archives de l’auteur : thierryler
Qui j’ai vu au Scrum Day 2012
Voici la liste des présentations que j’ai suivies lors du Scrum Day 2012, et donc à propos desquelles je prévoie d’écrire un petit billet. J’ai établi mon planning en fonction des thèmes mais aussi, je l’avoue, par rapport aux titres accrocheurs des conférences…
Retour sur la conférence “Scrum Master Academy”, par Gilles Mantel et Jean-Laurent De Morlhon
Pour tout aspirant au rôle de Scrum Master, cette conférence était inévitable puisqu’elle traitait des « formations certifiantes » dispensées par des SSII comme Xebia. Le sujet est complexe et fait débat au sein de la communauté Agile, qui s’interroge sur le bienfondé d’une certification à un poste dont les compétences relèvent plus de la pratique et de l’expérience, que d’une somme de connaissances.
500 visiteurs au Scrum Day 2012
L’édition 2012 du Scrum Day vient de se dérouler à deux pas de la tour Eiffel et c’est l’heure de partager nos impressions. Je vais parler des différentes conférences durant les prochains jours mais, pour l’instant, je vais me contenter d’une vue globale. D’abord, je dois dire que l’évènement valait le déplacement, ce que pourront confirmer les 500 visiteurs présents.
L’équipe de Developpez.com sera présente à Devoxx France 2012
Devoxx France 2012 aura lieu du 18 au 20 avril. Plusieurs membres de l’équipe de Developpez.com seront présents et feront des retours sur l’événement.
En attendant, vous pouvez consulter les interviews des organisateurs de Devoxx France 2012 :
- Nicolas Martignol : http://thierry-leriche-dessirier.developpez.com/articles/interview/nicolas-martignole-devoxx-france/
- Antonio Goncalves : http://thierry-leriche-dessirier.developpez.com/articles/interview/antonio-goncalves-devoxx-france/
- Hugo Lassiège : http://thierry-leriche-dessirier.developpez.com/articles/interview/hugo-lassiege-devoxx-france/
Le French Scrum User Group vous propose le « Scrum Day 2012 » à l’Espace CAP 15 à Paris, le mardi 27 mars (demain donc). Une partie de l’équipe de Developpez.com assistera aux conférences. Pour ma part, j’y vais avec Hing Chan, auteur du blog « Scrum et Agile avec des bonhommes« , qui m’a chaudement invité à l’accompagner, et qui nous fera partager ses impressions en live sur son Twitter @HingCChan et en un peu plus détaillé sur son blog. Dans les jours qui viennent, je vais également quelques retours sur l’événement ici-même. Dans tous les cas, n’hésitez pas à nous rencontrer durant les pauses.
Scrum Day 2012
Offrez-moi un verre lors du Scrum Day 2012.
Planning des conférences ici : http://ec2-176-34-210-51.eu-west-1.compute.amazonaws.com/wordpress/?page_id=126
Rencontrez les membres de Developpez.com à Devoxx France 2012
Une bonne partie de l’équipe de Developpez.com sera présente lors des trois jours de Devoxx France 2012. Vous pourrez voir à quoi ressemblent vos rédacteurs préférés en vrai.
La solution pour « faire pleurer vos collègues »
Après quelques jours d’attente, je me lance et vous propose une solution.
La question était posée ici
Pour rappel il fallait dire ce que fait le code suivant :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 @Test
public void testCalcul1() {
int i;
i = i++;
System.out.println(i);
}
@Test
public void testCalcul2() {
int i = 0;
i = i++;
System.out.println(i);
}
@Test
public void testCalcul3() {
int i = 1;
i = 1 + i++;
System.out.println(i);
}
@Test
public void testCalcul4() {
int i = 1;
i = 1 + ++i + i++;
System.out.println(i);
}
Commençons par la méthode « testCalcul1″. Elle ne compile tout simplement pas puisque la variable « i » n’a pas été initialisée explicitement. Contrairement aux variables de classes qui sont auto initialisées (warning compilation incomplète) avec les valeurs par défaut (zéro pour un int), les variables de méthodes doivent être explicitement initialisées avant de pouvoir être utilisées. On a néanmoins le droit de ne pas initialiser une variable sous resserve de ne pas l’utiliser. Du coup elle ne sert à rien…
La méthode « testCalcul2″ écrit « 0 » (zéro). Instinctivement on se doute bien que ça allait écrire soit 0 soit 1. Ici la clé de l’énigme est l’ordre de priorité du « = » et du « ++ ». Pour nous aider à bien comprendre, créons la méthode suivante.
1
2
3
4
5
6
7
8
9
10
11 @Test
public void testCalcul2b() {
int i = 0;
int j = 0;
j = i++;
System.out.println("i=" + i);
System.out.println("j=" + j);
}
// --> i=1
// --> j=0
On voit bien, grace à l’instruction « j = i++ » que l’opérateur d’affectation « = » est prioritaire à la post-incrémentation « ++ ». Du coup, si on revient à « testCalcul2″, la variable « i » va donc prendre la valeur « 0 ». Mais me direz-vous, que devient le « ++ » mis en attente ? Et ben il est effectivement réalisé, mais sur une autre variable « i » qui, pour le coup, est perdue même si elle reste présente en mémoire.
La méthode « testCalcul3″ écrit « 2 ». C’est le même raisonnement que pour « testCalcul2″ mais avec des conditions initiales légèrement différentes.
Quant à « testCalcul4″, elle écrit « 5 ». Je l’ai programmer pour rigoler au départ et, finalement, je me suis rendu compte qu’elle était intéressante, pas seulement pour avoir une écriture super complexe mais aussi pour bien voir les priorités. Pour la comprendre, on peut commencer par la simplifier comme suit.
1
2
3
4
5
6
7
8 @Test
public void testCalcul4b() {
int i = 1;
i = 1 + ++i ;
System.out.println(i);
}
// --> 3
En fait le « ++i » passe en premier, du coup « i = 1 + ++i » est équivalent à « i = 1 + 2″, donc « i » vaut « 3 » à la fin. Et pour la même raison, l’instruction « i = 1 + ++i + i++ » revient à « i = 1 + 2 + 2++ » or comme vu dans « testCalcul2″, le « ++ » va passer après le « = » et donc on obtient seulement « 1 + 2 + 2 = 5″…
CQFD… Bonne partie de casse-tête !
Faire pleurer vos collègues
Voici 4 méthodes. Pour chacune il faut expliquer ce qui se passe, sans tester le code (sinon c’est trop facile).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 @Test
public void testCalcul1() {
int i;
i = i++;
System.out.println(i);
}
@Test
public void testCalcul2() {
int i = 0;
i = i++;
System.out.println(i);
}
@Test
public void testCalcul3() {
int i = 1;
i = 1 + i++;
System.out.println(i);
}
@Test
public void testCalcul4() {
int i = 1;
i = 1 + ++i + i++;
System.out.println(i);
}