SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
Software Craftsmanship
                  en pratique




      Jean-Laurent de Morlhon - 20 Octobre 2011
Jean-Laurent de Morlhon

            Directeur Technique
                   Xebia

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


                  @morlhon
              http://blog.xebia.fr
             jlmorlhon @ xebia.fr
Jean-Laurent de Morlhon




              http://serpodile.com
Jean-Laurent de Morlhon




             Développeur
Master Plan


1) Qu'est ce que le Software Craftsmanship ?

   2) Comment *je* le mets en pratique.
1
Software
Craftsmanship
     ???
CRAFTMAN-CHIPS
                 @elemerdy
craftsmanship
http://www.artisanat.fr/
http://www.economicthought.net/2011/02/selective-attention/
Historique
    Livre                                            1ère Conf
 Pragmatic                    1ère Conf          Craftsmanship US        Paris
Programmers               Craftsmanship EU                            Software
                                                                    Craftsmanship
                                                                     Community

              "Craftsmanship            Manifeste
                 over crap"           Craftsmanship




 1999             2008             2009                    2010         2011



                                                 Livre          London
                         Livre
                                             Apprencticeship   Software
                      Clean Code                             Craftsmanship
                                                Patterns
                                                               Comunity
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/
16
En bref...

• Une définition commune
• Métaphores que l'on peut interpréter de
  façon très différentes (art, guilde ...)

• Manifeste au points flous, lié au manifeste
  agile
La marque "Agile"
oublie les pratiques
    techniques.
Scrum en 2011...
• Avec des post-its et des stand-
  ups
• ... Sans itérations...
• ... Sans rétrospectives...
• ... Sans pratiques techniques...
• ...                  http://www.martinfowler.com/bliki/FlaccidScrum.html
Coding

         Process
Coding   Process
Respect
 ingénieur logiciel

        !=

     Respect
ingénieur structure
Savoir dire Non !
Apprentissage
© 2004 Warner Bros. Entertainment Inc. All Rights Reserved.
Musique

                                                                                  Musicien                            Professeur de
                                   Musiciens d’élite
                                                                               professionnels                           musique
    5 ans                             2-3 h / Semaine                          2-3 h / Semaine 2-3 h / Semaine
    8 ans                              6 h / Semaine                           2-3 h / Semaine 2-3 h / Semaine
    12 ans                             8 h / Semaine                            6 h / Semaine   4 h / Semaine
    16 ans                            22 h / Semaine                           11 h / Semaine 7 h / Semaine
    20 ans                             30+ / Semaine                           24 h / Semaine 12 h / Semaine
  Nb heures
 Accumulées :                          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
En résumé
• Un mouvement.
• Agile *avec* les pratiques techniques
• Respect du rôle de l'ingénieur
• Apprentissage / Mentoring
2
En pratique...
AGILE
                        TDD


SOLID           CRAFT     Entrainement




  Déploiement
                         YAGNI
    Continu
Agile...

XP   Scrum      Kanban
SOLID
     5 Principes


Single Responsability
Open Closed
Liskov Substitution
Interface Segregation
Dependency Inversion
                   http://blog.xebia.fr/2011/07/18/les-principes-solid/
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/




                    Jenga
Ecrire du logiciel ce n'est pas une partie de
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/




                       faire.
  Ce n'est pas parce qu'on peut le faire qu'il faut le
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/




  Une opération à coeur ouvert n'est pas
 nécessaire lorsqu'on enfile un vêtement.
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/




                                                                                             Ca cancane comme un canard, ressemble à un canard mais à
                                                                                             besoin de pile. Vous avez surement la mauvaise abstraction.
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/




             Où voulez vous brancher cela ?
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/




                      électrique dans le mur ?
      Est ce que vous souderiez directement un branchement
YAGNI


You Aren't Going to Need It !
Exercice
Q: Vous avez un jar exécutable qui démarre
  du code que l'on veut lancer
  régulièrement.
  L'accès au logs passés est important.
  Un novice doit pouvoir les visualiser.


1: Cron Job
2: Talend
3: Quartz Scheduler
4: Jenkins
5: Je code tout, Threads & Future FTW !
red
                 switch !




           TDD
refactor   flow   green
TDD

      C'est difficile.

On y arrive, ça s'apprends.

Ils n'en reviennent jamais.
Déploiement Continu

 Build < 2-3 minutes.
 Dépendance binaire
 Test unitaire + intégration
 Déploiement de l'application complète
 Dés la 1ère itération (sans surcout)
http://happyprog.com/pairhero
S'entrainer !

Kata (seul)
Coding Dojo (en groupe)
Code Retreat (tout plein)
Planning de CodeRetreat usuel

 10h00                                         14h00
         Code Session 1     Code Session 4

         Retrospective 1    Retrospective 4
 11h00                                         15h00
         Code Session 2     Code Session 5

         Retrospective 2    Retrospective 5
 12h00                                         16h00
         Code Session 3     Code Session 6

         Retrospective 3
                                               16h40
 13h00                     Day Retrospective
                                               ...
             Lunch

 14h00
Global Day of Code Retreat




    3 décembre 2011
Pratiquez
de nouveaux
  langages
Et à l'horizon...

• Domain Driven Design
• Clean Code...
• TDD ++ (practice, practice, practice !)
• 1 langage par an
raising the bar
?

Weitere ähnliche Inhalte

Was ist angesagt?

BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
John Ferguson Smart Limited
 
Requisitos de Qualidade de Usabilidade
Requisitos de Qualidade de UsabilidadeRequisitos de Qualidade de Usabilidade
Requisitos de Qualidade de Usabilidade
Roberto Paldês
 

Was ist angesagt? (20)

Scrum Overview by Mark Hoogveld
Scrum Overview by Mark HoogveldScrum Overview by Mark Hoogveld
Scrum Overview by Mark Hoogveld
 
O testador esta morto!
O testador esta morto!O testador esta morto!
O testador esta morto!
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?
 
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile World
 
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingBERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
 
120521 agile contracts 2.1
120521 agile contracts 2.1120521 agile contracts 2.1
120521 agile contracts 2.1
 
Egoless Programming [Mixit 2022]
Egoless Programming [Mixit 2022]Egoless Programming [Mixit 2022]
Egoless Programming [Mixit 2022]
 
Learning from other's mistakes: Data-driven code analysis
Learning from other's mistakes: Data-driven code analysisLearning from other's mistakes: Data-driven code analysis
Learning from other's mistakes: Data-driven code analysis
 
Code Security with GitHub Advanced Security
Code Security with GitHub Advanced SecurityCode Security with GitHub Advanced Security
Code Security with GitHub Advanced Security
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 
Introduction to BDD
Introduction to BDD Introduction to BDD
Introduction to BDD
 
Requisitos de Qualidade de Usabilidade
Requisitos de Qualidade de UsabilidadeRequisitos de Qualidade de Usabilidade
Requisitos de Qualidade de Usabilidade
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Cons
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Risikomanagement in Projekten
Risikomanagement in ProjektenRisikomanagement in Projekten
Risikomanagement in Projekten
 
Agile Project Management
Agile Project ManagementAgile Project Management
Agile Project Management
 
NLP_deep_learning_intro.pptx
NLP_deep_learning_intro.pptxNLP_deep_learning_intro.pptx
NLP_deep_learning_intro.pptx
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de software
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
BDD testing with cucumber
BDD testing with cucumberBDD testing with cucumber
BDD testing with cucumber
 

Andere mochten auch

LRA_presentation2011[1]
LRA_presentation2011[1]LRA_presentation2011[1]
LRA_presentation2011[1]
Nathon Chacon
 
Macro diagrams and definitions
Macro diagrams and definitionsMacro diagrams and definitions
Macro diagrams and definitions
12jostma
 
3.4 Demand And Supply Side Policies
3.4   Demand And Supply Side Policies3.4   Demand And Supply Side Policies
3.4 Demand And Supply Side Policies
Andrew McCarthy
 
3.3 Macro Economic Models
3.3   Macro Economic Models3.3   Macro Economic Models
3.3 Macro Economic Models
Andrew McCarthy
 

Andere mochten auch (20)

Mia-Software at MD Day 2010
Mia-Software at MD Day 2010Mia-Software at MD Day 2010
Mia-Software at MD Day 2010
 
Lean Software Development et pratiques Agiles
Lean Software Development et pratiques AgilesLean Software Development et pratiques Agiles
Lean Software Development et pratiques Agiles
 
Crm Software Salesboom.com Salesforce.com
Crm Software Salesboom.com Salesforce.comCrm Software Salesboom.com Salesforce.com
Crm Software Salesboom.com Salesforce.com
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logiciel
 
LRA_presentation2011[1]
LRA_presentation2011[1]LRA_presentation2011[1]
LRA_presentation2011[1]
 
Citizens of the World: Finding Joy through International Picture Books
Citizens of the World: Finding Joy through International Picture BooksCitizens of the World: Finding Joy through International Picture Books
Citizens of the World: Finding Joy through International Picture Books
 
Lesion renal aguda LRA
Lesion renal aguda LRALesion renal aguda LRA
Lesion renal aguda LRA
 
Institutional Repositories: What the Open Access agenda means for a modern in...
Institutional Repositories: What the Open Access agenda means for a modern in...Institutional Repositories: What the Open Access agenda means for a modern in...
Institutional Repositories: What the Open Access agenda means for a modern in...
 
17 02-24 lara investor presentation
17 02-24 lara investor presentation17 02-24 lara investor presentation
17 02-24 lara investor presentation
 
The Stars My Destination
The Stars My DestinationThe Stars My Destination
The Stars My Destination
 
Joseph Kony and the LRA
Joseph Kony and the LRAJoseph Kony and the LRA
Joseph Kony and the LRA
 
Leicester Research Archive (LRA): the work of a repository administrator
Leicester Research Archive (LRA): the work of a repository administratorLeicester Research Archive (LRA): the work of a repository administrator
Leicester Research Archive (LRA): the work of a repository administrator
 
Missles flight control systems
Missles flight control systemsMissles flight control systems
Missles flight control systems
 
Macro diagrams and definitions
Macro diagrams and definitionsMacro diagrams and definitions
Macro diagrams and definitions
 
Le Software Defined Storage, pour éliminer toutes les contraintes du stockage
Le Software Defined Storage, pour éliminer toutes les contraintes du stockageLe Software Defined Storage, pour éliminer toutes les contraintes du stockage
Le Software Defined Storage, pour éliminer toutes les contraintes du stockage
 
Présentation Conférence des TechTrends
Présentation Conférence des TechTrendsPrésentation Conférence des TechTrends
Présentation Conférence des TechTrends
 
Bâtir une équipe F Lussier V1.2 Fra
Bâtir une équipe F Lussier V1.2 FraBâtir une équipe F Lussier V1.2 Fra
Bâtir une équipe F Lussier V1.2 Fra
 
3.4 Demand And Supply Side Policies
3.4   Demand And Supply Side Policies3.4   Demand And Supply Side Policies
3.4 Demand And Supply Side Policies
 
3.3 Macro Economic Models
3.3   Macro Economic Models3.3   Macro Economic Models
3.3 Macro Economic Models
 
ingenieria del software
ingenieria del softwareingenieria del software
ingenieria del software
 

Ähnlich wie Software Craftsmanship : en Pratique - AgileTour

Ingénierie agile : N&rsquo;oubliez pas vos développeurs
Ingénierie agile : N&rsquo;oubliez pas vos développeursIngénierie agile : N&rsquo;oubliez pas vos développeurs
Ingénierie agile : N&rsquo;oubliez pas vos développeurs
Xavier NOPRE
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
ElsassJUG
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
Clement Bouillier
 
Présentation designer weekend
Présentation designer weekendPrésentation designer weekend
Présentation designer weekend
designerwe
 
AUF11 - 01 Introduction
AUF11 - 01 IntroductionAUF11 - 01 Introduction
AUF11 - 01 Introduction
otb
 

Ähnlich wie Software Craftsmanship : en Pratique - AgileTour (20)

Ingénierie agile : N&rsquo;oubliez pas vos développeurs
Ingénierie agile : N&rsquo;oubliez pas vos développeursIngénierie agile : N&rsquo;oubliez pas vos développeurs
Ingénierie agile : N&rsquo;oubliez pas vos développeurs
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012
 
Scikit Learn: Développement communautaire
Scikit Learn: Développement communautaireScikit Learn: Développement communautaire
Scikit Learn: Développement communautaire
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITA
 
Php 100k
Php 100kPhp 100k
Php 100k
 
Présentation designer weekend
Présentation designer weekendPrésentation designer weekend
Présentation designer weekend
 
At strasbourg 2012 - Les déconnectés de la matrice
At strasbourg 2012 - Les déconnectés de la matriceAt strasbourg 2012 - Les déconnectés de la matrice
At strasbourg 2012 - Les déconnectés de la matrice
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
DevOps, freedom to get stuff done
DevOps, freedom to get stuff doneDevOps, freedom to get stuff done
DevOps, freedom to get stuff done
 
Session mons 22 mars
Session mons 22 marsSession mons 22 mars
Session mons 22 mars
 
AUF11 - 01 Introduction
AUF11 - 01 IntroductionAUF11 - 01 Introduction
AUF11 - 01 Introduction
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
 
Initiation à la programmation école primaire neuville
Initiation à la programmation   école primaire neuvilleInitiation à la programmation   école primaire neuville
Initiation à la programmation école primaire neuville
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
 
Daily ddd
Daily dddDaily ddd
Daily ddd
 
08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation
 

Mehr von Jean-Laurent de Morlhon

Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Jean-Laurent de Morlhon
 

Mehr von Jean-Laurent de Morlhon (9)

Culture du Programmeur
Culture du ProgrammeurCulture du Programmeur
Culture du Programmeur
 
Git fu
Git fuGit fu
Git fu
 
Code retreat june24th
Code retreat june24thCode retreat june24th
Code retreat june24th
 
SVN to GitHUb
SVN to GitHUbSVN to GitHUb
SVN to GitHUb
 
Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...
Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...
Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...
 
Scrum, 3 Ans après...
Scrum, 3 Ans après...Scrum, 3 Ans après...
Scrum, 3 Ans après...
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Scrum & VIdal Retour d'experience
Scrum & VIdal Retour d'experienceScrum & VIdal Retour d'experience
Scrum & VIdal Retour d'experience
 
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
 

Software Craftsmanship : en Pratique - AgileTour