software craftsmanship: en pratique

54
Jean-Laurent de Morlhon - 4 Octobre 2011 Software Craftsmanship en pratique

Upload: jean-laurent-de-morlhon

Post on 05-Dec-2014

3.989 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Software Craftsmanship: En pratique

Jean-Laurent de Morlhon - 4 Octobre 2011

Software Craftsmanshipen pratique

Page 2: Software Craftsmanship: En pratique

Jean-Laurent de Morlhon

Directeur Technique Xebia

+12 ans expérience IT+6 ans pratiques agiles

@morlhonhttp://blog.xebia.fr

jlmorlhon @ xebia.fr

Page 3: Software Craftsmanship: En pratique

http://serpodile.com

Page 4: Software Craftsmanship: En pratique

Qu'est ce que le Software Craftsmanship ?

Comment *je* le mets en pratique.

Master Plan

Page 5: Software Craftsmanship: En pratique

Software Craftsmanship

???

Page 6: Software Craftsmanship: En pratique

CRAFTMAN-CHIPS@elemerdy

Page 7: Software Craftsmanship: En pratique

http://www.artisanat.fr/

Page 9: Software Craftsmanship: En pratique

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

Page 10: Software Craftsmanship: En pratique

Software Craftsmanship

est une approche de développement logiciel qui met l'accent sur les «coding skills» des

développeurs.

Page 11: Software Craftsmanship: En pratique

Crafts.man

Un homme qui pratique son métier avec une grande habileté.

Page 13: Software Craftsmanship: En pratique

13

Page 14: Software Craftsmanship: En pratique
Page 15: Software Craftsmanship: En pratique
Page 16: Software Craftsmanship: En pratique
Page 17: Software Craftsmanship: En pratique

• 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...

Page 18: Software Craftsmanship: En pratique

La marque "Agile" oublie les pratiques

techniques.

Page 19: Software Craftsmanship: En pratique

• Scrum...

• ... Sans itérations...

• ... Sans pratiques techniques...

• ... Sans rétrospectives...

• ...

http://www.martinfowler.com/bliki/FlaccidScrum.html

Page 20: Software Craftsmanship: En pratique

Process

Coding

Page 21: Software Craftsmanship: En pratique

ProcessCoding

Page 22: Software Craftsmanship: En pratique

Respectingénieur logiciel

!=

Respectingénieur structure

Page 23: Software Craftsmanship: En pratique

Savoir dire Non !

Page 24: Software Craftsmanship: En pratique

Apprentissage

Page 25: Software Craftsmanship: En pratique
Page 26: Software Craftsmanship: En pratique

© 2004 Warner Bros. Entertainment Inc. All Rights Reserved.

Page 27: Software Craftsmanship: En pratique

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

Page 28: Software Craftsmanship: En pratique
Page 29: Software Craftsmanship: En pratique

• Un mouvement.

• Agile *avec* les pratiques techniques

• Respect du rôle de l'ingénieur

• Apprentissage / Mentoring

En résumé

Page 30: Software Craftsmanship: En pratique

En pratique...

Page 31: Software Craftsmanship: En pratique

SOLID Entrainement

TDD

YAGNIDéploiement Continu

CRAFT

AGILE

Page 32: Software Craftsmanship: En pratique

Agile...

XP Scrum Kanban

Page 33: Software Craftsmanship: En pratique

SOLID5 Principes

Single Responsability

Open Closed

Liskov Substitution

Interface Segregation

Dependency Inversion

http://blog.xebia.fr/2011/07/18/les-principes-solid/

Page 34: Software Craftsmanship: En pratique

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/

Page 35: Software Craftsmanship: En pratique

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/

Page 36: Software Craftsmanship: En pratique

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/

Page 37: Software Craftsmanship: En pratique

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/

Page 38: Software Craftsmanship: En pratique

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/

Page 39: Software Craftsmanship: En pratique

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/

Page 40: Software Craftsmanship: En pratique

YAGNI

You Aren't Going to Need It !

Page 41: Software Craftsmanship: En pratique

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

Page 42: Software Craftsmanship: En pratique

TDDflow

red

greenrefactor

switch !

Page 43: Software Craftsmanship: En pratique

TDD

C'est difficile.

On y arrive, ça s'apprends.

Ils n'en reviennent jamais.

Page 44: Software Craftsmanship: En pratique
Page 45: Software Craftsmanship: En pratique

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)

Page 46: Software Craftsmanship: En pratique

http://happyprog.com/pairhero

Page 47: Software Craftsmanship: En pratique

S'entrainer !

Kata (seul)Coding Dojo (en groupe)Code Retreat (tout plein)

Page 48: Software Craftsmanship: En pratique

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

Page 49: Software Craftsmanship: En pratique

Global Day of Code Retreat

december 3rd 2011

Page 50: Software Craftsmanship: En pratique
Page 51: Software Craftsmanship: En pratique

LearnNew

Languages

Page 52: Software Craftsmanship: En pratique

Et à l'horizon...

• Domain Driven Design

• Clean Code...

• TDD ++ (practice, practice practice !)

• 1 langage par an

Page 53: Software Craftsmanship: En pratique

raising the bar

Page 54: Software Craftsmanship: En pratique

?