Changer notre façon de penser l’ingénierie pour redevenir des constructeurs

Je suis chez Buffer depuis 2014, et même avant de rejoindre, j’ai toujours été fan de la culture produit et d’ingénierie de l’équipe Buffer : la rapidité avec laquelle ils ont apporté des améliorations et la proximité de chacun avec les utilisateurs (il n’est pas rare de voir des ingénieurs répondre aux commentaires sur Twitter !).

J’ai trouvé l’attitude “pouvoir-faire” inspirante et contagieuse, et c’est incroyable de voir comment les choses s’enclenchent de cette façon. Bien sûr, quand je suis arrivé, nous étions une équipe de 24 personnes ; Nous portions tous beaucoup de chapeaux et nous n’avions pas de managers.

Au fur et à mesure que nous progressons, nous avons commencé à adopter la création de structures et de processus d’équipe pour mieux nous soutenir et gérer cette croissance. Mais bien sûr, faire évoluer la collaboration tout en maintenant la vitesse est un art en soi, et des points de friction commencent à apparaître : les projets se heurtent souvent à des goulots d’étranglement et les équipes se bloquent mutuellement. Comme il faudra plus de temps pour publier les fonctionnalités, nous essaierons de le rendre “correct” en passant plus de temps à élaborer les spécifications de ce que nous avons essayé de construire, mais bien sûr, plus les projets sont volumineux, plus ils prennent de temps à livrer.

Nous nous sommes retrouvés coincés dans une boucle auto-amplifiée : s’il faut des mois pour construire quelque chose, cela rend très difficile le suivi et la répétition car nous aurons aussi d’autres priorités à régler ! Cela a continué à renforcer la nécessité de faire plus et mieux et a continué à créer plus de pression pour « bien faire les choses ».

L’année dernière, nous avons réalisé que nous voulions changer certaines habitudes et dynamiques de tampon pour revenir plus fréquemment à ces premiers jours de charge : plus vous chargez régulièrement, plus il est facile de gérer ces changements (car ils sont plus petits). Cela semble plus sûr même si la chose que nous expédions échoue – créant une plus grande sécurité psychologique pour notre équipe. C’était clair : nous voulions redevenir des bâtisseurs et adopter l’esprit d’entreprise et une culture de régression.

Des mesures qui nous aident à déterminer la situation de la construction

Comment saurons-nous que nous sommes en mode construction ? Que nous agissons plus rapidement, expédions plus souvent et resserrons les boucles de rétroaction avec nos clients ? Quelques mesures utiles pour nous guider dans ce voyage : cycle de tempsEt le vitesse de demande d’extractionEt le taux de défaut. Voici un aperçu de la signification de ces statistiques et de la manière dont nous les mesurons :

cycle de temps
Puisque nous voulons réduire le temps nécessaire pour arriver sur le marché, nous voulons mesurer à quelle vitesse et à quelle fréquence nous apportons de la valeur à nos utilisateurs. Le temps de cycle, pour nous, est le temps entre le début du travail sur une fonctionnalité ou une amélioration (le premier changement que nous apportons à la base de code pour cela) et le moment où Demande de retrait Avec les modifications, ils sont combinés et mis en production.

Demande de productivité
Les demandes d’extraction sont les artefacts que nous créons en tant que développeurs pour commencer le processus d’intégration de nouvelles modifications de code avec le code existant exécuté en production.

Nous pouvons considérer chaque demande d’extraction comme une unité de travail qui apporte de la valeur (par exemple, une nouvelle fonctionnalité, une correction de bogue ou une autre optimisation de la base de code). C’est pourquoi le nombre total de demandes d’extraction intégrées (et leur déploiement en production) peut être un indicateur de la valeur fournie.

taux de défaut
Bien sûr, aller plus vite n’améliore rien si cela signifie que nous expédions plus de défauts et d’erreurs à nos clients !

Le taux d’erreur agit comme une mesure de contrôle pour nous, car nous mesurons le nombre de modifications de code que nous apportons qui gèrent les bogues apportés lors des modifications précédentes.

La dynamique que nous avons appliquée pour conduire ce changement de mentalité d’ingénierie

Tout comme les habitudes sont essentielles à la formation de notre identité en tant qu’individus, elles sont fondamentales pour développer l’état d’esprit et la culture de l’entreprise.

Sachant ce que nous voulons atteindre et comment le mesurer, nous commençons à réfléchir à de nouvelles dynamiques qui, lorsque nous les adoptons, nous aident à construire notre identité de bâtisseurs. De plus, nous avons gardé les yeux ouverts sur les habitudes actuelles qui bloquaient notre chemin et nous empêchaient de passer au niveau supérieur.

Journées d’ingénierie client
Un élément essentiel de tout constructeur est d’être en contact avec ses clients : l’interaction directe avec nos clients est essentielle pour mieux comprendre les questions qu’ils posent, les besoins qu’ils ont et les points faibles que vous ressentez dans nos systèmes.

Avec les Customer Engineering Days, nous avons chacun une équipe d’ingénieurs qui affecte un ingénieur par cycle associé à un avocat pendant une journée pour répondre aux tickets dans la boîte de réception et résoudre ensemble les gains rapides. C’est une excellente occasion pour les ingénieurs de poser des questions à nos défenseurs des clients sur nos clients, leurs fonctionnalités et nos produits, et pour les défenseurs de partager leurs expériences et d’apporter de bonnes idées aux clients !

Supprimer au maximum les demandes de retrait bloquantes
Alors que nous adoptons une culture d’accélération, l’une des premières choses qui a attiré mon attention a été le processus de révision pour intégrer les changements dans la production : certaines équipes auront une règle en place qui oblige un autre développeur à revoir son code avant de pousser directement le changement. Les normes et les recherches de l’industrie ont montré des résultats surprenants : les processus d’approbation des modifications de code ne sont pas liés aux performances de livraison des logiciels.

Nous voulons supprimer le service de passerelle pour apporter des modifications, améliorer la propriété et permettre aux gens de rester dans le flux, de sorte que les équipes commencent à s’éloigner de la valeur par défaut pour ouvrir des demandes d’extraction et attendre l’approbation, et utilisent une méthode hybride appelée “expédier/offrir/ interroger”:

  • bateau Ça veut juste dire ! Inutile de demander une révision, effectuez simplement la modification et publiez-la en production.
  • Affiche C’est idéal pour obtenir des commentaires asynchrones ou partager de nouveaux modèles et apprentissages avec l’équipe, mais n’attendez pas l’approbation avant de passer en production.
  • interroger Il s’agit de la méthode traditionnelle où la révision du code est requise avant la fusion et l’expédition en production.

Expliquer qu’il existe différentes alternatives et approches pour différentes situations signifie que les équipes peuvent savoir quel équilibre trouver et savoir si elles sont souvent en “mode question” lorsqu’elles peuvent pousser davantage vers “l’expédition” ou la “présentation”.

travailler plus petit
Bien sûr, si nous nous concentrons uniquement sur les pratiques passées, nous aurons l’impression de demander aux équipes de travailler plus et plus rapidement. Ces objectifs et pratiques sont pour nous de remettre en question et d’améliorer la façon dont nous travaillons, pas combien nous travaillons !

L’un des éléments clés pour garantir cela, et un contributeur majeur pour devenir une équipe hautement performante, est travailler plus petit: Si nous décomposons notre travail en fonctionnalités qui permettent un développement rapide plutôt qu’en projets plus vastes et plus complexes qui sortent rarement.

Par conséquent, les équipes d’ingénierie adoptent l’utilisation des basculements de fonctionnalités (également appelés commutation de fonctionnalités) comme moyen de déployer de nouvelles fonctionnalités encore en développement en production sans impact négatif sur l’expérience utilisateur. Cela élimine les versions volumineuses avec de nombreuses modifications, à la place, nous pouvons proposer de nouvelles fonctionnalités à nos utilisateurs lorsque nous les avons déjà testées en production.

Travailler en petits lots génère une plus grande sécurité psychologique pour nos ingénieurs, car le risque de déployer des changements urgents qui affectent tout le monde est considérablement réduit.

Les responsables de l’ingénierie se tournent également vers les constructeurs
Alors que le rôle du directeur de l’ingénierie dans les différentes équipes s’est principalement concentré sur la gestion des personnes, l’évolution de carrière de l’ingénieur et la coordination des méthodes de travail, sa principale responsabilité est de s’assurer que nos équipes apportent de la valeur en construisant notre produit et nos équipes dans un manière qui correspond à la fois à nos produits et à nos objectifs techniques.

Donc, pour vraiment rouler avec l’état d’esprit de ces constructeurs, nos directeurs techniques doivent eux aussi devenir des constructeurs ! Nous avons redéfini le rôle du directeur de l’ingénierie et visons désormais à ce qu’il passe au moins 25 % de son temps dans l’équipe. La formation pratique peut prendre plusieurs formes, telles que :

  • Plongez dans l’analyse des données pour lancer une nouvelle fonctionnalité.
  • Travailler sur des tâches non critiques.
  • QA’ing de nouvelles fonctionnalités.
  • Traiter avec les clients.

Cela leur donne un contexte et une meilleure compréhension des décisions techniques et des compromis auxquels leurs équipes sont confrontées et crée un sentiment d’appartenance partagé au sein de l’équipe, car nous contribuons tous à notre manière à publier souvent.

Les résultats : Avons-nous adopté un état d’esprit constructif ?

Nous avons commencé ce voyage de changement d’état d’esprit il y a 9 mois et cela a été un excellent chemin vers l’alignement entre les équipes : le nombre de fonctionnalités et d’améliorations que nous avons apportées au cours des derniers mois reflète tous ces changements. Nous nous demandons constamment “Comment pouvons-nous expédier la prochaine chose plus tôt et avec une meilleure qualité?”. nous Se sentir Il y a un changement de motivation et d’énergie.
Maintenant, si nous revenons aux mesures que j’ai partagées plus tôt dans ce post, nous pouvons voir que :

  • Le temps de cycle a considérablement diminué : d’une moyenne de 94,8 heures en 2021 à 55 heures en 2022 jusqu’à présent.
  • Le trafic a augmenté en RP : 4 155 demandes de retrait ont été publiées en 2021 contre 3 687 demandes publiées en 2022 jusqu’à présent (1 816 demandes de retrait de plus qu’au S2 2021 !).
  • Le taux de défauts a diminué : de 18 % du temps, il corrige les défauts en 2021 à 16 % en 2022 jusqu’à présent.

Cela signifie que l’équipe d’ingénierie publie en fait plus rapidement et plus souvent et que la qualité n’interfère pas avec la rapidité de livraison.

Il y a de grands projets technologiques en préparation qui accéléreront toute l’équipe d’ingénierie au cours du second semestre de l’année, alors nous ne faisons que commencer ! Y a-t-il des habitudes de votre équipe qui l’ont aidé à augmenter la vitesse d’expédition et à se rapprocher de vos clients ? Alors que nous continuons sur cette voie pour devenir des bâtisseurs, je suis ravi de continuer à partager ce que nous avons appris et à progresser en cours de route.

N’hésitez pas à me contacter sur Twitter à Intégrer un tweet Pour partager vos expériences !

Leave a Reply

Your email address will not be published.