SlideShare ist ein Scribd-Unternehmen logo
1 von 70
10 Years Challenge
Même équipe, même produits, même code
Bouducon, 10 ans déjà!
... et maintenant?
Dev ⇨ Dev + 10
“Senior”
Même pas mal ^_^
Un parcours... riche en
rebondissements
A la rencontre de l’équipe
T O U L O U S E
Parité!
https://girlknowstech.com/women-in-coding/
All around the World
une place à part!
une place à part!
Spécificités
- Non Medical Device
- Une famille de produits (Epics)
- Des applications (MVP + Small Releases)
- Tous les composants sont partagés
sans version spécifique à un produit
- Pas de testeur dédiés, le développeur fait tout
- Idem “DevOps”
L’orga générale
● Le PO est dans le bureau à coté ( +
daily meeting)
● Product Support Engineer sur le
plateau ( + daily meeting)
● Le Backlog
● Les Backlog Items
● Le dashboard ( Physique ->
Numérique)
Agile à notre façon
Agile à notre façon
Definition of Done
Quand peut-on fermer un Backlog Item ?
● Une définition faite par l’équipe
● En évolution régulière
● Tient compte des outils à disposition
● Liée aux jobs de l’intégration continue
La piqûre de rappel à Gilles
Individuals and interactions over processes and tools
Working software over comprehensive
documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Déclamatio
n
Individus et
interactions
Au fil du temps
Scrum ? Kanban ? What else ?
Expérience du Daily Open Space
Estimate / No Estimate
Dashboard timing
releases
Utilisé par le PO pour
communiquer aux
clients et au
management
Pair / Mob programming
Responding to change ?
Au fil du temps
Un backlog en évolution permanente
● Une release = 1 groupe de BI
● Types de BI
○ User Need,
○ Bug Fix,
○ Design Quality,
○ Nouvelle Compatibilité avec système(s) VARIAN
Changing code
How can we evolve our systems towards clean architectures and designs in an
incremental Agile way?
https://vimeo.com/68215570 Robert C. Martin: Clean Architecture and Design
Nos changements, pas leur changements
Oui aux changements voulus par (et discutés avec) notre PO ✅
Non aux changements des librairies tierce parties ❌
1. Nous codons les nôtres ⇨ jamais mieux servi ...
2. Nous nous abstrayons les autres
a. Jamais instanciées directement
b. Toujours cachées à travers une API de notre cru
c. Toujours doublées dans les tests (Mocks, Stubs, Spy, Fake et Dumb)
Architecture and Decisions
“the job of an architect is to build a structure that allows decisions to be delayed as
long as possible.”
A good architect maximizes the number of decisions not made.
Bob C. Martin
Composants et composabilité
● Dépendances maîtrisées
● Injection de Dépendance
● Architecture hexagonale
○ Alistair Cockburn, 2005
https://stefanoalletti.wordpress.com/2017/10/27/hexagonal-architecture/
Toujours le même code
● Fondations solides
● Socle Commun = Abstractions
● Découpage intelligent
○ pas de “couches”
● Peu de Breaking Changes
● Ré-utilisabilité
● Richesse de l’expérience accumulée
Contexte et évolutions techniques
● .Net 2.0 ⇒ .Net 4.5
● Xaml ⇒ Web
● Web API : WCF ⇒ asp.net MVC ⇒ Nancy
● Web User Interface ( HTML + jQuery)
● Chromium
● Vue ⇒ Angular
● Signal R
● ⇒ .Net Core
Je n’aurai pas été jusque là si...
Branch(es) : an Anti Agile Pattern
Trunk Based Programing
shorturl.at/ekDRY
https://adtmag.com/articles/2017/03/14/agility-code-branching.aspx
Branching by Abstraction
https://adtmag.com/articles/2017/04/21/agile-branch-by-abstraction.aspx
Customer
collaboration ?
Au fil du temps
User Stories
Les plus petites possible
Conversation entre devs et PO
Doit apporter une valeur à l’utilisateur
● As
● When
● Then
🙅 Design Quality (paye ta dette)
Ubiquitous Language
En 1944, dans Poésie 44, (Sur une philosophie de l'expression), Albert Camus
écrivait: " Mal nommer un objet, c'est ajouter au malheur de ce monde ".
DDD : the King of the Domain is the Model
du BI au BDD
● On essaye d’écrire des spécifications exécutables qui reprennent toutes les
exigences du Bi
● BI ⇒ Besoin Utilisateurs
● BDD ⇒ exigences métiers et techniques qui font partie de la résolution du Besoin
Utilisateur
Executable Specifications aka BDD
Gherkin / Cucumber ⇒ Specflow/ C# ⇒ NUnit
On écrit nos premiers steps naïvement
On se pose des questions sur la manière de formuler
On se pose la question de le ré-utilisabilité
De l’expression des concepts à l’écriture d’une forme abstraite dans le code
Au début on apprenait de 0
Seul au monde ?
Who should read BDD executable
specifications?
Everyone ?
Developers !!!
Product Owner =>
● Code is fluent enough,
● DDD is in place,
● Event Storming performed,
● so tests are “human aware readable”
Je n’aurai pas été jusque là si...
Prendre du temps pour en gagner
Working
software ?!
Au fil du temps
TDD
Design and Write Test first
Think how your code can be tested in isolation
How you can write a test only by re using existing steps
Writing tests
Tests should:
● Respond to behavior changes.
● Not respond to structure changes.
● Be cheap to write.
● Be cheap to read.
● Be cheap to change.
https://medium.com/@kentbeck_7670/programmer-test-principles-d01c064d7934
TDD efficace
Tests should:
● Minimize programmer waiting (so... run fast!).
● Run reliably.
● Predict deployability (not only work on my machine).
https://medium.com/@kentbeck_7670/programmer-test-principles-d01c064d7934
Continuous Integration
● Mise en place par l’équipe
● Essais successifs
● ... loin d’être parfait
Fait Maison = fait avec amour
Résistant à la mode
C’est à nous!
YAGNI (adapté à ce dont on a
uniquement besoin)
Je n’aurai pas été jusque là si...
...WITH comprehensive
documentation
Au fil du temps
Processus Qualité Mondial et Dérivations
Scriptable Generation of Documentation
Contexte: Minor Release Documentation (incremental)
Sources de données:
● Backlog produit (TFS / JIRa / ...)
● Source repositories ( TFS: changesets, labels, reviewers, approvers, ...)
● Code artefacts (MS Build, proj files, target files)
● Specs Sources (only BDD can do it!)
● Tests artefacts (Execution Results, Specflow files, Attributes )
● Tests environnements (MVs...)
● Text templates
XML -> XSL -> XHTML -> PDF -> signed PDF
Je n’aurai pas été jusque là si...
Living Documentation
No comments!!!!
Fluent Code
Documented Abstractions & Design
Readable Tests
Executable Specifications with BDD
Résister au temps
Au fil du temps
Le temps est rarement un ami
● Limites de la mémoire
● Quel support pour se souvenir?
○ Commentaires?
○ Documentation?
○ Source code (repository)
○ Tests
● Se relire
● Se comprendre
● Être compris
● Être stable
Pourquoi / pour qui j’écris du code
- Pour les clients?
● Minimiser la souffrance
● Pour l’équipe ?
● Pour moi ?
https://compassionatecoding.com/
April Wensel
Global Ownership of Code
Conception émergente
... pas toujours!
Kill the routine
● Nouveaux Produits / Nouvelles technos
● Ateliers
● Kata
● Changements de méthode
● Aller à des conférences
● Déménager
● Ca reste un “problème”...
● ... ou est-ce un problème?
Y’a pas que le boulot dans la vie!!!
Having
Fun
Au fil du temps
Role-Game your Code!
Une idée du PO
On joue l'exécution du programme
Jeu de rôle
On dévoile l’architecture technique en s’amusant
Faire du code
Responsable
Au fil du temps
Compassionate coding
● Optimiser
○ Valeur
○ Plaisir
○ Impact Social
○ Impact Environnemental
● Ralentir
Le code et son impact
● Bug Free by Design
● Yagni
● Dead Code
● Open/Close
● Easy to change
● Fast ( code + tests)
● Sobriété
○ mémoire
○ cycles CPU
○ taille déploiement
Agile
Crafter
Au fil du temps
Step by step
Not only working software,
but also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships

Weitere ähnliche Inhalte

Ähnlich wie 10 ans de Code (Agile Bordeaux 2019).pptx

Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeTelecomValley
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...DC CONSULTANTS
 
Écrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet DrupalÉcrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet DrupalSymetris
 
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 lyonClement Bouillier
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgileAgile Tour 2009 Québec
 
Le gameday...un concept devopsludique
Le gameday...un concept devopsludiqueLe gameday...un concept devopsludique
Le gameday...un concept devopsludiqueEspritAgile
 
Level up your ci-cd experience
Level up your ci-cd experienceLevel up your ci-cd experience
Level up your ci-cd experienceFrederic Leger
 
Faire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxFaire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxVISEO
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
Lean & Agile UX - afterwork Axance
Lean & Agile UX - afterwork AxanceLean & Agile UX - afterwork Axance
Lean & Agile UX - afterwork AxanceAlexandre Jubien
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 
Des jeux et des devops
Des jeux et des devopsDes jeux et des devops
Des jeux et des devopsFrederic Leger
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developerAlice Barralon
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesEric SIBER
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
Pizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberHervé Leclerc
 
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 2013Xavier NOPRE
 
TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022martinsson
 

Ähnlich wie 10 ans de Code (Agile Bordeaux 2019).pptx (20)

Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
 
Écrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet DrupalÉcrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet Drupal
 
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
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes Agile
 
Le gameday...un concept devopsludique
Le gameday...un concept devopsludiqueLe gameday...un concept devopsludique
Le gameday...un concept devopsludique
 
Level up your ci-cd experience
Level up your ci-cd experienceLevel up your ci-cd experience
Level up your ci-cd experience
 
Faire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxFaire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxx
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
Lunch learn 5 sep2013
Lunch learn 5 sep2013Lunch learn 5 sep2013
Lunch learn 5 sep2013
 
Lean & Agile UX - afterwork Axance
Lean & Agile UX - afterwork AxanceLean & Agile UX - afterwork Axance
Lean & Agile UX - afterwork Axance
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
 
Des jeux et des devops
Des jeux et des devopsDes jeux et des devops
Des jeux et des devops
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developer
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiques
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
Pizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumber
 
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
 
TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022
 

Mehr von Guillaume Saint Etienne

Ecologie du Logiciel (Craft Luxembourg 2022).pdf
Ecologie du Logiciel (Craft Luxembourg 2022).pdfEcologie du Logiciel (Craft Luxembourg 2022).pdf
Ecologie du Logiciel (Craft Luxembourg 2022).pdfGuillaume Saint Etienne
 
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...Guillaume Saint Etienne
 
des algoritmes et des hommes (ethique et code).pdf
des algoritmes et des hommes (ethique et code).pdfdes algoritmes et des hommes (ethique et code).pdf
des algoritmes et des hommes (ethique et code).pdfGuillaume Saint Etienne
 
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdfLa crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdfGuillaume Saint Etienne
 
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptxGuillaume Saint Etienne
 
Il n’y a pas de bons développeurs.pptx
Il n’y a pas de bons développeurs.pptxIl n’y a pas de bons développeurs.pptx
Il n’y a pas de bons développeurs.pptxGuillaume Saint Etienne
 
Vendredi Tech_ la programmation fonctionnelle.pptx
Vendredi Tech_ la programmation fonctionnelle.pptxVendredi Tech_ la programmation fonctionnelle.pptx
Vendredi Tech_ la programmation fonctionnelle.pptxGuillaume Saint Etienne
 
Feedback on DDD Europe - short -event storming.pptx
Feedback on DDD Europe - short -event storming.pptxFeedback on DDD Europe - short -event storming.pptx
Feedback on DDD Europe - short -event storming.pptxGuillaume Saint Etienne
 
Crise agile chez les développeurs (frug agile 2020)
Crise agile chez les développeurs (frug agile 2020)Crise agile chez les développeurs (frug agile 2020)
Crise agile chez les développeurs (frug agile 2020)Guillaume Saint Etienne
 
Electronic Music and Software Craftsmanship: analogue patterns.
Electronic Music and Software Craftsmanship: analogue patterns.Electronic Music and Software Craftsmanship: analogue patterns.
Electronic Music and Software Craftsmanship: analogue patterns.Guillaume Saint Etienne
 

Mehr von Guillaume Saint Etienne (20)

Ecologie du Logiciel (Craft Luxembourg 2022).pdf
Ecologie du Logiciel (Craft Luxembourg 2022).pdfEcologie du Logiciel (Craft Luxembourg 2022).pdf
Ecologie du Logiciel (Craft Luxembourg 2022).pdf
 
musique electronique au cinéma.pptx
musique electronique au cinéma.pptxmusique electronique au cinéma.pptx
musique electronique au cinéma.pptx
 
DDD FOR POs.pdf
DDD FOR POs.pdfDDD FOR POs.pdf
DDD FOR POs.pdf
 
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
 
des algoritmes et des hommes (ethique et code).pdf
des algoritmes et des hommes (ethique et code).pdfdes algoritmes et des hommes (ethique et code).pdf
des algoritmes et des hommes (ethique et code).pdf
 
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdfLa crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
 
How we can BUILD.pdf
How we can BUILD.pdfHow we can BUILD.pdf
How we can BUILD.pdf
 
des mutants dans le code.pdf
des mutants dans le code.pdfdes mutants dans le code.pdf
des mutants dans le code.pdf
 
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
 
Il n’y a pas de bons développeurs.pptx
Il n’y a pas de bons développeurs.pptxIl n’y a pas de bons développeurs.pptx
Il n’y a pas de bons développeurs.pptx
 
Living Documentation (TDD, BDD).pptx
Living Documentation (TDD, BDD).pptxLiving Documentation (TDD, BDD).pptx
Living Documentation (TDD, BDD).pptx
 
Agile pour l'echafaud ATT2020.pptx
Agile pour l'echafaud ATT2020.pptxAgile pour l'echafaud ATT2020.pptx
Agile pour l'echafaud ATT2020.pptx
 
Vendredi Tech_ la programmation fonctionnelle.pptx
Vendredi Tech_ la programmation fonctionnelle.pptxVendredi Tech_ la programmation fonctionnelle.pptx
Vendredi Tech_ la programmation fonctionnelle.pptx
 
Feedback on DDD Europe - short -event storming.pptx
Feedback on DDD Europe - short -event storming.pptxFeedback on DDD Europe - short -event storming.pptx
Feedback on DDD Europe - short -event storming.pptx
 
Crise agile chez les développeurs (frug agile 2020)
Crise agile chez les développeurs (frug agile 2020)Crise agile chez les développeurs (frug agile 2020)
Crise agile chez les développeurs (frug agile 2020)
 
My feedback on ddd europe
My feedback on ddd europeMy feedback on ddd europe
My feedback on ddd europe
 
Electronic Music and Software Craftsmanship: analogue patterns.
Electronic Music and Software Craftsmanship: analogue patterns.Electronic Music and Software Craftsmanship: analogue patterns.
Electronic Music and Software Craftsmanship: analogue patterns.
 
Tdd vs SQL
Tdd vs SQLTdd vs SQL
Tdd vs SQL
 
Clean architectures
Clean architecturesClean architectures
Clean architectures
 
Services & Contrats Agiles
Services & Contrats AgilesServices & Contrats Agiles
Services & Contrats Agiles
 

10 ans de Code (Agile Bordeaux 2019).pptx

  • 1. 10 Years Challenge Même équipe, même produits, même code
  • 2.
  • 4. ... et maintenant? Dev ⇨ Dev + 10 “Senior” Même pas mal ^_^
  • 5. Un parcours... riche en rebondissements
  • 6. A la rencontre de l’équipe T O U L O U S E
  • 8. All around the World une place à part!
  • 9. une place à part!
  • 10. Spécificités - Non Medical Device - Une famille de produits (Epics) - Des applications (MVP + Small Releases) - Tous les composants sont partagés sans version spécifique à un produit - Pas de testeur dédiés, le développeur fait tout - Idem “DevOps”
  • 11. L’orga générale ● Le PO est dans le bureau à coté ( + daily meeting) ● Product Support Engineer sur le plateau ( + daily meeting) ● Le Backlog ● Les Backlog Items ● Le dashboard ( Physique -> Numérique)
  • 12. Agile à notre façon
  • 13. Agile à notre façon
  • 14. Definition of Done Quand peut-on fermer un Backlog Item ? ● Une définition faite par l’équipe ● En évolution régulière ● Tient compte des outils à disposition ● Liée aux jobs de l’intégration continue
  • 15. La piqûre de rappel à Gilles Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
  • 18. Scrum ? Kanban ? What else ?
  • 19. Expérience du Daily Open Space
  • 20. Estimate / No Estimate
  • 21. Dashboard timing releases Utilisé par le PO pour communiquer aux clients et au management
  • 22. Pair / Mob programming
  • 23. Responding to change ? Au fil du temps
  • 24. Un backlog en évolution permanente ● Une release = 1 groupe de BI ● Types de BI ○ User Need, ○ Bug Fix, ○ Design Quality, ○ Nouvelle Compatibilité avec système(s) VARIAN
  • 25. Changing code How can we evolve our systems towards clean architectures and designs in an incremental Agile way? https://vimeo.com/68215570 Robert C. Martin: Clean Architecture and Design
  • 26. Nos changements, pas leur changements Oui aux changements voulus par (et discutés avec) notre PO ✅ Non aux changements des librairies tierce parties ❌ 1. Nous codons les nôtres ⇨ jamais mieux servi ... 2. Nous nous abstrayons les autres a. Jamais instanciées directement b. Toujours cachées à travers une API de notre cru c. Toujours doublées dans les tests (Mocks, Stubs, Spy, Fake et Dumb)
  • 27. Architecture and Decisions “the job of an architect is to build a structure that allows decisions to be delayed as long as possible.” A good architect maximizes the number of decisions not made. Bob C. Martin
  • 28. Composants et composabilité ● Dépendances maîtrisées ● Injection de Dépendance ● Architecture hexagonale ○ Alistair Cockburn, 2005 https://stefanoalletti.wordpress.com/2017/10/27/hexagonal-architecture/
  • 29. Toujours le même code ● Fondations solides ● Socle Commun = Abstractions ● Découpage intelligent ○ pas de “couches” ● Peu de Breaking Changes ● Ré-utilisabilité ● Richesse de l’expérience accumulée
  • 30. Contexte et évolutions techniques ● .Net 2.0 ⇒ .Net 4.5 ● Xaml ⇒ Web ● Web API : WCF ⇒ asp.net MVC ⇒ Nancy ● Web User Interface ( HTML + jQuery) ● Chromium ● Vue ⇒ Angular ● Signal R ● ⇒ .Net Core
  • 31. Je n’aurai pas été jusque là si...
  • 32. Branch(es) : an Anti Agile Pattern Trunk Based Programing shorturl.at/ekDRY https://adtmag.com/articles/2017/03/14/agility-code-branching.aspx
  • 35. User Stories Les plus petites possible Conversation entre devs et PO Doit apporter une valeur à l’utilisateur ● As ● When ● Then 🙅 Design Quality (paye ta dette)
  • 36. Ubiquitous Language En 1944, dans Poésie 44, (Sur une philosophie de l'expression), Albert Camus écrivait: " Mal nommer un objet, c'est ajouter au malheur de ce monde ".
  • 37. DDD : the King of the Domain is the Model
  • 38. du BI au BDD ● On essaye d’écrire des spécifications exécutables qui reprennent toutes les exigences du Bi ● BI ⇒ Besoin Utilisateurs ● BDD ⇒ exigences métiers et techniques qui font partie de la résolution du Besoin Utilisateur
  • 39. Executable Specifications aka BDD Gherkin / Cucumber ⇒ Specflow/ C# ⇒ NUnit On écrit nos premiers steps naïvement On se pose des questions sur la manière de formuler On se pose la question de le ré-utilisabilité De l’expression des concepts à l’écriture d’une forme abstraite dans le code Au début on apprenait de 0 Seul au monde ?
  • 40. Who should read BDD executable specifications? Everyone ? Developers !!! Product Owner => ● Code is fluent enough, ● DDD is in place, ● Event Storming performed, ● so tests are “human aware readable”
  • 41. Je n’aurai pas été jusque là si...
  • 42. Prendre du temps pour en gagner
  • 44. TDD Design and Write Test first Think how your code can be tested in isolation How you can write a test only by re using existing steps
  • 45. Writing tests Tests should: ● Respond to behavior changes. ● Not respond to structure changes. ● Be cheap to write. ● Be cheap to read. ● Be cheap to change. https://medium.com/@kentbeck_7670/programmer-test-principles-d01c064d7934
  • 46. TDD efficace Tests should: ● Minimize programmer waiting (so... run fast!). ● Run reliably. ● Predict deployability (not only work on my machine). https://medium.com/@kentbeck_7670/programmer-test-principles-d01c064d7934
  • 47.
  • 48. Continuous Integration ● Mise en place par l’équipe ● Essais successifs ● ... loin d’être parfait
  • 49. Fait Maison = fait avec amour Résistant à la mode C’est à nous! YAGNI (adapté à ce dont on a uniquement besoin)
  • 50. Je n’aurai pas été jusque là si...
  • 51.
  • 53. Processus Qualité Mondial et Dérivations
  • 54. Scriptable Generation of Documentation Contexte: Minor Release Documentation (incremental) Sources de données: ● Backlog produit (TFS / JIRa / ...) ● Source repositories ( TFS: changesets, labels, reviewers, approvers, ...) ● Code artefacts (MS Build, proj files, target files) ● Specs Sources (only BDD can do it!) ● Tests artefacts (Execution Results, Specflow files, Attributes ) ● Tests environnements (MVs...) ● Text templates XML -> XSL -> XHTML -> PDF -> signed PDF
  • 55. Je n’aurai pas été jusque là si...
  • 56.
  • 57. Living Documentation No comments!!!! Fluent Code Documented Abstractions & Design Readable Tests Executable Specifications with BDD
  • 58. Résister au temps Au fil du temps
  • 59. Le temps est rarement un ami ● Limites de la mémoire ● Quel support pour se souvenir? ○ Commentaires? ○ Documentation? ○ Source code (repository) ○ Tests ● Se relire ● Se comprendre ● Être compris ● Être stable
  • 60. Pourquoi / pour qui j’écris du code - Pour les clients?
  • 61. ● Minimiser la souffrance ● Pour l’équipe ? ● Pour moi ? https://compassionatecoding.com/ April Wensel
  • 62. Global Ownership of Code Conception émergente ... pas toujours!
  • 63. Kill the routine ● Nouveaux Produits / Nouvelles technos ● Ateliers ● Kata ● Changements de méthode ● Aller à des conférences ● Déménager ● Ca reste un “problème”... ● ... ou est-ce un problème? Y’a pas que le boulot dans la vie!!!
  • 65. Role-Game your Code! Une idée du PO On joue l'exécution du programme Jeu de rôle On dévoile l’architecture technique en s’amusant
  • 67. Compassionate coding ● Optimiser ○ Valeur ○ Plaisir ○ Impact Social ○ Impact Environnemental ● Ralentir
  • 68. Le code et son impact ● Bug Free by Design ● Yagni ● Dead Code ● Open/Close ● Easy to change ● Fast ( code + tests) ● Sobriété ○ mémoire ○ cycles CPU ○ taille déploiement
  • 70. Step by step Not only working software, but also well-crafted software Not only responding to change, but also steadily adding value Not only individuals and interactions, but also a community of professionals Not only customer collaboration, but also productive partnerships