Home > Agile, Scrum > Scrum est un défi pour le développeur !

Scrum est un défi pour le développeur !

June 8th, 2009 tremeur balbous posts profile Leave a comment Go to comments

Éric Mignot dans son billet intitulé “Qu’est ce que Scrum ?” définit Scrum par la phrase suivante :

Scrum est un processus empirique qui se concentre sur la livraison d’incréments de logiciel développés dans des blocs de temps par une équipe auto-organisée qui choisit itérativement son engagement dans un carnet de produit priorisé par un Product Owner.

Celui des quatres piliers de Scrum qui a mon avis représente un défi technique pour les développeurs est “livraison d’incréments de logiciel développés dans des blocs de temps”

Mais pourquoi est-ce un défi ?

Faisons le point

Répondez par oui ou par non aux questions suivantes :
Êtes-vous en mesure :

  • De conserver une vélocité constante sprint après sprint ?
  • D’enrichir une fonctionnalité existante sans introduire de régression ?
  • D’élargir le nombre de fonctionnalité de votre logiciel de façon prédictive et maîtrisée ?
  • De livrer sur la plate-forme de production (ou proche de la production) à la fin de chaque sprint ?
  • De comprendre et implémenter les besoins du client ?
  • D’ajouter de nouvelles régles métier sans “patcher” votre code ?

Si vous avez répondu non à plusieurs de ces questions vous serez intéressés à savoir comment vous outiller pour être en mesure de livrer sprint après sprint des incréments logiciel de qualité.

Un certain nombre d’outils et de pratiques d’ingénieries existent (depuis très longtemps pour la plupart) pour nous aider à produire et livrer du logiciel de qualité. Ces outils et pratiques sont encore trop souvent ignorées pour des raisons que j’avoue ignorer.

Certaines pratiques d’ingénierie permettent de répondre à plusieurs des questions précédentes, d’autres n’adressent qu’un besoin à la fois.

La rengaine

Le défi principal est la répétition des livraisons. Qui dit répétition de livraison dit répétition des tests, évolutions fréquentes du code existant…

Pour absorber ces contraintes, vous aurez besoin de disposer d’une base de code solide !
Il est donc temps de penser à mettre en place un outils de gestion des sources, de mettre en place un jeu de tests automatisés (end-to-end, fonctionnels, intégrés, unitaires), de disposer d’un serveur d’intégration continue qui roule ces tests pour vous et déploie l’application sur le serveur de production en un clique.

Pour apporter de la valeur à votre logiciel et l’enrichir en fonctionnalités vous devez disposer d’une base de code flexible et évolutive.
La modélisation Agile et la conception pilotée par le domaine, associées à la maîtrise du remaniement de code (refactoring) vous aidront à garder le contrôle et à conserver un délai d’intégration des nouvelles fonctionnalités constants et répétable dans la durée.

L’oeuf ou la poule

Cette liste n’est pas exhaustive et pourtant vous vous posez déjà la question : “Mais alors par quel bout commencer : Scrum ou les pratiques ?

Si vous attaquer par Scrum, l’impact des “non-pratiques” va vite être douloureux, et votre Scrum pourra en souffir.

Mais vous pouvez déjà introduire de bonnes pratiques d’ingénierie et monter en compétence sur ces pratiques sans nécessairement adopter une démarche de gestion de projet Agile.
Vous aurez déjà le gain d’avoir un logiciel de qualité. Par la suite, vous pourrez exercer la solidité de vos pratiques de dévoloppement en introduisant les notions d’incrément et d’itération.

Par quoi je commence

Maintenant que vous êtes convaincus :) , dans quel ordre mettre ces pratiques d’ingénierie en place ?

J’aurai tendance à conseiller de commencer par la base :

  • mettre en place une gestion des sources si cela n’est pas encore en place.
  • introduire les tests automatisés sur le nouveau code
  • passer progressivement votre base de code existante sour le contrôle des tests automatisés
  • automatiser votre processus de livraison en y incluant l’exécution des tests
  • travailler de façon incrémentale sur votre conception, définir les concepts au moment approprié
  • garder votre code le plus près possible de votre domaine d’affaire.

Vers l’agilité

Vous ne pourrez sans doute pas tout absorber en un jour, allez y progressivement par petit pas, vous commencerez ainsi à intégrer les notions d’incrément qui guident la démarche Agile.

Tous cela est beaucoup d’apprentissages, pensez donc au Pair Programming (ce n’est pas limité à XP !) pour diffuser rapidement la connaissance et tirer le potentiel de votre équipe vers de nouveaux sommets.

  • Share/Bookmark
Categories: Agile, Scrum Tags:
  1. June 8th, 2009 at 17:10 | #1

    Scrum est un défi pour le développeur

    J’attends vos commentaires sur mon nouveau billet sur le blog Pyxis Éric Mignot dans son billet intitulé “Qu’est ce que Scrum ?” définit Scrum par la phrase suivante : Scrum est un processus empirique qui se concentre sur la…

  2. June 8th, 2009 at 22:00 | #2

    <quote>
    Si vous attaquer par Scrum, l’impact des "non-pratiques" va vite être douloureux, et votre Scrum pourra en souffir.
    </quote>

    Je comprend lorsque je lis ce bout de texte que le problème de l’oeuf ou la poule est résolu. Les pratiques doivent venir avant. Est-ce que j’ai bien compris?

    Pour moi les mécanismes d’inspect et adapt de Scrum sont excellent pour mettre en place les pratiques d’ingéniéries nécessaire. Ce qui est difficile cependant, c’est de convertir "la douleur que notre Scrum subit" en "quelle est la pratique qui nous manque pour atténuer cette souffrance?".

    Il ne faut pas avoir peur après quelques itérations de revenir en arrière et de faire une grosse scéance de refactoring ou de paiement de dettes techniques accumulées afin de s’assurer que la nouvelle pratique est instaurée de façon homogène dans le code. Sinon vous allez trainer un poid mort qui vous achelera tout le long du cycle de vie de votre application.

    Excellent article.

  3. Bob
    June 9th, 2009 at 14:54 | #3

    En fait, si il y a souffrance, ce n’est pas votre Scrum qui souffre, c’est vous.

    Scrum va rendre visible notre réalité : savons-nous construire à chaque itération un incrément logiciel prêt à être exploité en production ? Si c’est non alors la mauvaise nouvelle c’est que Scrum ne va pas vous dire comment y arriver. Par contre l’équipe est responsable et libre d’adapter ses pratiques pour y arriver.

    La bonne nouvelle c’est que en levant la tête vous allez découvrir que des pratiques d’ingénierie "agiles" existent. Comme dit Tremeur, absorber cette nouveauté ne se fait pas en un jour. Patience et persévérance.

    Vous voulez une autre bonne nouvelle ? ça marche ! :-)

  1. No trackbacks yet.