Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Craftsmanship en pratique @ Agile Day Tunisia

Software Craftsmanship en pratique @ Agile Day Tunisia

Comment le courant Software Craftsmanship, qui exalte les talents de programmation des développeurs, est-il compatible avec l'approche industrielle pratiquée par bon nombre d'acteurs de l'industrie du logiciel aujourd'hui ?

Les approches agiles d'XP à Scrum n'ont-elles pas déjà adressé cette opposition, avec succès? En quoi ces métaphores d'apprentis, mentors et d'artisanats datant de plusieurs siècles sont elles compatibles avec la pratique journalière de production de logiciel au 21ième siècle ?

Comment pratiquement, peut-on s'entrainer à devenir un développeur produisant du code de meilleure qualité ?

Dans cette session nous répondrons à ces questions et nous présenterons l'historique, et les bases du courant "Software Craftsmanship".

Nous aborderons ensuite plusieurs retours opérationnels de la mise en pratique de quelques techniques proposés par le mouvement, parmi lesquelles SOLID, conception objet, technique de testing, clean code.

Jean-Laurent de Morlhon

June 01, 2012
Tweet

More Decks by Jean-Laurent de Morlhon

Other Decks in Technology

Transcript

  1. Jean-Laurent de Morlhon Directeur Technique Xebia +14 ans expérience IT

    +8 ans pratiques agiles @morlhon http://blog.xebia.fr jlmorlhon @ xebia.fr
  2. 1) Qu'est ce que le Software Craftsmanship ? 2) Comment

    *je* le mets en pratique. Master Plan
  3. 1

  4. Manifeste Craftsmanship Historique 1999 2008 2009 2010 Livre Pragmatic Programmers

    "Craftsmanship over crap" 1ère Conf Craftsmanship EU 1ère Conf Craftsmanship US Livre Apprencticeship Patterns Livre Clean Code London Software Craftsmanship Comunity Paris Software Craftsmanship Community 2011
  5. Software Craftsmanship est une approche de développement logiciel qui met

    l'accent sur les «coding skills» des développeurs.
  6. A

  7. Scrum en 2012... •Avec des post-its et des stand- ups

    •... Sans itérations... •... Sans rétrospectives... •... Sans pratiques techniques... •... http://www.martinfowler.com/bliki/FlaccidScrum.html
  8. B

  9. C

  10. Musiciens d’élite Musicien professionnels Professeur de musique 5 ans 8

    ans 12 ans 16 ans 20 ans Nb heures Accumulées : 2-3 h / Semaine 2-3 h / Semaine 2-3 h / Semaine 6 h / Semaine 2-3 h / Semaine 2-3 h / Semaine 8 h / Semaine 6 h / Semaine 4 h / Semaine 22 h / Semaine 11 h / Semaine 7 h / Semaine 30+ / 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
  11. Un mouvement. A) Agile *avec* les pratiques techniques B) Respect

    du rôle de l'ingénieur C) Apprentissage / Mentoring En résumé
  12. 2

  13. SOLID 5 Principes Single Responsability Open Closed Liskov Substitution Interface

    Segregation Dependency Inversion http://blog.xebia.fr/2011/07/18/les-principes-solid/
  14. Ecrire du logiciel ce n'est pas une partie de Jenga

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

    le faire. http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/
  16. 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 !
  17. 4 règles du design simple Lancer tous les tests, et

    vérifier qu'ils passent. Pas de répétition (DRY). Révéler votre intention. Petites Classes, petites méthodes.
  18. Ecrire un test d'acceptance qui échoue Ecrire un test unitaire

    qui échoue Faire passer le test simplement Refactor TDD
  19. 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)
  20. Ecrivez un programme qui affiche les nombres de 1 à

    100. Un nombre par ligne. Respectez les règles suivantes : * Si le nombre est divisible par 3, écrire "Fizz" à la place de 3. * Si le nombre est divisible par 5, écrire "Buzz" à la place de 5. FizzBuzz Kata
  21. 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 ... Planning de CodeRetreat usuel
  22. Et à l'horizon... • Domain Driven Design • Clean Code...

    • TDD ++ (practice, practice, practice !) • 1 langage par an • Live Coding • studio.xebia.fr
  23. ?