Histoire secrète des bonnes pratiques

Après 70 ans de développement logiciel

Vincent Poulailleau

Introduction

Sommaire

  • Introduction
  • Refactoring
  • Architecture
  • Ressources
  • Conclusion

Vincent Poulailleau

  • Indépendant
  • Formateur (Python mais pas que)
  • Enseignant bac+1 à bac+5 (Python mais pas que)
  • Ingénieur (Python mais pas que)
  • @vpoulailleau un peu partout sur internet
qrcode https://www.linkedin.com/in/vpoulailleau/

www.linkedin.com/in/vpoulailleau/

qrcode https://www.lecalamar.fr/posts/2025-11-02-pyconfr-calamars-et-pythons/

www.lecalamar.fr/posts/2025-11-02-pyconfr-calamars-et-pythons/

Nous sommes débutants !

Il y a aujourd'hui

  • plus de 30 millions de développeurs professionnels dans le monde
  • plus de 50 millions de développeurs dans le monde

Et au début des années 1950 : ≃ 1 développeur

Nous sommes débutants !

Faisons un peu de mathématiques, imaginons une croissance exponentielle

  • Si 50 millions : le nombre de développeurs a doublé 25,6 fois en 70 ans
  • Si 30 millions : 24,8 fois en 70 ans
  • Si 100 millions : 26,6 fois en 70 ans

En moyenne, le nombre de développeurs a doublé tous les 2,8 ans

Nous sommes débutants !

Hypothèse conservatrice :

  • La croissance du nombre de développeurs ralentit
  • Disons : le nombre de développeurs double tous les 5 ans

Nous sommes débutants !

Le nombre de développeurs double tous les 5 ans

À chaque instant, la moitié des développeurs a moins de 5 ans d'expérience !

Et seulement 25% des développeurs a plus de 10 ans d'expérience !

Et 6% des développeurs a plus de 20 ans d'expérience !

Et 1% des développeurs a plus de 30 ans d'expérience !

Est-ce important ?

Le logiciel est partout

  • Spatial, médical, IA, internet, smartphone…
  • Grille pain, ampoule, serrure, frigo…
  • La pédale de frein de votre voiture…

Votre frein a peut-être été conçu par un débutant !

Mais alors, que faire ?

Profitons de l'expérience des anciens

  • Les technologies évoluent
  • Les fondamentaux restent

Le secret

Je vous dévoilerai le grand secret à la fin de la conférence

Refactoring

Refactoring

Martin Fowler

Any fool can write code that a computer can understand.

Good programmers write code that humans can understand.

Refactoring

Pratique de développement logiciel

Améliorer la structure interne du code

Sans en changer le comportement externe

Refactoring

Refactoring

On se lance à le modifier ?

Sans git ?

Sans tests ?

Refactoring

Vous voulez renommer une variable ?

  • On la renomme
  • On relance tous les tests
    • On vérifie que tout passe
    • Vos tests sont lents ⇒ certainement un problème d'architecture
  • On committe !

Debug

Codez par petites étapes

Oubliez les sessions de debug

Testez la petite modification depuis le dernier commit

Si KO ⇒ jetez et recommencez !

TCR : Test && Commit || Revert

Ce temps est révolu

Image d'une session de debug dans les années 80

Renommage

En anglais…

Un meilleur nom pour cette fonction ?

Renommage

Principale source de bug en entreprise

Le nommage des choses, des trucs, des bidules, des machins (concrètement des variables, des fonctions, des classes, des concepts…)

Phil Karlton

There are only two hard things in Computer Science: cache invalidation and naming things.

Extraction de fonctions

Au final

Grady Booch

Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control.

Dette technique

tech debt while building a house

Plus on attend pour corriger le tir, plus ça coûte cher !

Refactoring

Objectif : un code plus testable, maintenable et évolutif

Méthodes : livre « Refactoring » de Martin Fowler

Évitez l'accumulation de dette technique

Architecture

Exemple de code

database.py

Exemple de code

services.py

Diagramme de classe

Diagramme de classe de l'exemple de code

Problèmes ?

  • services.py dépend de database.py
  • Impossible de tester services.py sans une vraie base de données ou un mock complexe
  • Notre logique métier dépend d'un détail technique concret (persistance SQL) au lieu d'une interface abstraite
  • Couplage fort du métier et de l'infrastructure (API sqlalchemy, transactions, async et autres choix)
  • Risque architectural : ces mauvais choix pourraient devenir une habitude et s'accumuler

Architecture

try bad architecture

Solution

Diagramme de classe de l'exemple de code de la solution

Solution

database.py

Solution

services.py

Solution

fake_database.py

Principes SOLID

Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion

  • S : une classe a une seule responsabilité, une seule raison de changer
  • O : ouvert à l'extension, fermé à la modification
  • L : une implémentation doit pouvoir remplacer son abstraction sans surprise
  • I : plusieurs petites interfaces ciblées plutôt qu'une interface trop large
  • D : dépendre d'abstractions, pas de détails techniques concrets

Architecture

Objectif : un code plus testable, maintenable et évolutif

Principes connus :

  • SOLID
  • clean architecture, hexagonal architecture, ports and adapters
  • YAGNI
  • KISS
  • DRY

Ressources

Ressources

Il existe de nombreux documents à disposition

  • Des livres
  • Des articles de blog
  • Des vidéos
  • Des podcasts

Des idées de mots clés : clean code, refactoring, clean architecture, software craftsmanship…

Livres

Couverture du livre Clean Code de Robert C. Martin

Clean Code

Robert C. Martin

2008

2025

Des principes pour écrire au quotidien un code lisible, maintenable et testable.

Couverture du livre Refactoring de Martin Fowler

Refactoring

Martin Fowler

2002

2019

Un catalogue de transformations de code pour améliorer sa structure sans changer son comportement.

Couverture du livre Clean Architecture de Robert C. Martin

Clean Architecture

Robert C. Martin

2017

2017

Des règles pour concevoir une architecture orientée métier, indépendante des frameworks.

Couverture du livre Test-Driven Development by Example de Kent Beck

Test-Driven Development by Example

Kent Beck

2002

Une introduction pratique au TDD à travers des exemples simples et progressifs.

Couverture du livre Growing Object-Oriented Software, Guided by Tests de Steve Freeman et Nat Pryce

Growing Object-Oriented Software, Guided by Tests

Steve Freeman et Nat Pryce

2009

Une conception objet guidée par les tests, du besoin métier au code.

Couverture du livre Working Effectively with Legacy Code de Michael Feathers

Working Effectively with Legacy Code

Michael Feathers

2004

Des techniques pour tester et faire évoluer un code legacy en sécurité.

Couverture du livre Patterns of Enterprise Application Architecture de Martin Fowler

Patterns of Enterprise Application Architecture

Martin Fowler

2002

Des patrons d'architecture pour organiser les applications d'entreprise.

Couverture du livre Design Patterns de Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides

Design Patterns

Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides

1994

Le livre classique du gang of four sur les design patterns

Couverture du livre Head First Design Patterns de Eric Freeman et Elisabeth Robson

Head First Design Patterns

Eric Freeman et Elisabeth Robson

2004

2021

Un livre pédagogique sur les design patterns, utilisant une approche visuelle et interactive

Couverture du livre The Pragmatic Programmer de Andrew Hunt et David Thomas

The Pragmatic Programmer

Andrew Hunt et David Thomas

1999

2019

Un recueil de pratiques concrètes pour mieux concevoir, coder et collaborer.

Couverture du livre Domain-Driven Design de Eric Evans

Domain-Driven Design

Eric Evans

2003

Une approche stratégique et tactique pour modéliser des domaines métier complexes.

Couverture du livre Fluent Python de Luciano Ramalho

Fluent Python

Luciano Ramalho

2015

2022

Un guide avancé pour écrire du Python idiomatique, expressif et performant.

Couverture du livre Architecture Patterns with Python de Harry J.W. Percival et Bob Gregory

Architecture Patterns with Python

Harry J.W. Percival et Bob Gregory

2020

Un guide pratique pour structurer des applications Python avec DDD, tests et architectures découplées.

Vidéos

Entrée de la vidéo Coding better world together avec Uncle Bob

Coding better world together

Clean code with Uncle Bob (playlist YouTube, 8 heures)

Vidéos Raymond Hettinger

Raymond Hettinger

Core developer Python (4600 commits !), formateur Python, a fait plein d'excellentes conférences (recherche YouTube)

Vidéos Arjan codes

Arjan Codes

Vidéos et tutoriels sur Python, les design patterns, les choix d'architecture… (chaîne YouTube) par Arjan Egges

Vidéos PyVideo.org

PyVideo.org

Vidéos des conférences Python (https://pyvideo.org/) avec plus de 20 000 vidéos

Podcasts

Python Bytes

Real Python Podcast

Talk Python To Me

Et toujours pas de podcast Python en Français ?

Faux livres

Couverture du faux livre Agile

Micro-management agile de projet

Le développement en cascade avec des stand-ups

Couverture du faux livre Motifs trompeurs

Éviter les motifs trompeurs

Tu devras

Couverture du faux livre Documentation

Excuses pour ne pas écrire la documentation

Couverture du faux livre Code rapide

Bouger vite et casser des choses

Guide du développement fragile

Couverture du faux livre Git

Messages inutiles de commit

git commit -m "changes"

Couverture du faux livre Suffisamment bien

Suffisamment bien pour livrer

Laisser votre bébé partir du nid, pour le pire ou le meilleur

Couverture du faux livre Intelligence artificielle

Coder avec l'intelligence artificielle

7ème édition

Couverture du faux livre Ça marche

Essayer des choses jusqu'à ce que ça fonctionne

Couverture du faux livre Optimisation

Résoudre des problèmes imaginaires de mise à l'échelle

À l'échelle

Couverture du faux livre Noms de variables

Nommer les variables

La partie la plus difficile du codage

Conclusion

Déjà !?

70 ans de développement logiciel

La moitié des devs a moins de 5 ans d'expérience

Les technologies évoluent

Les fondamentaux restent

Les leçons restent

Le secret

le secret de kung fu panda

Le secret c'est qu'« il n'y a pas de secret »

Conclusion

Profitez de l'expérience des anciens !

Documentez vous

La meilleure façon d'aller vite , tout au long d'un projet : garder le code propre

https://histoiresecrete.lecalamar.fr