10 Years Challenge
Même équipe, même produits, même code
10 ans de Code (Agile Bordeaux 2019).pptx
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
10 ans de Code (Agile Bordeaux 2019).pptx
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...
10 ans de Code (Agile Bordeaux 2019).pptx
...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...
10 ans de Code (Agile Bordeaux 2019).pptx
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

Contenu connexe

PDF
Faire la conception en équipe sans architecte, non mais allô quoi ?
PDF
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
PDF
Deux ans de développement Agile, erreurs et succès
ODP
AT2010 Mise place d'un projet Agile
ODP
Agile Tour 2010 - Mise en place d'un projet agile
PPTX
Human Talks Grenoble - 11/12/2012 - TDD
PDF
Mockito - Design + tests par Brice Duteil
PDF
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Faire la conception en équipe sans architecte, non mais allô quoi ?
Gérer l'inconnu avec peu de moyens par le développement itératif - L'agili...
Deux ans de développement Agile, erreurs et succès
AT2010 Mise place d'un projet Agile
Agile Tour 2010 - Mise en place d'un projet agile
Human Talks Grenoble - 11/12/2012 - TDD
Mockito - Design + tests par Brice Duteil
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD

Similaire à 10 ans de Code (Agile Bordeaux 2019).pptx (20)

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

Plus de Guillaume Saint Etienne (20)

PPTX
Domain Driven Design expliqué aux product owners
PDF
Atelier Mob Programming_ tester dans l'hexagone, Adapters et Containers.pdf
PDF
Ecologie du Logiciel (Craft Luxembourg 2022).pdf
PPTX
musique electronique au cinéma.pptx
PDF
DDD FOR POs.pdf
PDF
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
PDF
des algoritmes et des hommes (ethique et code).pdf
PDF
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
PDF
How we can BUILD.pdf
PDF
des mutants dans le code.pdf
PPTX
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
PPTX
Il n’y a pas de bons développeurs.pptx
PPTX
Living Documentation (TDD, BDD).pptx
PPTX
Agile pour l'echafaud ATT2020.pptx
PPTX
Vendredi Tech_ la programmation fonctionnelle.pptx
PPTX
Feedback on DDD Europe - short -event storming.pptx
PDF
Crise agile chez les développeurs (frug agile 2020)
PPTX
My feedback on ddd europe
PDF
Electronic Music and Software Craftsmanship: analogue patterns.
Domain Driven Design expliqué aux product owners
Atelier Mob Programming_ tester dans l'hexagone, Adapters et Containers.pdf
Ecologie du Logiciel (Craft Luxembourg 2022).pdf
musique electronique au cinéma.pptx
DDD FOR POs.pdf
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
des algoritmes et des hommes (ethique et code).pdf
La crise Agile chez les Developpeurs (AGrenoble2019) (1).pdf
How we can BUILD.pdf
des mutants dans le code.pdf
_(V3.0) Aux sources de la simplicité Bordeaux 2022.pptx
Il n’y a pas de bons développeurs.pptx
Living Documentation (TDD, BDD).pptx
Agile pour l'echafaud ATT2020.pptx
Vendredi Tech_ la programmation fonctionnelle.pptx
Feedback on DDD Europe - short -event storming.pptx
Crise agile chez les développeurs (frug agile 2020)
My feedback on ddd europe
Electronic Music and Software Craftsmanship: analogue patterns.
Publicité

10 ans de Code (Agile Bordeaux 2019).pptx

  • 1. 10 Years Challenge Même équipe, même produits, même code
  • 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
  • 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...
  • 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...
  • 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