Pour être en mesure de transformer numériquement une organisation, il est nécessaire d’entamer une transformation de fond, notamment sur la manière de travailler et de gérer les projets informatiques, afin de produire, en continu, les changements.
Malheureusement, de nombreuses entreprises ont encore une gestion très « lourde », hyper hiérarchisée, avec de nombreuses procédures très figées qui ne permettent pas d’envisager une transformation digitale rapide.
Pour pallier ce problème, les DSI doivent revoir les bases de leur management de projet dans les équipes, adopter un mode de fonctionnement plus agile, avec des méthodes, outils et nouveaux métiers spécifiques, comme le Scrum.
Dans ce chapitre, je vous propose de voir l’évolution de ces méthodes et des exemples de leur implémentation, depuis ITIL jusqu’au DevOps.
Les débuts avec ITIL
La démarche
ITIL (Information Technology Infrastructure Library) pour « Bibliothèque pour l'infrastructure des technologies de l'information » est un ensemble d'ouvrages recensant les bonnes pratiques pour la gestion des services informatiques, édictées par l'Office public britannique du Commerce (OGC).
Le fonctionnement d’un service peut dépendre de plusieurs services technologiques métier ou d’infrastructure. Généralement, l’informatique se focalise sur les services « d’infrastructure ».
A contrario, la méthode ITIL suggère une approche globale de la gestion des services en prenant en considération l’ensemble du service métier et par conséquent, tous les aspects d’un service (et pas uniquement les services d’infrastructure), afin de satisfaire les exigences du client et le niveau de service (livraison à temps, correctement protégé…).
La structure de la méthode
ITIL est structuré autour du cycle de vie d’un service, réparti en 5 étapes :
La stratégie du service dont l’objectif est de comprendre les clients IT, définir l’offre répondant aux besoins des clients, les capacités et ressources nécessaires au développement de service, et identifier les moyens de succès pour une exécution réussie.
La conception du service assure que les nouveaux services et ceux modifiés soient conçus efficacement, en termes de technologie et d’architecture, afin de satisfaire les attentes du client. Les processus sont aussi pris en considération dans cette phase.
La transition du service intègre la gestion du changement, le contrôle des actifs et de la configuration, la validation, les tests et la planification de la mise en fonction du service, afin de préparer la mise en production.
L’exploitation du service fournit le service de manière continue, et le surveille quotidiennement.
L’amélioration continue du service permet au service IT de mesurer et d’améliorer le service, la technologie, ainsi que l’efficacité et l’efficience dans la gestion générale des services.
Les méthodes agiles
La démarche
Le terme « agile » définit une approche de gestion de projet qui s'oppose à la conception classique prédictive et séquentielle.
La première étape de l’approche « traditionnelle » consiste à rédiger une expression détaillée et validée du besoin qui laisse finalement peu de place au changement. La réalisation est ensuite lancée, puis le rendez-vous est pris avec le client pour la recette.
De plus, il n'est pas rare que certaines fonctionnalités demandées se révèlent finalement inutiles à l'usage alors que d'autres, découvertes en cours de route, auraient pu donner plus de valeur au produit.
L'approche agile propose au contraire de réduire considérablement voire complètement cet effet tunnel en donnant davantage de visibilité, en impliquant le client du début à la fin du projet, et en adoptant un processus itératif et incrémental. Elle considère que le besoin ne peut être figé, et propose au contraire de s'adapter aux changements de ce dernier.
Dans ces méthodes on trouve la célèbre méthode Scrum ou la méthode Kanban.
La structure de la méthode
Cette méthode a même son propre manifeste. Ce document rédigé par 17 experts du développement d'applications informatiques pose les bases des méthodes agiles.
Ce Manifeste Agile milite pour axer les développements autour de 4 valeurs :
Il faut préférer les individus et leurs interactions plus que les processus et les outils.
Il faut préférer un logiciel qui fonctionne plus qu’une documentation exhaustive.
Il faut préférer la collaboration avec les clients plus que la négociation contractuelle.
Il faut préférer l’adaptation au changement plus que le suivi d’un plan.
Ces valeurs sont d’ailleurs composées de 12 principes fondateurs.
Comment ça marche exactement ?
Eh bien, un des points fondamentaux du management de projets agiles est de mettre le client final, l'utilisateur, au cœur du projet. Il n'est plus un simple observateur, un commanditaire, mais il devient un acteur. En effet, l’utilisateur fait partie prenante, et participe activement à l'avancée des travaux, aux réussites comme aux échecs.
Ce qu'il faut retenir de l'apport de ces méthodes agiles, c'est qu'elles favorisent la collaboration entre toutes les entités de l'organisation.
Par exemple, elles obligent les développeurs à parler aux utilisateurs, à comprendre leurs enjeux et leurs contraintes, et les utilisateurs à comprendre la complexité technique que représentent leurs demandes, et à être acteurs plutôt qu'observateurs du projet. La priorité est donnée à la valeur délivrée par le projet, plutôt que par le volume de fonctionnalités développées.
En effet, le fameux « chaos report » du Standish Group datant de 1994, indique que 20 % des fonctionnalités développées servent 80 % d'usages pour les utilisateurs.
Mais les méthodes agiles évoluent de plus en plus pour être en adéquation avec les changements de plus en plus forts des entreprises et outils, comme le Cloud : le Scrum et le Devops.
Le Scrum
L’approche Scrum est une méthode agile consacrée à la gestion de projet. Son objectif phare est d’améliorer la productivité des équipes, tout en permettant une optimisation du produit grâce à des feedbacks réguliers du marché. En parallèle, cette méthode permet :
d’avoir une vue d’ensemble du projet pour chacune des parties prenantes ;
de réduire des bugs ;
de mettre régulièrement à jour les priorités.
La méthodologie Scrum définit 3 acteurs principaux :
Le Scrum Master est celui qui s’assure que les principes et les valeurs du Scrum sont respectés. C’est le coordinateur des équipes, qui vérifie que la communication est efficace. Il améliore aussi la productivité et il lève les obstacles.
Le Product Owner est l’expert qui collabore avec le client. Il définit suite aux retours client les spécificités fonctionnelles du produit, et les priorise ensuite avec l’équipe. Il valide les fonctionnalités développées. Il endosse le rôle du client auprès de l’équipe.
L’équipe de développeurs. Dans cette méthode, il n’est pas censé y avoir de hiérarchie entre eux, quand bien même leurs savoir-faire et compétences seraient différents. Idéalement, une équipe est au maximum composée de 6 à 10 personnes pour être la plus efficace possible.
L’approche Scrum définit également les outils et les principales étapes à suivre.
Product Backlog
Après avoir rencontré le client et synthétisé ses besoins, le Product Owner identifie toutes les fonctionnalités dont le produit devra être composé, dans ce qui s’appelle le product backlog. Ce « cahier des charges » n’est pas fixé pour toujours, et pourra évoluer en fonction des besoins du client. L’équipe décide de ce qu’elle peut faire, et dans quel ordre le faire.
Sprint
La phase de sprint permet de répartir chacune des tâches à réaliser. L’équipe trie les fonctionnalités et tâches qu’elle répartit dans des sprints (c’est-à-dire un cycle de développement d’une durée de deux semaines). Et pendant ce cycle, l’équipe s’occupera par exemple uniquement de coder une fonctionnalité du produit qu’elle devra livrer à la fin du cycle.
Sprint Planning Meeting
On organise avant chaque sprint une réunion de planification, une sorte de négociation entre le Product Owner et l’équipe technique : le sprint planning meeting. Cette réunion permet de sélectionner dans le product backlog les exigences les plus prioritaires pour le client. Le Product Owner propose des user stories, des parcours utilisateurs types. L’équipe technique analyse les user stories, les traduit en tâches techniques, et regarde en combien de temps chacune de ces user stories pourra être réalisée. Après négociation et décision concernant les choses à faire, les tâches constituent le sprint backlog.
Daily Scrum : la mêlée quotidienne
Chaque matin, quand l’équipe est au complet ,on réalise le daily scrum : une réunion de 5-10 minutes, qui se fait debout (pour aller plus vite !) et où l’on parle de trois choses :
ce qu’on a fait hier ;
les problèmes qu'on a rencontrés ;
ce qu'on va faire aujourd’hui.
Cette réunion permet de motiver et stimuler les équipes, et sans cesse se reposer la question du sens de ses actions…
Et concrètement : comment on s’organise dans le sprint ?
Pour les ingrédients, vous pouvez vous équiper : d’un tableau blanc aimanté et de Post-it de couleurs. Le tableau est divisé en trois colonnes : à faire, en cours, réalisé. En début de sprint, on recense chacune des petites tâches qui seront nécessaires pour réaliser la fonctionnalité en question du produit, et que l’on représente par un post-it de couleur. Elles se trouvent dans la première colonne : à faire. Au fur et à mesure qu’elles seront réalisées, elles seront bougées vers la droite. L’équipe a établi combien de temps prendrait chaque tâche, il est ainsi facile de voir pendant un sprint si l’équipe tiendra ses timings.
Sprint Review
Tous les vendredis qui finissent un sprint, l’équipe teste les bénéfices de la fonctionnalité avec le Product Owner. On fait une démo de ce qui a été créé, et le destinataire de la fonctionnalité (le client, par exemple) confirme ou non que la fonctionnalité marche comme il le souhaitait. La boucle est bouclée !
La tendance DevOps
Enfin, dernière évolution en cours, le DevOps.
Face aux besoins d’accélérer la capacité des équipes à délivrer des produits en continu et de gagner en agilité, un modèle alternatif, le modèle DevOps, est en pleine expansion.
L’avènement du DevOps bouleverse les modèles traditionnels puisqu’il nécessite de repenser les métiers de la production informatique et des infrastructures.
Le modèle DevOps est une méthode agile qui vise à réconcilier le développement (Dev) et l’exploitation (Ops).
Ces équipes utilisent des pratiques pour automatiser des processus qui étaient autrefois manuels et lents. Elles exploitent des outils qui les aident à opérer et à faire évoluer des applications de façon rapide et fiable. Par exemple :
des outils de gestion des configurations, tels que Puppet et Chef ;
un référentiel, comme GitHub, pour le stockage des versions du code ;
des outils d'indexation, comme Splunk ;
des outils pour surveiller la manière dont les modifications apportées au code affectent l'environnement, comme Nagios ;
sans oublier des langages de script, comme Perl, PHP et JavaScript.
Le DevOps a donc permis de :
faire évoluer des procédures pour automatiser et accélérer les process ;
générer de nouveaux outils (Vagrant, etc.) ;
créer de nouveaux métiers et une organisation interne (ingénieur DevOps, etc.)
Vous avez vu tout au long de ce chapitre que le Cloud, les méthodes agiles, le modèle DevOps ont tous permis au DSI d'accélérer le déploiement et l’évolution des SI, en :
mettant en place de nouvelles méthodes et organisations d’équipe ;
créant en nouveaux métiers ;
utilisant de nouveaux outils.
Passons désormais au dernier chapitre de ce cours sur l’impact de la data et des données au sein des SI.
En résumé
La transformation agile permet de mettre le client final au cœur des préoccupations de l'organisation.
La démarche agile est basée sur 4 valeurs :
préférer les individus et leurs interactions aux processus et outils ;
préférer un logiciel qui fonctionne à une documentation exhaustive ;
préférer la collaboration avec les clients à la négociation contractuelle ;
préférer l’adaptation au changement au suivi d’un plan.
Le Scrum propose une méthodologie intéressante basée sur des cycles courts de développement (15 jours) en relation proche avec le client.
La méthode DevOps est une méthode agile qui vise à réconcilier développement et exploitation afin d'accélérer la livraison de composant du SI.
Ces méthodologies impactent le SI par ses méthodes de gestion de projet, ses nouveaux métiers et ses outils.