que le code de bonne qualité



Le KoD 2 MoVeZ k LiTé
sa coupte plut chaire
Ou comment la qualité peut aider à rendre un SI moins coûteux


Sources

Sources

5 ans d'artisanat du code
Culture Code de Octo
Clean Code de Robert C. Martin
Formations et veille techno
Constat de départ



Constat

Entendu à la DSI


Il y a un bug sur le site, tu peux regarder stp ?
Constat

En fin de journée


On rajoute un if
- 2 jours
- Pas pérenne
Refacto
- 4 jours
- Pérenne
Dilemme cornélien





Dilemme
Les 3 petits cochons

Besoin : se loger
- 5000 €
- 1 semaine
- 100 000 €
- 1 an

Dilemme
Les 3 petits cochons

Besoin : se loger
5000 x 4 =
20.000 €/an
100 000 / 20 =
5000 €/an

Dilemme
Besoin : transporter mes affaires
Plutôt GUCCI ou GUCH ?

GUCCI
- 150 €
- 1 mois
GUCH
- 10 €
- Aujourd'hui

Dilemme
Besoin : transporter mes affaires
Plutôt GUCCI ou GUCH ?

GUCCI
Vit mini 10 ans
150 € / 10 ans =
15 €/an
GUCH
Vit 6 mois
10 x 2 =
20 €/an

Dilemme
La qualité, ça coûte moins cher

Prendre en compte le coût aujourd'hui, mais aussi le coût sur le long-terme
Une application faite à la va-vite ne sera jamais aussi stable à long terme qu'une appli faite en prenant le temps



Métier : artisan des internets

Artisan des internets
Bob, le bricoleur du web

Les outils
Le produit final
L'artisan
Rigueur & exigence

Artisan des internets
Objectif : des logiciels bien faits

Prendre le temps de réfléchir
Prendre le temps de bien faire
Créer un produit qui résiste au temps
Un développeur est un artisan

Artisan des internets
Objectif : des logiciels bien faits
Corrective
Evolutive
Mon appli va vivre
alors je fais en sorte que son évolution soit la plus facile possible

La maintenabilité


Reconversion
Analyste financier




Analyste financier
La dette technique
Postulat de départ
Mon application, mon code, il va vivre et évoluer.

Analyste financier
La dette technique

Ward Cunningham
"Sortir une première itération de code, c'est comme s'endetter."
Le temps que je ne passe pas aujourd'hui à produire une solution maintenable, je vais devoir le rembourser plus tard avec des intérêts
1$ investi aujourd'hui dans la qualité de mon code m'aurait coûté 100$ quelques mois plus tard

Analyste financier
La dette technique
1$ non-investi aujourd'hui dans la qualité de mon code coûtera 100$ quelques mois plus tard
De ce fait, on arrive à un moment où il est moins coûteux de faire une refonte de 0 que de faire évoluer l'appli existante
$
$
$
$
$
$
$
Temps
Coût
$
$
$
Temps initial non-investi
Intérêts
Comparaison entre une appli rushée et une appli où on a pris le temps




Comparaison
Appli rushée
Avantages
Inconvénients
- Moins chère sur le court-terme
- La fonctionnalité est dispo rapidement
- Conception qui ne prévoit pas tous les cas et peu d'évolution
- Chaque modification demande un effort conséquent
- Non maîtrise des données (bugs potentiellement très coûteux)
- Effort conséquent pour comprendre le code
- Developer experience négative, régression pro, démissions
- Perte de la connaissance technique & fonctionnelle
- Plus chère sur le long-terme


Comparaison
Appli où l'on a pris le temps
Avantages
Inconvénients
- Plus flexible et donc plus maintenable
- Modif ou ajout à moindre coût
- Moins de bugs, moins de temps à ne pas développer des fonctionnalités
- Architecture plus facile à appréhender
- Developer experience positive, forte motivation
- Émulation dans l'équipe
- Plus d'inertie à court terme
- Les fonctionnalités ne sont pas disponibles tout de suite

Du code de bonne qualité ?




Qualité du code

Objectif : éviter ce type de réaction

Qualité du code
Comment on reconnaît un code de qualité ?

Repose sur des principes tels que
- SOLID
- DRY (Don't Repeat Yourself)
- WET (Write Everything Twice)
- AHA (Avoid Hasty Abstractions)
- KISS (Keep It Stupid Simple)
- YAGNI (You Ain't Gonna Need It)

Qualité du code
Comment on reconnaît un code de qualité ?
Respect des standards de la communauté
- PHP PSR (PHP Standard Recommandations)
- Bonne pratiques du framework
- (Symfony par exemple)



Qualité du code
Comment on reconnaît un code de qualité ?
Respect des conventions
- d'écriture du code
- de nommage
- d'architecture
- etc.
Définissent une manière commune de travailler ensemble


Qualité du code
Comment on reconnaît un code de qualité ?
- Maîtrise des données (typage, visibilité)
- Prédictible
- Lisible
- Compréhensible sur la forme & sur le fond
- A jour avec les fonctionnalités du langage & des frameworks utilisés
- Utilisation de design patterns
Attention, les tests c'est un bon indice, mais pas une preuve



Qualité du code
Comment on reconnaît un code de qualité ?
On peut aussi s'aider de systèmes d'analyse statique du code

PHP Stan / Psalm

SonarQube

Qualité du code
L'objectif ultime du code de qualité
Le découplage permet la flexibilité
La clarté de l'intention
La friction cognitive la plus faible




Qualité du code
Ne pas oublier le facteur humain
Impact sur le moral des devs
Impact sur le recrutement
Impact sur l'apport analytique d'un besoin à un ensemble métier

Tous concernés, tous responsables




Tous concernés
Recherche de qualité
Chacun amène sa pierre à l'édifice
Chercher l'amélioration en continu
Produit de l'ensemble de l'équipe



Tous concernés
Je prends conscience du fonctionnement de la dette technique
Je prends conscience que l'équipe doit accorder du temps pour rembourser sa dette, et que c'est un investissement pour le futur
J'encourage l'équipe à chercher la qualité
Je suis manager/CdP/PO




Tous concernés
Je prends conscience que mon métier c'est apporter de la valeur, et que je peux en être fier
Je peux être force de proposition
Je recherche la qualité
Je suis dev
Je prends le temps du travail bien fait
Je sensibilise mon entourage





Tous concernés
Mise en place d'un référentiel de conventions
Outil de gestion de projet permettant de gérer sa dette technique, via des tickets par exemple
Pair programming
Bonus
Meetups internes et/ou externes
Rigueur commune et individuelle
Process de validation des MR
Pourquoi ce sujet ?




Pourquoi ce sujet ?
Problème récurrent dans toutes les DSI


Pourquoi ce sujet ?
Comment je réduis mes coûts ?
Côté manager
Vision court-terme contre productive


Pourquoi ce sujet ?
On entend souvent les devs râler
Côté dev
Si je me permets de râler, alors je me dois d'être capable de proposer une solution.


Pourquoi ce sujet ?
Développeurs challengés
Un ennemi commun
Retour de l'être aimé
Viennent le matin avec plaisir
Sont fidélisés et chercheront la meilleur solution au problème posé
Ne détestent pas leur manager

Bilan



Crédits

Icônes : Flaticon & Noun Project
Images d'illustration : Dall-E (IA de génération d'image)
Memes : Moi via MemeGenerator ou GIMP

Twitter / Gitlab : AndoniLarz
Questions ?

Merci à l'AFUP !
Merci à Adrien !
Merci à Conserto de sponsoriser le meetup !



Pour toute question commerce, contactez Aurélie Oudry
Pour toute question RH, contactez Laurie Avignon
aurelie.oudry@conserto.pro
laurie.avignon@conserto.pro
Instant tech - Code quality
By Andoni Larzabal
Instant tech - Code quality
- 121