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

Made with Slides.com