Azure Native Qumulo Maintenant disponible dans l'UE, au Royaume-Uni et au Canada - En savoir plus

Order From Chaos : Structure de notre équipe d'ingénieurs

Rédigé par:

Cet article a été publié sur Medium. Visitez la page moyenne de Karim ici.

Chez Qumulo, nous construisons un système de fichiers distribué hautement évolutif. Ce système est principalement écrit en C et se compose de plusieurs millions de lignes de code écrites par une équipe de développement de logiciels. C'est un système extrêmement complexe et critique. Les systèmes de stockage d'entreprise, similaires à l'infrastructure réseau, doivent être disponibles en permanence et ne peuvent pas fonctionner correctement. Nos clients sont généralement des entreprises ayant des exigences de disponibilité et de performance extrêmement élevées.

Nous avons choisi de construire ce système en adhérant à quelques principes : Nous publions notre logiciel toutes les deux semaines. Nous suivons une méthodologie de développement logiciel Agile. Nous TDD, testons des unités et sommes maniaques de la qualité. Nous travaillons en équipes autodirigées et autonomes.

Intéressé à faire de l'ordre du chaos? Jetez un œil aux positions ouvertes chez Qumulo.

C'est le dernier point sur lequel je veux passer un peu de temps à décrire.

Les membres de l'équipe s'auto-organisent en équipes agiles dont la taille varie de 4 à 6. Chaque équipe se voit attribuer un propriétaire de produit (PO) avec un coach agile. Au sein de ces équipes, il n’ya pas de responsable désigné. Aucun responsable du développement Pas de lead technique. Cela ressemble à une recette pour le chaos, mais ce n’est vraiment pas le cas.

Création d'équipe

De nouvelles équipes sont créées en réponse aux nouveaux besoins de l’entreprise (création d’une nouvelle fonctionnalité) ou, plus généralement, à l’augmentation de la taille de l’équipe technique. Chaque fois qu'une nouvelle équipe de développement de logiciels se forme, elle s'articule autour d'une charte ou d'une mission. Cette mission est guidée par la fonction que l’équipe est chargée de construire. Les objectifs de hiérarchisation des fonctionnalités, de cadrage et de diffusion sont principalement définis par l'équipe PM.

Il est important de noter que l’équipe choisit sa mission et non l’inverse. Nous faisons cela pour encourager l’agence, l’autonomie et le but, quelle recherche a montré à maintes reprises, favorisent des employés très motivés et engagés, ce qui entraîne une productivité accrue.

Une fois qu'une nouvelle équipe de développement de logiciels est créée, ils ont créé un plan pour fournir la fonctionnalité qu'ils ont choisi d'implémenter. Cela impliquerait généralement de travailler avec le bon de commande (et potentiellement les clients) pour assurer une portée appropriée de la fonctionnalité et probablement un processus de conception, en fonction de la complexité de la fonctionnalité. Les équipes passent généralement de quelques jours à quelques semaines dans cette phase, encore une fois, en fonction de la complexité de la fonctionnalité. L'un des artefacts principaux de cette phase est une estimation de haut niveau (HLE) du moment où l'équipe s'attend à fournir la fonctionnalité.

L'équipe est responsable du développement complet de ses fonctionnalités, depuis la conception, la mise en œuvre et les tests. Bien que la livraison progressive soit fortement encouragée, la qualité incrémentale est fortement déconseillée. Nous nous efforçons de garder la pointe de notre base de code à un niveau de qualité accessible à tout moment.

Sprints d'équipe

Une équipe de développement logiciel chez Qumulo travaillera lors des sprints hebdomadaires 2. Comme je l'ai mentionné précédemment, nous publions de nouvelles versions de notre logiciel toutes les semaines 2. Comment cela fonctionne, pourrait être un bon article en soi. Chaque équipe (nous avons ~ 10) s’aligne sur cette cadence de publication sans exception.

Au début de chaque sprint, les équipes passent par une phase de planification pour définir ce qu’elles s’attendent à accomplir dans le sprint. De même, les équipes effectuent une évaluation (à laquelle tout le monde peut assister) à la fin de chaque sprint au cours duquel l'équipe présente ce qu'elle a accompli et l'évalue par rapport à ce qu'elle a cherché à atteindre. Cette cadence de plan / examen permet aux équipes de prendre confiance dans leur EH et de s'assurer qu'elles progressent bien vers leur objectif de livraison.

Mouvement d'équipe

Nous encourageons les mouvements d'équipe sur deux axes pour ainsi dire. Tout d'abord, l'appartenance à une équipe peut changer. Et deuxièmement, la charte de l’équipe changera, généralement lorsqu’une équipe aura achevé sa charte actuelle. Il y a eu très peu d'exceptions, dans lesquelles une équipe a dû abandonner sa charte et travailler sur une nouvelle, en fonction des besoins de l'entreprise.

Le changement d'appartenance à une équipe est dicté par l'individu et constitue un autre moyen d'encourager les agences et le choix. Cela aide également les individus à essayer de travailler sur différentes parties du produit, en les aidant à développer de nouvelles compétences. Étonnamment, le mouvement de l'équipe n'est pas aussi élevé que vous l'imaginez. une poignée par trimestre.

Structure de l'équipe

Comme mentionné précédemment, une équipe de développement de logiciels n'est pas seulement composée d'ingénieurs logiciels / matériels, mais également d'un coach agile et d'un propriétaire de produit. Nous n'avons pas de chefs d'équipe. Aucun gestionnaire de développement et aucun responsable par équipe. En fait, nous n'avons pas de hiérarchie au sein de l'organisation d'ingénierie.

Des équipes d'affrètement fixes aka Equipes spéciales

Certaines de nos équipes ont une charte fixe. Celles-ci sont généralement destinées aux équipes dont nous prévoyons avoir besoin tout le temps. Nous en avons quelques-uns, qui sont:

  • Performance: Rend notre logiciel zoom zoom
  • Support: Nous adhérons à “Vous le cassez. Vous résolvez cela »mentalité et à ce titre nous avons une équipe de support composée d'ingénieurs en logiciel
  • Infrastructure d'ingénierie: Construire un système, CI et de nombreux autres outils dont nous dépendons pour créer notre produit
  • Plates-formes: évalue les nouvelles plates-formes physiques et virtuelles sur lesquelles nos logiciels s'exécutent, ainsi que les nombreuses nouveautés matérielles
  • Certification: Cette équipe est composée de nos ingénieurs QA 3 qui travaillent sans relâche pour garantir que nos logiciels puissent être distribués en toute sécurité à nos clients.

À l'exception de l'équipe de certification, l'adhésion des équipes ci-dessus est volontaire. Oui, même notre équipe de support est 100% en fonction de la sélection de personnes pour rejoindre cette équipe. L'équipe de support a une exigence: séjour minimum de 3 mois. Et nous avons également une liste d'attente pour cette équipe.

Nous avons adopté ce modèle pour la structure de l'équipe de développement de logiciels depuis notre création (il y a quelques années, 5) et cela a très bien fonctionné pour nous. Nous avons embauché des personnes intelligentes et créatives qui veulent contribuer au succès de Qumulo. En permettant aux individus de sélectionner le groupe de personnes avec lequel ils travaillent et les projets sur lesquels ces équipes travaillent dans le cadre des contraintes des besoins de l’entreprise, nous pouvons garder les individus engagés et capables de faire de leur mieux. En favorisant un processus qui implique le choix de déterminer les groupes de travail et les tâches, nous favorisons l’autonomie et la propriété des résultats.

 

Articles Similaires

Remonter en haut