software craftsmanship: en pratique
Post on 05-Dec-2014
3.989 Views
Preview:
DESCRIPTION
TRANSCRIPT
Jean-Laurent de Morlhon - 4 Octobre 2011
Software Craftsmanshipen pratique
Jean-Laurent de Morlhon
Directeur Technique Xebia
+12 ans expérience IT+6 ans pratiques agiles
@morlhonhttp://blog.xebia.fr
jlmorlhon @ xebia.fr
Qu'est ce que le Software Craftsmanship ?
Comment *je* le mets en pratique.
Master Plan
Software Craftsmanship
???
CRAFTMAN-CHIPS@elemerdy
http://www.economicthought.net/2011/02/selective-attention/
ManifesteCraftsmanship
Historique
1999 2008 2009 2010
Livre Pragmatic
Programmers
"Craftsmanshipover crap"
1ère ConfCraftsmanship EU
2nde confCraftsmanship EU
1ère ConfCraftsmanship US
Livre Apprencticeship
Patterns
LivreClean Code
Software Craftsmanship
est une approche de développement logiciel qui met l'accent sur les «coding skills» des
développeurs.
Crafts.man
Un homme qui pratique son métier avec une grande habileté.
! ART
http://dannorth.net/2011/01/11/programming-is-not-a-craft/
13
• Une définition commune
• Métaphores que l'on peut interpréter de façon très différentes (art, guilde etc...)
• Manifeste au points flous, lié au manifeste agile
En bref...
La marque "Agile" oublie les pratiques
techniques.
• Scrum...
• ... Sans itérations...
• ... Sans pratiques techniques...
• ... Sans rétrospectives...
• ...
http://www.martinfowler.com/bliki/FlaccidScrum.html
Process
Coding
ProcessCoding
Respectingénieur logiciel
!=
Respectingénieur structure
Savoir dire Non !
Apprentissage
© 2004 Warner Bros. Entertainment Inc. All Rights Reserved.
Musiciens d’élite Musicien professionnels
Professeur de musique
5 ans8 ans12 ans16 ans20 ans
Nb heures Accumulées :
2-3 h / Semaine 2-3 h / Semaine 2-3 h / Semaine6 h / Semaine 2-3 h / Semaine 2-3 h / Semaine8 h / Semaine 6 h / Semaine 4 h / Semaine22 h / Semaine 11 h / Semaine 7 h / Semaine30+ / Semaine 24 h / Semaine 12 h / Semaine
10 000 heures 8 000 heures 4 000 heures
The Role of Deliberate Practice in the Acquisition of Expert Performance K. Anders Ericsson, Ralf Th. Krampe, and Clemens Tesch-Romer; 1993
Musique
• Un mouvement.
• Agile *avec* les pratiques techniques
• Respect du rôle de l'ingénieur
• Apprentissage / Mentoring
En résumé
En pratique...
SOLID Entrainement
TDD
YAGNIDéploiement Continu
CRAFT
AGILE
Agile...
XP Scrum Kanban
SOLID5 Principes
Single Responsability
Open Closed
Liskov Substitution
Interface Segregation
Dependency Inversion
http://blog.xebia.fr/2011/07/18/les-principes-solid/
Ecrire du logiciel ce n'est pas une partie de Jengaht
tp://
lost
echi
es.c
om/d
eric
kbai
ley/
2009
/02/
11/s
olid
-dev
elop
men
t-pr
inci
ples
-in-m
otiv
atio
nal-p
ictu
res/
Ce n'est pas parce qu'on peut le faire qu'il faut le faire.
http
://lo
stec
hies
.com
/der
ickb
aile
y/20
09/0
2/11
/sol
id-d
evel
opm
ent-
prin
cipl
es-in
-mot
ivat
iona
l-pic
ture
s/
Une opération à coeur ouvert n'est pas nécessaire lorsqu'on enfile un vêtement.
http
://lo
stec
hies
.com
/der
ickb
aile
y/20
09/0
2/11
/sol
id-d
evel
opm
ent-
prin
cipl
es-in
-mot
ivat
iona
l-pic
ture
s/
Ca cancane comme un canard, ressemble à un canard mais à besoin de pile. Vous avez surement la mauvaise abstraction.
http
://lo
stec
hies
.com
/der
ickb
aile
y/20
09/0
2/11
/sol
id-d
evel
opm
ent-
prin
cipl
es-in
-mot
ivat
iona
l-pic
ture
s/
Où voulez vous brancher cela ?
http
://lo
stec
hies
.com
/der
ickb
aile
y/20
09/0
2/11
/sol
id-d
evel
opm
ent-
prin
cipl
es-in
-mot
ivat
iona
l-pic
ture
s/
Est ce que vous souderiez directement un branchement électrique dans le mur ?
http
://lo
stec
hies
.com
/der
ickb
aile
y/20
09/0
2/11
/sol
id-d
evel
opm
ent-
prin
cipl
es-in
-mot
ivat
iona
l-pic
ture
s/
YAGNI
You Aren't Going to Need It !
ExerciceQ: Vous avez un jar exécutable qui exécute du
code que l'on veut rendre exécutable régulièrement. L'accès au logs passés est important. Un novice doit pouvoir les visualiser.
1: Cron Job2: Talend3: Quartz Scheduler4: Je code tout, Threads & Future FTW5: Jenkins
TDDflow
red
greenrefactor
switch !
TDD
C'est difficile.
On y arrive, ça s'apprends.
Ils n'en reviennent jamais.
Déploiement Continu
Build < 2-3 minutes.Dépendance binaireTest unitaire + intégrationDéploiement de l'application complèteDés la 1ère itération (sans surcout)
S'entrainer !
Kata (seul)Coding Dojo (en groupe)Code Retreat (tout plein)
Code Session 1
Retrospective 1
Code Session 2
Retrospective 2
Code Session 3
Retrospective 3
Lunch
Code Session 4
Retrospective 4
Code Session 5
Retrospective 5
Code Session 6
Day Retrospective
10h00
11h00
12h00
13h00
14h00
14h00
15h00
16h00
16h40
...
Typical CodeRetreat Planning
Global Day of Code Retreat
december 3rd 2011
LearnNew
Languages
Et à l'horizon...
• Domain Driven Design
• Clean Code...
• TDD ++ (practice, practice practice !)
• 1 langage par an
raising the bar
?
top related