De temps en temps, les équipes d’ingénierie se retrouvent en difficulté pour un certain nombre de raisons. Parfois, une croissance explosive prend l’équipe par surprise. Ou, l’astreinte est devenue incontrôlable, avec des alertes se déclenchant toutes les cinq minutes. Ou encore, les équipes de développement et d’exploitation ont tout simplement cessé de s’entendre. Quelle que soit la raison, l’équipe est dans une mauvaise passe et quelque chose doit être fait pour la résoudre.
S’il s’agit d’un nouveau problème, la solution pourrait être facile : ajouter quelques serveurs supplémentaires, revenir à une bonne version connue de l’application ou réunir tout le monde autour d’une pizza et de bières pour mettre les choses au clair. Souvent, cependant, le problème s’insinue au fil du temps et, soudain, le trou est si profond que vous ne pouvez plus trouver la sortie. Chez LinkedIn, une équipe qui en est arrivée à ce point déclarera souvent un état connu sous le nom de « Code jaune ».
Alerte jaune
Certaines personnes supposent que le nom Code jaune est basé sur les feux de circulation, mais de manière plus précise – et avec une tournure plus geek – il provient en fait de votre série préférée « Star Trek ». Plus précisément, c’est la façon dont l’équipage du vaisseau Enterprise indique son état de défense actuel. Dans tous les cas, la définition est claire : quelque chose ne va pas et nous devons avancer avec prudence. Fidèles aux deux métaphores, nous avons également un code rouge. Il s’agit plutôt d’une crise immédiate, où tout le monde travaille 24 heures sur 24 jusqu’à ce qu’elle soit résolue. Le code jaune est un peu plus décontracté : Tout le monde s’y consacre, mais uniquement pendant les heures de bureau. Le code jaune a également tendance à durer de l’ordre de plusieurs mois, alors qu’un code rouge devrait durer de l’ordre de quelques jours.
D’autres entreprises peuvent utiliser un terme différent de celui de code jaune, mais l’effet est le même : l’équipe communique au reste de l’entreprise qu’elle a identifié un problème sérieux qui doit être résolu en priorité pour assurer le succès de l’équipe et, par conséquent, de l’entreprise. La capacité de faire cela est un aspect important de la communication ouverte et honnête, une valeur essentielle à une culture saine et qui peut souvent être négligée. Parler de nos problèmes est tout aussi important, sinon plus, que de célébrer nos succès. Les équipes peuvent apprendre plus de la résolution d’un problème que d’un succès total.
Ce n’est pas un échec
La première étape pour commencer un code jaune est de comprendre que ce n’est pas un échec. Il n’y a pas de honte à admettre que l’équipe a un problème qui doit être corrigé. Les bugs arrivent, malgré tous nos efforts pour les éviter. La seule chose que nous pouvons faire est de diagnostiquer le problème et d’y remédier. Le seul moment où nous échouons est lorsque nous fermons les yeux sur ces problèmes. Cela s’applique à la façon dont nos équipes d’ingénieurs interagissent entre elles tout autant qu’aux logiciels et aux systèmes que nous produisons et exécutons.
Il est toutefois essentiel de s’attaquer aux bons problèmes. La plupart du temps, nous nous sommes retrouvés dans la situation actuelle à cause d’une lente ébullition – augmentation de la dette technique, nombreux petits problèmes ou pannes dans un processus – qui a fini par s’accumuler en une crise. L’objectif du Code Jaune doit être non seulement de remédier aux problèmes actuels (une composante réactive), mais aussi de s’assurer qu’ils ne se répètent pas à l’avenir (la composante proactive).
Planification d’un Code Jaune réussi
Il y a plusieurs composantes requises pour un Code Jaune réussi, ainsi que des pièces nécessaires pour obtenir l’adhésion du reste de l’organisation :
- Énoncé du problème : Il doit y avoir un énoncé clair et convenu des problèmes auxquels l’équipe est confrontée et qui ont motivé le code jaune. Cela devrait inclure non seulement les problèmes actuels, mais aussi la compréhension actuelle de leur cause profonde.
- Critères de sortie : Ensuite, vous devez avoir des objectifs spécifiques vers lesquels l’équipe va travailler pour sortir du code jaune. Il doit s’agir d’objectifs SMART traditionnels : spécifiques, mesurables, réalisables, pertinents et limités dans le temps. Ces objectifs sont ce qui permet à l’équipe d’entrer dans un code jaune en premier lieu, car il couvre une portée fixe et n’est pas ouvert.
- Communication : Toutes les informations concernant le code jaune, y compris l’annonce (qui comprend l’énoncé du problème et les critères de sortie), la conclusion réussie et les mises à jour périodiques de l’état d’avancement doivent être envoyées à l’organisation plus large. Il peut s’agir de votre département, ou de l’ensemble de l’organisation d’ingénierie. Il peut même s’agir de l’entreprise entière, selon la nature des problèmes.
- Gestion de projet : Comme tous les grands projets, il faut une personne responsable de l’organisation du travail et de la communication des informations. Comme cela représente un scénario » tout le monde sur le pont » pour l’équipe impactée, il est généralement utile d’avoir un gestionnaire de projet (PM) dédié pour aider à cela. Il s’agit généralement d’un gestionnaire de projet qui connaît bien l’équipe et le travail, mais qui n’est pas directement impliqué dans l’exécution. Cela libère les gestionnaires et les contributeurs individuels pour qu’ils se concentrent sur le travail à accomplir.
Une fois que chacun de ces aspects a été réfléchi, et que la décision a été prise d’entrer en code jaune, le premier acte de l’équipe est de réorganiser ses priorités autour des critères de sortie. Cela signifie souvent qu’il faut mettre de côté les objectifs trimestriels. Il peut également être nécessaire d’établir une réunion dédiée autour de la discussion de l’état des critères de sortie.
L’espace pour respirer
C’est bien beau pour une équipe d’entrer en code jaune et de travailler avec une seule concentration sur les objectifs qui ont été fixés pour redresser les choses, mais cela ne suffit pas pour que l’équipe réussisse. Pour un véritable succès, tout l’entourage de l’équipe doit comprendre la situation et lui donner l’espace nécessaire pour faire son travail. C’est là qu’une culture d’ingénierie saine se lève pour relever le défi.
- Attendez-vous à des retards : La façon la plus courante dont une équipe tangentielle sera affectée est par les retards. Elle doit s’attendre à ce que les demandes qui ont été faites à l’équipe impactée puissent être retardées si elles n’entrent pas dans le cadre des critères de sortie. Le code jaune implique, à la base, une réorganisation des priorités pour résoudre le problème énoncé. Les équipes extérieures doivent en tenir compte et comprendre que leurs propres échéanciers de projet pourraient devoir être ajustés.
- Minimiser les nouvelles demandes : Les autres équipes doivent également s’abstenir de demander à l’équipe impactée de nouvelles choses qui sortent du cadre des critères de sortie définis. Minimiser ces demandes, en plus d’accepter des retards sur toutes les demandes existantes, permet à l’équipe impactée de consacrer ses heures d’ingénierie limitées à se rendre de l’autre côté du code jaune.
- Demandes d’assistance auprès des autres équipes : L’équipe en code jaune peut constater qu’elle a besoin d’une aide extérieure pour atteindre ses objectifs. Par exemple, en cas de croissance soudaine et explosive du trafic, elle peut avoir besoin d’accélérer l’approvisionnement en nouveau matériel. Si vous vous trouvez à l’origine d’une telle demande, vous devrez peut-être modifier vos propres priorités. N’oubliez jamais que l’équipe fait partie de la même entreprise, et qu’à ce titre, tout le monde réussit ou échoue ensemble.
Les équipes d’ingénieurs sont rarement autonomes, et il est important que tout le monde comprenne l’intérêt de voir ces équipes bien travailler, et bien travailler ensemble. Un petit retard temporaire dans les objectifs pour s’assurer que c’est le cas en vaut la peine.
La lumière au bout du tunnel
Le code jaune représente une quantité importante de travail de haute priorité et travailler à travers lui sera souvent stressant pour l’équipe. Dire « non » à des collègues qui font une demande raisonnable est difficile, et le travail qui est dans la portée implique rarement de passer du temps sur de nouvelles fonctionnalités intéressantes. De plus, si les problèmes à résoudre incluent des questions de communication entre les groupes, des conversations difficiles vont devoir avoir lieu. Cependant, à mesure que l’équipe approche de la fin du travail, il sera beaucoup plus facile de voir jusqu’à ce qui se trouve de l’autre côté des critères de sortie.
Le but ultime du Code Jaune est de faire sortir l’équipe d’un mode réactif où elle court de crise en crise et de la faire passer à un état proactif où elle est capable de travailler sur les bons grands projets. En atteignant les critères de sortie, les ingénieurs seront plus efficaces et capables de travailler de manière proactive. Il s’agit d’une équipe plus forte – les ingénieurs sont plus heureux parce qu’ils ne sont pas soumis à un stress important lié au travail d’exploitation, l’équipe travaille bien parce qu’elle se parle efficacement, et les clients sont satisfaits parce que les demandes sont traitées soit par l’automatisation, soit dans un délai raisonnable.
Votre entreprise a-t-elle un processus interne similaire à la façon dont LinkedIn fait un Code Jaune ?