Comment structurer une équipe de développement

22

Je suis le gestionnaire d'une équipe de 11 développeurs de logiciels qui s'occupent des sites Web / applications Web de mon entreprise, exécutant jusqu'à 4 projets simultanés et un soutien quotidien à tout moment. Au sein des 11 développeurs, il y a un mélange de compétences techniques, de titres de poste et d'expérience, bien que la structure de l'équipe soit plate, les 11 développeurs relevant directement de moi.

Toute l'équipe ayant un seul manager commence à se révéler très peu évolutive. Je commence à être trop dispersé, donc je veux réduire mon nombre de subordonnés directs. Toutes les façons dont je peux penser pour ce faire ont des inconvénients importants:

  • Demandez aux développeurs juniors de faire rapport aux seniors. Cela réduit le temps consacré au développement par les meilleurs techniciens.
  • Divisez l'équipe par produit logiciel, par exemple, les développeurs 1-6 travaillent sur l'intranet et 7-11 travaillent sur les sites externes, chaque section ayant un nouveau chef d'équipe (éventuellement une nouvelle description de poste avec plus de responsabilités de gestion / mentorat / coaching que les développeurs seniors actuels). ). Cela ajoute des silos artificiels et pourrait rendre difficile la tâche d'un "développeur intranet" de travailler sur un site Web externe si je le souhaite.
  • Gardez la structure plate et ajoutez un soutien managérial sous la forme de chefs de projet / administrateurs d'équipe juste pour soulager la pression. Cela ne résout pas le problème car l'équipe ne peut pas continuer à grandir comme ça pour toujours.

Existe-t-il un moyen standard de résoudre ce problème qui me manque?

Sinon, comment d'autres d'entre vous ont-ils résolu ce problème?

Entaille
la source
2
Comment interagissez-vous avec vos rapports maintenant? Est-ce technique, administratif ou mixte? S'il s'agit d'un mélange, quel pourcentage de votre temps est consacré à chacun?
Telastyn
Un mélange 50/50 d'administration et de technique.
Nick
Est-ce spécifique à la programmation? Je me demande si cette question pourrait obtenir une meilleure réponse sur Workplace.se
Daenyth

Réponses:

16

Quelques réflexions rapides:

  • Les sous-équipes sont une bonne idée: 11 subordonnés directs sans structure sont trop grands pour une équipe viable (vous n'aurez pas assez de temps pour un coaching direct, et les réunions d'équipe avec lesquelles beaucoup de gens auront tendance à être improductives).
  • Envisagez de séparer les opérations du développement - c'est un ensemble de compétences légèrement différent et être interrompu toute la journée par des problèmes opérationnels peut sérieusement nuire à la productivité du développement sur les projets.
  • À la suite des deux premiers points, je pense que vous devriez avoir peut-être 3 sous-équipes - Intranet, Sites externes et Opérations. Les gars des opérations s'occuperont de tous les problèmes quotidiens / correctifs de maintenance, etc. tandis que les deux équipes de développement se concentreront sur la livraison de nouveaux projets / valeur à l'entreprise.
  • Faites régulièrement du vélo entre les équipes. Cela peut être occasionnel (par exemple, faire réviser du code dans une autre sous-équipe), pour un projet ou de façon permanente. Mais assurez-vous qu'il est entendu que les rôles d'équipe changeront chaque fois qu'il y aura un besoin commercial - personne ne "possède" un rôle spécifique pour toujours.
  • N'ajoutez pas plus de gestionnaires / administrateurs - c'est un moyen infaillible de réduire l'efficacité / la productivité globale de vos équipes. Demandez à la personne la plus expérimentée de chaque sous-équipe de jouer le rôle de chef d'équipe / entraîneur. Assurez-vous qu'ils voient ici leur rôle de coaching et de réussite de toute l'équipe, et assurez-vous qu'ils sont équipés pour se comporter de cette manière plutôt que d'agir comme un "gestionnaire de tâches".
  • Votre rôle doit être axé sur la gestion des parties prenantes externes, la hiérarchisation des ressources / tâches au sein du groupe et le rôle de «coach principal». Vous devrez gérer l'escalade occasionnelle des problèmes des sous-équipes, mais en général, vous devriez les encourager à résoudre les problèmes eux-mêmes sans venir à vous.
  • Si vous êtes vous-même hautement technique, vous pouvez également choisir de jouer un rôle d'architecte / d'assurance de la conception. Sinon, trouvez quelqu'un qui peut, au sein de l'équipe ou ailleurs .....

De plus, cela vaut toujours la peine d'aller et de (re) lire le Manifeste Agile , et surtout les douze principes .

mikera
la source
7
Chaque fois que j'ai travaillé quelque part où ils ont séparé le soutien à la production du développement, cela a été une énorme catastrophe. Si les gens ne soutiennent pas ce qu'ils développent, ils n'apprennent jamais où ils vont mal, et les développeurs de support finissent par se trouver dans un ghetto d'où il n'y a pas d'échappatoire.
HLGEM
3
@HLGEM - absolument, mais c'est pourquoi vous devez faire le tour des gens ... demandez aux gens de prendre en charge en direct leurs propres produits par tous les moyens, mais pas en même temps qu'ils développent la version 3.0. De plus, vous avez probablement un ou deux types d'opérations qui ne sont pas des développeurs et des tâches différentes à faire, il peut donc être judicieux d'avoir une structure d'équipe / un modèle de travail différent pour les opérations. YMMV bien sûr.
mikera
9
D'après mon expérience, ils promettent toujours de faire le tour des gens, mais ils ne le font pas, YMMV. Cela est dû en partie au fait que ceux initialement affectés au développement ne veulent pas passer au support.
HLGEM
4

Cette structure sera principalement depend on project specifications

Idéalement, il devrait y avoir 3 juniors par développeur senior dans une équipe. Par conséquent, il y a 2-3 développeurs seniors par responsable d'apprentissage.

Ainsi, seuls les responsables techniques feront rapport au PM sur l'état d'avancement du projet. La structure décrite suppose toujours que pour des questions non techniques (vacances, congés, conflits, etc.), tout le monde peut avoir accès aux MP.

L'une des équipes de développement de logiciels relativement réussie dont je faisais partie a quelque chose comme ça, par projet:

Un directeur du développement logiciel / développeur principal / mentor, à qui tout le monde relevait directement.

  • Un chef de projet, qui a respecté les horaires, facilité les exigences et la négociation d'acceptation, et fait les communications. Tout le monde en pointillé se rapportait également à cette personne. Une personne chargée de la documentation (qui était aussi parfois le Premier ministre, mais uniquement lorsque l'expertise le permettait).
  • Un mélange de 1 à 3 développeurs ou développeurs seniors, selon les besoins du projet.
  • Un développeur junior lorsqu'il est disponible.
  • Quelqu'un affecté à partir d'un pool QA.
  • Une personne en infrastructure (un rôle souvent rempli par le gestionnaire, car il avait également de solides compétences en SA).

Cela a parfaitement fonctionné et j'ai adoré cette organisation. D'un autre côté, j'étais le responsable du développement logiciel et la structure organisationnelle de l'équipe évoluait.

EL Yusubov
la source
2

Envisagez de suivre le modèle d'organisation du personnel fonctionnel . Cela parlerait de votre deuxième option de scinder l'équipe par produit logiciel.

Pour citer l'article dans votre contexte:

La plus grande force d'une organisation fonctionnelle est qu'elle lie les structures sociales à la livraison de la valeur commerciale. À mon avis, les projets logiciels réussissent autant qu'ils améliorent l'efficacité de l'activité qu'ils soutiennent, ce qui génère une valeur commerciale. En organisant vos équipes de la même manière, vous avez une équipe orientée vers la satisfaction de leurs utilisateurs métier.

La structure réelle de gestion / RH n'est pas pertinente au-delà de cela.

Konr Ness
la source
0

Existe-t-il un moyen standard de résoudre ce problème qui me manque?

Pas vraiment. Cela dépendra de votre équipe, de vous, de ce que vous devez faire et des ressources que l'entreprise mettra à votre disposition.

Personnellement, le meilleur type de changement est de séparer la gestion technique de la gestion administrative. Il est rare que les gens soient bons dans les deux cas, et ils ont rarement tendance à interagir.

Une personne s'occupe des aspects techniques. Ce qui doit être fait, qui va le faire, comment les choses doivent s'aligner. L'autre gère les aspects administratifs. Examens, réunions budgétaires, planification de produits, etc. Ils travaillent ensuite ensemble pour communiquer des idées d'un côté à l'autre et pour fournir un front uni.

La façon dont cela est divisé peut prendre différentes formes. Le plus commun est d'avoir le directeur de l'ingénierie du côté administratif et un architecte du côté technique. Ce sont des pairs qui relèvent d'un directeur / vice-président.

Un autre travail que j'ai vu consiste à faire en sorte que le directeur de l'ingénierie soit la personne administrative, puis le ou les chefs d'équipe agissent en tant que personne technique. Ceci est plus délicat et nécessite que les bonnes personnes agissent en tant que pairs (la plupart du temps) même si le reporting est hiérarchique.

Pour votre scénario spécifique, je recommanderais d'avoir 2 à 3 équipes et d'avoir des responsables techniques pour les aspects techniques et vous concentrer sur l'administration. Oui, cela réduit le temps des leads qui écrivent du code, mais ils devraient (s'ils font du bon travail) récupérer ce temps en rendant les développeurs plus juniors plus efficaces / productifs. Cela leur donne aussi plus de motivation et un sentiment d'accomplissement avec la promotion réelle. Et le plus pratique, c'est une vente plus facile à la direction que l'ouverture d'une nouvelle position.

Telastyn
la source