Si l’on a beaucoup écrit sur les aspects techniques, beaucoup moins d’effort a été consacré à la promotion des compétences non techniques pourtant indispensables à la réussite d’un projet DevOps. Arnaud Lemaire, expert DevOps chez F5 Networks, revient sur le sujet pour les lecteurs de SOlutions Numériques.
En septembre 1999, alors que la sonde Mars Climate Orbiter se précipitait dans l’atmosphère de la planète rouge, des milliers d’ingénieurs et de scientifiques espéraient qu’elle les aiderait à réaliser des percées scientifiques majeures. La sonde devait en effet recueillir, analyser et renvoyer de précieuses informations sur l’histoire et la géologie martienne. Au lieu de ça, ses 338 kg de technologie se sont désintégrés en entrant dans l’atmosphère…
La cause de l’accident n’est pas une défaillance mécanique, mais une simple incompréhension entre deux équipes : tandis que les concepteurs du système informatique embarqué choisissaient le système métrique pour calculer les distances, l’équipe de contrôle au sol optait pour le système impérial. Cette méprise a fait dévier la sonde de sa trajectoire et l’a conduite à sa perte.
Et ce qui arrive à la NASA n’est pas un cas isolé. Les erreurs de communication sont en réalité extrêmement fréquentes dans les entreprises, surtout lorsqu’une multitude d’intervenants sont impliqués. Alors, certes, le travail en silo ne conduit pas systématiquement à créer une boule de feu dans le ciel martien (et heureusement !). Mais cela ne signifie pas pour autant qu’il soit sans danger pour nos organisations hyperconnectées et « transformées numériquement ».
En fait, l’innovation et le progrès ont de meilleures chances de réussite lorsque l’alignement entre les équipes est constant, et que chacun est engagé sans relâche dans un dialogue continu et collaboratif. Et c’est exactement la raison pour laquelle les méthodologies DevOps rencontrent un tel succès : elles réunissent les équipes de développement et d’exploitation pour produire les meilleurs résultats possible, grâce à une communication permanente. Elles abattent les silos en poussant des équipes qui ne se parlaient jamais à le faire constamment.
Cet aspect n’est pas suffisamment mis en avant lorsque l’on parle de DevOps. Si l’on a beaucoup écrit sur les aspects techniques, beaucoup moins d’effort a été consacré à la promotion des compétences non techniques pourtant indispensables à la réussite d’un projet DevOps.
Pourtant, bien des compétences non techniques et des comportements sont essentiels à la réussite d’un projet et au mode DevOps. Examinons les deux principaux :
La communauté
Les outils DevOps sont open source et maintenus par une communauté dynamique et des volontaires passionnés. Et il est important d’être régulièrement au contact de cette communauté, de partager ses idées et, idéalement, d’y contribuer. Car le DevOps est un processus intrinsèquement social dans lequel il est nécessaire de s’engager activement pour rester pertinent et à jour. C’est cette « intelligence collective » qui permet de résoudre les problèmes, que ce soit au sein du projet ou à l’extérieur, dans la communauté.
Et puis celle-ci ne vit que par l’implication de ses membres. S’y intégrer et échanger sur les sujets que l’on maîtrise, ou poser des questions qui serviront à d’autres membres est un bon moyen de faire vivre la communauté (et de se créer un réseau professionnel, accessoirement).
La collaboration
Impossible de réussir dans le monde du DevOps sans collaborer. Il n’y aura pas de pipeline de développement continu si certains membres de l’équipe sont laissés pour compte. Mais ce n’est pas toujours facile : les équipes traditionnelles de développement et d’exploitation ne sont souvent pas habituées à échanger directement. Heureusement, aujourd’hui les outils d’automatisation du DevOps commencent à faire tomber les silos et les barrières artificielles entre fiefs opaques.
Toutefois, il faut bien avoir conscience que créer les conditions pour que ces différentes équipes puissent s’enrichir mutuellement est presque un projet à part, et en tout cas un aspect essentiel de tout projet DevOps. Cette nouvelle culture dépasse d’ailleurs souvent le cadre du seul DevOps et finit par imprégner tout l’ADN d’une organisation.
Ces principes s’appliquent aussi bien aux géants de la Silicon Valley qu’au développeur indépendant soucieux d’adopter une approche plus progressive du DevOps. Mais plus l’organisation est importante plus les défis culturels à relever seront importants à cause d’une certaine tendance au maintien du statu quo, ainsi qu’à la lourdeur des processus en place.
Dans ces conditions, la mise en œuvre du DevOps implique un changement dans la façon dont les individus et les équipes travaillent au quotidien. Abandonner les mauvaises habitudes n’est jamais facile, mais c’est une transition nécessaire.
Comment relever les défis humains du DevOps ?
Avant même de lancer un premier projet DevOps, il est utile d’initier un vrai programme de formation et de sensibilisation qui ne soit pas seulement technique, mais qui mettent aussi en avant l’importance de la communication et du partage d’information. Il est important, par exemple, de démontrer la nocivité des silos à travers des cas concrets, afin que les participants comprennent mieux pourquoi ce nouvel effort de communication qui leur est demandé est vraiment utile.
Ensuite, une analyse fine des processus de développement existants permettra d’identifier les goulots d’étranglement et d’y remédier. Il est important de se focaliser sur les équipes impliquées, les personnes-clés (ces experts incontournables par qui tout passe !) ou les équipes dont toutes les autres attendent la validation, afin de déterminer comment un meilleur partage de l’information pourrait fluidifier les processus.
Mais, surtout, ce processus d’auto-évaluation ne doit jamais cesser ! Chaque projet devrait avoir son propre coach ou « champion » DevOps, désigné pour aider à conduire le processus d’auto-évaluation et d’amélioration constante, et faciliter la communication là où elle a du mal à démarrer.
En fait, et bien que les discussions sur le DevOps soient essentiellement techniques, ignorer l’aspect humain serait une erreur cruciale. Car aucune compétence technique ne sauvera un projet DevOps si les comportements participatifs sont inappropriés ou mal alignés