cara - software craftsmanship : le chaînon manquant de l’agilité ?

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

Upload: florentpellet

Post on 15-Jan-2017

165 views

Category:

Software


0 download

TRANSCRIPT

Page 1: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Software Craftsmanship : le chaînon manquant

de l’agilité ?@CharlesBouttaz @NicoRuffel

Photo John Alexander Calderon

Page 2: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Méthodes AgilesManagement de projet

● Scrum

● Crystal Clear

● SAFe

● ...

Développement

● Agile Unified Process - Disciplined Agile Delivery

● eXtreme Programming

● ...

Page 3: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Les manifestesAGILE

les individus & leurs interactions > les processus et les outils

collaboration avec les clients > négociation contractuelle

adaptation au changement > le suivi d’un plan

des logiciels opérationnels > documentation exhaustive

CRAFTSMANSHIP

communauté de professionnels +

des partenariats productifs +

l'ajout constant de la valeur +

des logiciels bien conçus +

Page 4: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

12 Principes1. 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.

Page 5: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Des pratiques, des techniques !● Clean Code

● Simple Design

● Refactoring

● SOLID

● Pair programming

● Integration continue

● DevOps

● Prog fonctionnelle

● Root cause analysis

● Conception Objet

● Livraison continue

● Mob programming

● TDD

● ATDD

● BDD

● DDD

Page 6: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Les pratiques ne sont que des outils !

● Un outil est efficace dans dans un contexte donné

● “LA” solution parfaite n’existe pas

● Pragmatisme : “capacité à s’adapter aux contraintes de la réalité”

● Les valeurs & principes comme guide

Page 7: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Notre plus haute priorité est de satisfaire le client

en livrant rapidement et régulièrement des fonctionnalités

à grande valeur ajoutée.

Page 8: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Tests automatisés, Test First, Test Driven DevelopmentTDD:

1/ écrire un test qui échoue pour ma fonctionnalité

2/ écrire l’implementation minimale qui fait passer le test

3/ refactoring -> GOTO 1

Intérêt

● Code testable

● Meilleur design*

● Documentation

FEEDBACK

Page 9: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

TDD façe a la dure réalité● C’est difficile !

○ Code Legacy hostile

○ Besoin de bonnes notions de design

● Les mauvais tests coûtent cher

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

● Les tests unitaires ne sont pas suffisants

● Difficile de “vendre“ le test unitaire

COURAGE

Page 10: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

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.

Page 11: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

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

intégrée à l’application

Les plus...

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

● La version courante est toujours disponible

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

FEEDBACK

Page 12: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

La dure réalité de l’intégration continueNouvelle organisation du travail

Coût de l'automatisation

● Plateforme d’intégration

● Lien entre SCM et la plateforme

● Déploiement en un clic

Construction de la suite de tests

● 10 minutes build

● Rapidité et fiabilité du feedback

COURAGE

Page 13: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

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 autoorganisées.

La simplicité [...] est essentielle.

Page 14: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Architecture“Big Design Up Front” :

Avant le début du projet

l’architecte prend toutes les décisions d’architecture et des technologies a utiliser.

Ensuite les développeurs implémentent la vision de l’architecte.

BDUF + Agile = Problèmes

● Nécessite des besoins fonctionnels figés

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

● Les erreurs coûtent cher

Page 15: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Design émergentStrict minimum d’architecture avant de commencer (macro & micro).

Faire émerger le design au cours du dévelopement par des refactorings successifs.

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

Intérêt

● Maintenabilité

● Extensibilité

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

SIMPLICITÉ

Page 16: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Design émergent face a la dure réalité● Ne veut pas dire qu’on ne fait plus d’architecture !

● Ne veut pas dire qu’on refait toute l’application a chaque feature !

● Refactoring difficile à “vendre” : temps qui n’apporte pas de nouvelle feature

COURAGE

Page 17: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

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.

Page 18: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

Travail en binômeLes tâches de conception / programmation sont abordées à deux

FEEDBACK

COMMUNICATION

● Transfert de connaissance

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

Intérêt

● Meilleur design

Page 19: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

La vérité sur le travail en binôme● Difficile à vendre

● Organisation du travail si travail en binôme à la demande

● Choc culturel

● Equipe répartie / multi sites

RESPECT

Page 20: CARA - Software Craftsmanship : le chaînon manquant de l’agilité ?

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

FEEDBACK

COURAGE

COMMUNICATION

SIMPLICITÉ

RESPECT