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?
la source
Réponses:
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.
la source
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:
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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:
la source
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.
la source
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.
la source
Il y a quelques listes différentes que je serais tenté de revoir à partir de votre position:
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,
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!
la source
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.
la source