-
Notifications
You must be signed in to change notification settings - Fork 0
/
cours1-methodes-agiles.html
335 lines (288 loc) · 12.9 KB
/
cours1-methodes-agiles.html
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Cours 1 : Méthodes agiles -- M2 ATAL -- «Industrie et Logiciels Libres »</title>
<meta name="author" content="Fabien Poulard">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="reveal.js-3.8.0/css/reset.css">
<link rel="stylesheet" href="reveal.js-3.8.0/css/reveal.css">
<link rel="stylesheet" href="reveal.js-3.8.0/css/theme/black.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="reveal.js-3.8.0/lib/css/monokai.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'reveal.js-3.8.0/css/print/pdf.css' : 'reveal.js-3.8.0/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>Méthodes Agiles</h1>
<h3>De la pratique... à la pratique</h3>
<p>
<small>Par <a href="http://www.fabienpoulard.info">Fabien Poulard</a> / <a href="http://twitter.com/grdscarabe">@grdscarabe</a> / <a href="http://www.dictanova.com">Dictanova</a></small>
</p>
<p>
<small>M2 ATAL -- «Industrie et Logiciels Libres»</small>
</p>
</section>
<section>
<h2>Managers ?</h2>
<ol>
<li>Définir les objectifs</li>
<li>Répartir judicieusement les ressources (matérielles ou compétences)</li>
<li>Motiver les développeurs pour les focaliser sur les tâches</li>
<li>S'assurer de la qualité du code produit et de son adéquation avec les besoins</li>
</ol>
</section>
<section>
<section>
<h2>Jeu #1 : <a href="http://blog.officience.com/fr/des-jeux-pour-apprendre-lagilite/">Sac de nœuds</a></h2>
</section>
<section>
<h3>Principes</h3>
<ol>
<li>Choisir un manager</li>
<li>Chaque autre joueur doit tenir la main de deux autres qui ne leur sont pas adjacents. Leur main gauche doit tenir la main droite d’une autre joueur et vice versa.</li>
<li>L’objectif est de se démêler afin de construire un cercle tout en se tenant toujours les mains.</li>
</ol>
</section>
<section>
<h3>Premier round</h3>
<p>L’équipe suit strictement les instructions des managers.</p>
</section>
<section>
<h3>Deuxième round</h3>
<p>Le manager n’a plus aucun rôle, les membres de l’équipe collaborent directement entre eux.</p>
</section>
<section>
<h3>Intérêt d'une équipe autonome ?</h3>
<ul>
<li>Les instructions du manager sont-elles les bonnes ?</li>
<li>Est-ce que le manager ralentit l’équipe en donnant un seul ordre à la fois ?</li>
<li>À quel moment du jeu les membres sont-ils les plus impliqués ?</li>
<li>Comment gérer la communication entre tous les membres ?</li>
</ul>
<aside class="notes">
Jeu simple et facile à mettre en œuvre. Bon moyen de se réveiller et résultats concluants : 2min avec le manager, 20s en mode autonome.
</aside>
</section>
</section>
<section>
<section>
<h2>Équipes ?</h2>
<blockquote cite="http://en.wikipedia.org/wiki/The_Mythical_Man-Month">
"Complexity and communication costs of a project rise with the square of the number of developers, while work done only rises linearly"
</blockquote>
</section>
<section>
<ul>
<li>Livre publié initialement en 1975</li>
<li>Republication en 1995 accompagné de l'essai <i><a href="http://en.wikipedia.org/wiki/No_Silver_Bullet">No Silver Bullet</a></i></li>
<li><i>Silver Bullet</i> méthode miracle permettant d'augmenter la productivité en minimisant le nombre de bugs</li>
<li>Selon Brooks, 2 difficultés :
<ul>
<li>difficultés accidentelles : résolues par l'utilisation des langages de haut niveau</li>
<li>difficultés essentielles : pas de solution . . . ?</li>
</ul>
</li>
</ul>
<aside class="notes">
À rendre plus concret. Trouver un jeu à faire sur ce principe ou bien mieux expliciter.
</aside>
</section>
</section>
<section>
<section>
<h2>Jeu #2 : <a href="http://www.agilex.fr/2008/12/artistes-et-specifieurs/">Artistes et spécifieurs</a></h2>
</section>
<section>
<h3>Principes</h3>
<ul>
<li>2 partitions : des Artistes et des Spécifieurs</li>
<li>les Spécifieurs doivent faire réaliser aux artistes un dessin visible dans une autre pièce</li>
<li>Artistes et Spécifieurs n'ont pas le droit de se parler : spécifications écrites uniquement</li>
<li>les Spécifieurs n'ont pas le droit de dessiner</li>
<li>3 itérations de 10 minutes</li>
<li>Débriefing par équipe puis en commun entre chaque itération</li>
</ul>
</section>
<section>
<h3>Dessins</h3>
<ul>
<li><a href="http://dory.fr/coloriages/formes-et-symboles/abstrait/591-arbre-abstrait">Arbre abstrait</a></li>
<li><a href="http://dory.fr/coloriages/formes-et-symboles/abstrait/551-abstrait-1">Abstrait #1</a></li>
<li><a href="http://dory.fr/coloriages/formes-et-symboles/abstrait/553-abstrait-3">Abstrait #3</a></li>
<li><a href="http://blog.aufeminin.com/blog/seeone_551_5010059/Portraits-fusain-abstraits-acrylique-fantastiques-pastel/Abstrait">Portrait</a></li>
<li><a href="http://art-engage.net/spip.php?page=article-print&id_article=10">BD</a></li>
<li><a href="http://goaaar.wordpress.com/2012/07/11/dessins-abstraits-2004/">Bulles</a></li>
<li><a href="http://fr.123rf.com/photo_6101107_vecteur-de-dessin-abstraits-des-carres-et-des-cercles.html">Carrés</a></li>
</ul>
<aside class="notes">
<p>Toutes les équipes ont choisi l'<a href="http://dory.fr/coloriages/formes-et-symboles/abstrait/591-arbre-abstrait">arbre abstrait</a> lors de la première itération car plus simple avec le PC. Préférer des feuilles imprimées pour les dessins, peut-être même les scotcher au mur.</p>
<p>Trois itérations intéressantes. Progrès au fur et à mesure, notamment dans la répartition des tâches entre les spécifieurs. Pas tellement du côté des artistes.</p>
</aside>
</section>
<section>
<h3>Consignes complémentaires</h3>
<ul>
<li>Fusionner les équipes de 2</li>
<li>Client embarqué : un spécifieur en continue avec les artistes</li>
<li>Découpage en «story» des spécifications (forme par forme)</li>
<li>Avoir une approche incrémentale</li>
</ul>
</section>
<section>
<h3>Objectifs</h3>
<ul>
<li>Faire l’expérience de l’incommunicabilité au sein d’une équipe</li>
<li>Comprendre que l’éloignement fait mal (Préférer la colocation des équipes)</li>
<li>L’intérêt de la pratique de la rétrospective</li>
<li>La communication orale a ses limites</li>
</ul>
</section>
<section>
<h3>Retours</h3>
<ul>
<li>Première itération avec des résultats assez variables</li>
<li>Au final, le «pourquoi» (intention du dessin) est négligée et non retranscrit</li>
<li>Pertinence et appropriation des retours multiples même lors d'une itération</li>
</ul>
</section>
<section>
<h3>Difficultés</h3>
<table>
<tr>
<th>Spécifieurs</th>
<th>Artistes</th>
</tr>
<tr>
<td>
<ul>
<li>Gérer la granularité des spécifications : détails ou vue générale ?</li>
<li>Première itération concentrée sur la facilité donc pas d'effet d'expérience</li>
</ul>
</td>
<td>
<ul>
<li>se projeter à la place du spécifieur pour comprendre son message</li>
<li>savoir choisir entre effacer et corriger</li>
</ul>
</td>
</tr>
</table>
</section>
<section>
<h3>Apprentissage</h3>
<h4>Spécifieurs</h4>
<ul>
<li>Subjectivité de la vision globale : diffère selon les personnes</li>
<li>Ne pas négliger le «POURQUOI ?».</li>
<li>Rappeler le contexte régulièrement pour garder la <i>big picture</i></li>
<li>Faire appel à la connaissance commune</li>
<li>Devoir s'approprier le projet pour le spécifier</li>
<li>Savoir préciser ses termes et se concerter pour rester cohérent</li>
</ul>
</section>
<section>
<h3>Apprentissage</h3>
<h4>Artistes</h4>
<ul>
<li>Se forcer à faire un premier jet pour provoquer des retours de la part des spécifieurs</li>
<li>Savoir remettre en cause, interpréter les instructions</li>
</ul>
</section>
</section>
</section>
<section>
<section>
<h2>Méthodes agiles</h2>
</section>
<section>
<h3><a href="http://agilemanifesto.org/">Manifesto for Agile Software Development</a></h3>
<p><i>We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value :</i></p>
<ul>
<li>Individuals and interactions over processes and tools</li>
<li>Working software over comprehensive documentation</li>
<li>Customer collaboration over contract negotiation</li>
<li>Responding to change over following a plan</li>
</ul>
<p><i>That is, while there is value in the items on the right, we value the items on the left more.</i></p>
</section>
<section>
<h3>Dette technique ou Spirale de complexité</h3>
<ul>
<li>Chaque choix technique devra être maintenu</li>
<li>Un logiciel se complexifie naturellement</li>
<li>Les complexités se combinent et s'amplifient</li>
<li><b>Keep it simple and stupid!</b> et <b>refactoring</b></li>
</ul>
</section>
</section>
<section>
<section>
<h2>Jeu #3 : <a href="http://www.agilex.fr/jeu-au-tableau/">Au tableau</a></h2>
</section>
<section>
<h3>Principes</h3>
<ul>
<li>Planifier les travaux à réaliser pour compléter des ouvrages</li>
<li>Mettre au point un <i>board</i> agile pour organiser la planification et le suivi des tâches</li>
<li>Simuler les itérations de la construction en introduisant des imprévus (nouveaux ouvrages, retards, personnes absentes...)</li>
</ul>
<p><small><a href="http://www.agilex.fr/wp-content/uploads/2012/06/Au-Tableau-Fiches-Papier-v3.pdf">Règles du jeu</a> et <a href="http://www.agilex.fr/wp-content/uploads/2012/06/Au-tableau-OUVRAGES-3.0.pdf">plateau de carte</a></small></p>
</section>
<section>
<h3>Objectifs</h3>
<ul>
<li>Comprendre l'intérêt d'une représentation visuelle et tangible de l'agile board</li>
<li>S'approprier et adapter l'agile board à ses besoins</li>
<li>Chacun gère son avancement et suit celui des autres</li>
</ul>
</section>
<section>
<h3>Retours</h3>
<ul>
<li>Choix des trois colonnes TODO, DOING, DONE complétées par une notion de retard sur la colonne DOING</li>
<li>Une ligne par ouvrage, du plus prioritaire au moins prioritaire</li>
<li>Un post-it par travail et un post-it par ressource (Homme)</li>
<li>Couple travail/ressource dans la colonne DOING</li>
<li>Ordonancement des post-it travaux dans la colonnes TODO pour refléter les dépendances</li>
</ul>
</section>
</section>
</div>
</div>
<script src="reveal.js-3.8.0/js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'reveal.js-3.8.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js-3.8.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js-3.8.0/plugin/highlight/highlight.js', async: true },
{ src: 'reveal.js-3.8.0/plugin/search/search.js', async: true },
{ src: 'reveal.js-3.8.0/plugin/zoom-js/zoom.js', async: true },
{ src: 'reveal.js-3.8.0/plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>