21
Software Craftsmanship : le chaînon manquant de l’agilité ? @CharlesBouttaz @NicoRuffel Photo John Alexander Calderon

Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?

Embed Size (px)

Citation preview

Software Craftsmanship : le chaînon manquant

de l’agilité ?@CharlesBouttaz @NicoRuffel

Photo John Alexander Calderon

Manifeste & ValeurAGILE

documentation exhaustive < des logiciels opérationnels

les processus et les outils < les individus & interactions

négociation contractuelle < collaboration avec les clients

le suivi d’un plan < adaptation au changement

CRAFTSMANSHIP

+ des logiciels bien conçus

+ communauté de professionnels

+ des partenariats productifs

+ ajout constant de la valeur

12 Principes sous-jacent1 Notre plus haute priorité est de satisfaire le client en livrant rapidement et régulièrement des fonctionnalités à grande valeur ajoutée.

2 Accueillez positivement les changements de besoins,même tard dans le projet.

Les processus Agiles exploitent le changement pour donner un avantage compétitif au client.

3 Livrez fréquemment un logiciel opérationnel avec des cycles de quelques semaines à quelques mois et une préférence pour les plus

courts.

4 Les utilisateurs ou leurs représentants et les développeurs doivent travailler ensemble quotidiennement tout au long du projet.

5 Réalisez les projets avec des personnes motivées.

Fournissez-leur l’environnement et le soutien dont ils ont besoin et faites-leur confiance pour atteindre les objectifs fixés.

6 La méthode la plus simple et la plus efficace pour transmettre de l’information

à l'équipe de développement et à l’intérieur de celle-ci est le dialogue en face à face.

7 Un logiciel opérationnel est la principale mesure d’avancement.

8 Les processus Agiles encouragent un rythme de développement soutenable. Ensemble, les commanditaires, les développeurs et les

utilisateurs devraient être capables de maintenir indéfiniment un rythme constant.

9 Une attention continue à l'excellence technique et à une bonne conception renforce l’Agilité.

10 La simplicité – c’est-à-dire l’art de minimiser la quantité de travail inutile – est essentielle.

11 Les meilleures architectures, spécifications et conceptions émergent d'équipes autoorganisées.

12 À intervalles réguliers, l'équipe réfléchit aux moyens de devenir plus efficace, puis règle et modifie son comportement en conséquence.

Des pratiques, des techniques, des outils !● Clean Code

● Simple Design

● Refactoring

● SOLID

● Pair programming

● Integration continue

● DevOps

● Prog fonctionnelle

● Root cause analysis

● Object Oriented Design

● Livraison continue

● Mob programming

● TDD

● ATDD

● BDD

● DDD

Les pratiques ne sont que des outils !

Notre plus haute priorité est de satisfaire le client

en livrant rapidement et régulièrement

des fonctionnalités à grande valeur ajoutée.

Tests automatisés, Test Driven Development

● Automatisé : fiabilité & gain de temps

● TDD : couverture, testable,

documentation, qualité

FEEDBACK

Les tests face à la dure réalité● C’est difficile !

○ Code hostile

○ Besoin de bonnes notions de design

● Les mauvais tests coûtent cher

○ Instables, trop longs, trop liés a l’implémentation

● Difficile de “vendre“ le test unitaire

COURAGE

Accueillez positivement les changements de besoins, même tard

dans le projet. Les processus Agiles exploitent le changement

pour donner un avantage compétitif au client.

Intégration continueChaque tâche de développement terminée est automatiquement compilée, testée et

intégrée à l’application

Les plus...

Tous les tests sont repassés à chaque tâche terminée

Détection rapide des problèmes d'intégration

La version courante est toujours disponible

FEEDBACK

La dure réalité de l’intégration continueCoût de l'automatisation

Plate-forme d’intégration et lien avec le Système de Management du Code

Déploiement en un clic !

Construction de la suite de tests

10 minutes build

Maintenir la rapidité et fiabilité du feedback

Nouvelle organisation du travail : intégration CONTINUE

COURAGE

Accueillez positivement les changements de besoins, [...]

pour donner un avantage compétitif au client.

Une attention continue à l'excellence technique et

à une bonne conception renforce l’Agilité.

Les meilleures architectures, spécifications et

conceptions émergent d'équipes auto-organisées.

La simplicité [...] est essentielle.

Architecture : Big Design Up Front Définir l’architecture et les technologies utilisées avant la phase de développement.

BDUF + Agile = Problèmes

● Nécessite des besoins fonctionnels figés

● Choix et décisions les plus impactant au pire moment

● Les erreurs coûtent cher

Architecture : Design émergentMinimum d’architecture au début.

Faire émerger le design lors du développement via le refactoring.

Refactoring = améliorer le code : factorisation, encapsulation, cohésion, couplage, etc.

Design souple et évolutif

● Maintenabilité

● Extensibilité

● Prendre les décisions quand on a le plus d’information

SIMPLIC

ITÉ

Les pièges du Design émergent

Ne veut pas dire qu’on ne fait plus d’architecture !

On ne refait pas toute l’application à chaque fonctionnalité !

Difficile à faire accepter

COURAGE

Une attention continue à l'excellence technique et à une bonne

conception renforce l’Agilité.

La méthode la plus simple et la plus efficace pour transmettre de

l’information à l'équipe de développement et à l’intérieur de

celle-ci est le dialogue en face à face.

Travail en binôme (Pair Programming)Les tâches de conception / programmation sont abordées à deux

COMMUNIC

ATIONTransfert de connaissance

Le développeur n’est pas seul face aux problèmes

Intérêt

Meilleur design FEEDBACK

Le travail en binôme : c’est pas si simple…

Difficile à vendre

Organisation du travail

Equipe répartie / multi sites

Choc culturel

RESPEC

T

Être agile plutôt que faire de l’agile !Les valeurs de eXtreme Programming ou les manifestes sont de bons refuges

FEEDBACK

COURAGE

SIMPLICITÉ

COMMUNICATION

RESPECT

RéférencesManifeste Agile : http://agilemanifesto.org/iso/fr/

Principles of craftsmanship : http://blog.8thlight.com/uncle-bob/2013/02/10/ThePrinciplesOfCraftsmanship.html

Design émergent : http://software-craftsman.fr/2014/04/28/concepts-de-larchitecture-logicielle-introduction/

Intégration continue : http://referentiel.institut-agile.fr/ci.html

Pair Programming : http://www.davefarley.net/?p=261

@CharlesBouttaz @NicoRuffel