Comment dois-je gérer une équipe avec différents niveaux de compétence?


16

Je vais travailler sur un projet logiciel avec des amis à moi et j'ai été nommé responsable technique. Aucun de ces gars n'est un mauvais programmeur du tout, mais j'ai beaucoup plus d'expérience qu'eux. Je dois être en mesure de répartir le travail entre tous les membres de l'équipe, tout en veillant à ne pas marcher sur les pieds les uns des autres; qu'ils répondent aux normes relativement élevées de qualité et d'évolutivité dont nous avons besoin pour réussir ce projet, sans me demander de revoir tout ce qu'ils s'engagent.

Comment dois-je maintenir les normes tout en évitant la microgestion? Est-il suffisant de créer des diagrammes, de planifier des révisions de code et d'avoir confiance que je serai en mesure de réparer tout ce qui pourrait casser, ou devrais-je suivre la route TDD et écrire des tests explicites pour que l'équipe les satisfasse?


11
Y a-t-il une équipe avec les mêmes niveaux de compétence?
P.Brian.Mackey

@ P.Brian.Mackey: Je veux dire tout à fait différent.
Jon Purdy

@ Jon: J'espère vraiment que vous savez dans quoi vous vous embarquez. Assurez-vous qu'ils ont du "porc" dans l'offre dès le départ (!). J'ai l'impression vague que vous avez besoin de quelqu'un avec beaucoup d'expérience là-bas avec vous, si, comme il semble, ils ne peuvent même pas écrire des tests unitaires et (!) N'ont pas découvert comment le faire par eux-mêmes: cela mène je pense que vous surestimez peut-être leurs compétences. Inutile de dire que supposer plus de compétences que ce n'est pas le cas n'est pas une bonne technique de gestion de projet.
Henrik

@Henrik: Je sais dans quoi je m'embarque, je n'ai tout simplement pas beaucoup d'expérience en gestion d'autres développeurs et je veux obtenir des conseils sur la façon de s'assurer que tout se passe bien. J'ai pleine confiance en leurs capacités, et je pense que les gens lisent beaucoup plus de négativité dans ma question que je n'en ai mis là. Je suis dans la programmation depuis un peu plus de la moitié de ma vie, donc j'ai déjà fait beaucoup d'erreurs que ces gars avec 2 à 3 ans d'expérience n'ont pas encore rencontrés.
Jon Purdy

Est-ce pour une entreprise ou un projet parallèle?
Marcie

Réponses:


10

Vous devriez revoir une partie de leur code et les laisser se revoir. Ce n'est pas que vous voulez être la police d'enregistrement, mais que vous souhaitez fournir des commentaires aussi souvent que possible. Être un réviseur peut renforcer leur compréhension. Laissez-les également réviser votre code. Soyez le modèle.

Note latérale: il ne devrait pas y avoir de surprise lors d'un examen annuel.


2
+1 pour "Soyez le modèle". C'est le plus grand avantage que j'ai vu dans les revues de code: apprendre de la douceur des autres. Cela, et attraper le défaut occasionnel.
Peter K.

1
Un outil pour la révision de code tout en étant un "purgatoire" est [ code.google.com/p/gerrit/]
Henrik

9

Par-dessus tout : communiquez vos attentes et votre conception de différentes manières possibles. Les diagrammes sont bons pour certains; les interfaces définies fonctionnent pour les autres; la programmation par paires fonctionne également; les révisions de code formelles peuvent également aider certaines personnes.

Je recommande également d' utiliser autant que possible l'automatisation:

  • Demandez à l'équipe d'utiliser un outil comme NDepend ou Resharper si vous êtes dans le domaine .Net. Modifiez les règles standard si vous ne les aimez pas.
  • Automatisez vos tests autant que possible.

Il est difficile de discuter d'un scénario de test défaillant ou d'un outil d'inspection automatisé, à condition qu'ils soient bien configurés.


3
Les mauvais programmeurs configurent probablement de mauvais cas de test?
JeffO

1
Des outils comme Resharper sont définis par défaut. soigné, mais certainement pas gratuit. Les tests automatisés nécessitent l'écriture de code testable qui peut être une exigence peu pratique si leurs niveaux de compétence sont loin de la normale.
P.Brian.Mackey

@Jeff: Ce ne sont pas de mauvais programmeurs, nous venons de différents horizons et j'ai des années dessus. Vraisemblablement, moi et le gars le plus expérimenté, j'écrirais les tests, le cas échéant.
Jon Purdy

@Jeff O: Ensuite, retirez-les de l'équipe.
Peter K.

@ P.Brian.Mackey: Il n'y avait aucune spécification d'outils gratuits dans la question. Si le code n'est pas testable, retirez-les de l'équipe. Essayez de leur montrer comment écrire du code testable, et s'ils n'apportent aucune amélioration, retirez-les de l'équipe.
Peter K.

5

Si vous travaillez vraiment avec une grande variété de niveaux de compétence sur le même projet, il y aura des problèmes. La question est quand les traitez-vous? Vont-ils écrire un code si mauvais que vous feriez mieux de ne pas avoir leur aide? Est-ce que cela va créer une tension personnelle? Allez-vous mettre fin aux amitiés? À ces questions, personne ne peut répondre que vous.

En supposant que tout le monde restera dans l'équipe, je recommande de diviser les tâches en petits morceaux (les plus gros vont à des mecs plus qualifiés) et de laisser les développeurs les plus qualifiés se refactoriser lorsque vous avez terminé. Assurez-vous d'exécuter QA à intervalles serrés et réguliers. C'est assez proche de ce qui se passe en réalité de toute façon.


3

Autant que possible, évitez les mauvaises herbes. Dans n'importe quelle équipe, si vous êtes le leader, vous devez économiser une certaine partie de votre bande passante pour les crises et la vue d'ensemble. Les diagrammes sont bons et les normes de codage sont toujours saines, mais la mise en place de processus où les gens vérifient le travail des uns et des autres est encore meilleure (tests croisés, examens par les pairs, programmation par paires). Tout le monde dans l'équipe n'a pas besoin d'être une star - l'équipe ensemble peut généralement surmonter les faiblesses individuelles.

La chose que je recommanderais est que vous résistiez autant que possible à l'envie de dire aux gens quelles erreurs vous voyez dans leur codage - au lieu de cela, amenez-les à le voir eux-mêmes. Restez une partie de l'examen collaboratif du travail de développement, mais assurez-vous de ne pas contribuer plus que les autres membres. Au lieu de cela, faites l'effort supplémentaire pour encourager les gens à voir ce que vous voyez et donnez de nombreuses explications sur la raison pour laquelle les choses que vous voyez sont importantes.

Ne vous inquiétez pas trop du chevauchement - au-delà d'une interruption raisonnable du travail, vous pouvez demander aux membres de l'équipe de s'enregistrer entre eux, puis de vérifier simplement que la communication a eu lieu. L'équipe commencera rapidement à se considérer les uns les autres comme un moyen de parvenir à un consensus, ce qui rend votre travail environ 20 fois plus facile - alors tout ce que vous avez à faire est de rompre les liens lorsque les principaux domaines ne sont pas d'accord.

Économisez ensuite vos efforts pour regarder l'équipe collectivement. Chaque personne aura des forces impressionnantes et des faiblesses fascinantes. Idéalement, vous commencerez à lancer du travail sur des personnes qui correspondent à leurs forces tout en leur donnant une chance de surmonter leurs faiblesses de manière à ne pas désactiver la productivité de l'équipe.

L'étoile d'or ultime du leadership d'équipe est de faire prendre conscience aux gens de leurs faiblesses de manière à ce qu'ils soient suffisamment motivés et bien informés pour commencer à les corriger.


2

Asseyez-vous et discutez des technologies et des ensembles d'outils sur lesquels tout le monde dans l'équipe est d'accord. Certaines personnes peuvent être plus expérimentées dans les outils convenus que d'autres dans l'équipe, donc celles qui sont plus expérimentées doivent être disposées et agréables à partager l'expérience et les connaissances avec les autres.

Discutez, acceptez, notez, modélisez et communiquez les normes (telles que la convention de dénomination, les meilleures pratiques de codage et les structures de dossiers).

Faites des tests continus et réguliers et une vérification de la qualité. Informez la personne dès que possible lorsque vous voyez des incohérences.


2

J'allais dire «demandez à la personne la plus expérimentée de l'équipe de l'organiser», mais il semble que vous soyez cette personne.

Si vous le pouvez, divisez le projet en deux niveaux. La couche application / couche pilote est une bonne division. Formez deux sous-groupes au sein de votre équipe et faites une personne dans chaque responsable de ce niveau. Cela peut très bien fonctionner.

Résignez-vous à cela. Vous devrez revoir tout ce qu'ils s'engagent, en particulier au début. Si tout se passe à merveille, vous n'aurez qu'à regarder le code. La révision ne vous prendra pas beaucoup de temps et vous donnera beaucoup de confiance. Plus probablement, vous constaterez que quelqu'un utilise mal les sémaphores ou écrit sa propre version d'une fonction de bibliothèque ou une telle folie. D'après mon expérience, vous devez regarder le code pendant qu'il est écrit pour éliminer les problèmes de code dans l'œuf.


Mettez-vous d'accord sur la partie de révision du code. Vous devez les guider le plus tôt possible.

2

Qu'attend-on normalement d'un responsable technique dans votre entreprise? Je suis manager et j'ai été à quelques reprises dans cet endroit et je suis sur le point de recommencer à partir de cette semaine (embauche de débutants et autres pour rejoindre une équipe de 20 ans et 4 ans d'expérience).

Je suis un manager et je peux être un responsable technique (au cours des dernières années, j'ai minimisé ce dernier rôle pour développer le leadership au sein de l'équipe. En tout cas, quelques réflexions:

  • Évaluez les compétences et les faiblesses de toute l'équipe.
  • Créez un plan de croissance - Pendant que vous vous concentrez sur les membres les plus faibles, vous devez vraiment vous concentrer sur la croissance de tout le monde en tant qu'individus et en équipe.
  • Communiquez ce plan et définissez les attentes de chacun.
  • Distribuez l'apprentissage et la validation au sein de l'équipe. Tandis que vous, en tant que responsable, vous êtes le lionshare du travail, la distribution du travail aidera les membres de votre équipe plus âgés à devenir des leaders.
  • Créez une boucle de rétroaction régulière. Rencontrez les membres de l'équipe pour évaluer les progrès et fournir des commentaires.
  • Ajustez le plan, si nécessaire, pour assurer le succès.
  • Si quelqu'un ne s'entraîne pas et ne veut pas, même avec une aide raisonnable, être prêt à l'expulser. C'est compliqué, mais si vous avez établi un plan, des attentes et fourni une boucle de rétroaction, vous serez bien mieux placé pour le faire.
  • Gardez un œil sur le moral de l'équipe. Ce type de situation peut faire de grandes choses pour développer une équipe ou la déchirer. Vos compétences en leadership et votre investissement dans l'équipe contribueront grandement à définir le résultat.

1

Essayez de voir ce qui entre dans la définition d'une "architecture logicielle". La création de modules pouvant être développés séparément est l'une des principales raisons de la conception et de l'analyse initiales. Je sais que faire ce type de travail est démodé, mais cela fonctionne dans tous les cas, par opposition à seulement certains cas que les nouvelles méthodes de développement épousent.


1

En tant que développeur le plus expérimenté de l'équipe, j'attendrais de votre coaching intensif .

Laissez l'équipe se donner du travail en utilisant le kanban , puis passez toute votre journée à faire de la programmation en binôme avec chacun d'eux.

Lorsque vous voyez une mauvaise habitude ou quelque chose dont ils devraient (tous) être conscients, arrêtez tout et dessinez sur le tableau blanc.

Après quelques semaines, vous pourrez ralentir le coaching intensif car les compétences globales de l'équipe se rapprocheront des vôtres.


1

Il y a quelques listes différentes que je serais tenté de revoir à partir de votre position:

  1. Comment je connais bien cette équipe. Connaissez-vous les forces et les faiblesses de tous les membres de l'équipe? Savez-vous comment tirer le meilleur parti de chaque personne? Savez-vous comment répartir le travail d'une manière relativement équitable pour tout le monde? Ce genre de questions est quelque chose à poser et à comprendre qu'il peut y avoir des changements dans ces listes au fil du temps car certaines personnes peuvent développer des compétences qui peuvent changer la façon dont elles sont perçues. Lorsque vous avez été nommé, y avait-il des attentes que certains membres de l'équipe avaient de vous? Cette dernière question peut être difficile à répondre honnêtement aux gens, mais elle peut être très utile si elle peut être divulguée et discutée de manière significative sans attiser l'offense ou le ressentiment, ce qui peut être assez facile si ce qui est discuté est très personnel pour certains. gens. N'essayez pas d'obtenir des opinions personnelles lors d'une réunion de groupe,

  2. Comment je me connais bien. Quels éléments de votre expérience utilisez-vous pour revendiquer une autorité technique ici? Quelles forces et faiblesses apportez-vous à l'équipe? Êtes-vous censé entrer régulièrement dans les tranchées? Y a-t-il des pratiques que vous avez vues que vous voudriez présenter à cette équipe pour aider à les diriger? Y a-t-il des signes d'avertissement dont vous vous souvenez de votre expérience passée qui peuvent être utiles pour voir si l'un d'eux commence à apparaître dans le travail de l'équipe?

D'une certaine manière, tout se résume à la communication. Bonne chance!


0

avoir une présentation régulière (hebdomadaire) d'un sujet technique et le faire tourner autour du groupe. De cette façon, tout le monde apprendra quelque chose. Et laissez les plus jeunes membres présents aussi, il n'y a pas de meilleur moyen de vraiment comprendre quelque chose qu'en l'enseignant. Vous devrez peut-être les aider à choisir des sujets.

Un coaching sur la façon de donner une conférence peut être de mise pour tout le monde. J'avais un prof à l'université qui a fait ça pour moi et c'était très utile.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.