En tant que chef d'équipe, comment pouvez-vous aider vos programmeurs à se développer?
La raison pour laquelle je pose cette question est qu'il y a quelques programmeurs qui travaillent avec moi, et je veux vraiment "les mettre en liberté", réaliser leur potentiel maximum et les garder heureux.
Mais je ne sais pas trop comment faire, dois-je
- Interagissez-vous fréquemment avec eux ou donnez-leur du temps tranquille, ne les laissez pas être dérangés?
- Demandez-leur de suivre les directives de codage, telles que l'application de tests unitaires, de styles de codage, ou laissez-les faire ce qu'ils jugent bon?
- Soyez indulgents avec eux. Tels que ne se soucient pas vraiment s'ils entrent vraiment en fonction pendant 8 heures ou 4 heures, ou ont besoin d'appliquer certaines "disciplines" sur le lieu de travail?
Devinez quoi, chaque position a ses propres points, et différentes personnes plaideraient pour des choses différentes. De telles confusions rendent la gestion des personnes indéfiniment plus difficile.
Qu'est-ce que tu penses?
management
Graviton
la source
la source
Réponses:
C'est une ligne très fine que vous devez parcourir.
En fin de compte, toutes les décisions techniques que vous prenez sont des décisions avec lesquelles vous n'aurez pas à vivre. Faites-en donc le moins possible, laissez les gens qui doivent vivre avec eux faire leurs propres choix. Mais guidez-les si vous pensez qu'ils vont sur une mauvaise route.
D'un autre côté, les choix de processus vous appartiennent. Dans ces décisions, laissez l'équipe vous guider, mais en fin de compte, vous devez les prendre. Au moins au début.
Lisez les trois étapes de maturité d'une équipe logicielle de Roy Osherove et voyez si vous pouvez déterminer à quelle étape se trouve actuellement votre équipe. Cela devrait affecter votre façon d'agir. Plus c'est chaotique, plus vous devez mettre de contrôles en place. par exemple. Dans une équipe extrêmement chaotique, vous devez commencer par revoir tout le code engagé. Mais pendant que vous faites cela, prenez le temps de leur apprendre à réviser le code de chacun.
Et si vous parvenez à retirer une équipe du Chaos à la quarantaine, changez votre comportement à ce stade, sinon ils ne bougeront plus (ce dernier par expérience personnelle).
la source
Oui, la gestion des personnes est indéfiniment plus difficile que la gestion des ordinateurs ou des logiciels, précisément parce que chaque personne est différente, et nous pouvons changer même de jour en jour. Il n'y a donc pas de réponse universelle. Je crois que vous avez juste besoin de beaucoup communiquer avec vos développeurs pour apprendre à les connaître et comprendre leurs forces / faiblesses individuelles, leur attitude envers le travail et l'apprentissage, etc. Vous pouvez ainsi en apprendre davantage sur chacun d'eux, qu'il préfère beaucoup de communication et d'ateliers, ou apprendre seul dans un coin tranquille.
Les développeurs à mon humble avis dans des circonstances normales ont une envie naturelle d'apprendre (à moins qu'ils aient été épuisés ou blasés par une mauvaise expérience de travail précédente). Il vous suffit donc de comprendre quoi et comment ils aimeraient apprendre, et de leur fournir les outils et le temps pour le faire (dans des limites raisonnables bien sûr).
Par exemple, dans notre équipe, nous pouvons librement définir des tâches d'apprentissage pour nous-mêmes, à condition qu'elles soient en quelque sorte (directement ou indirectement) liées au projet. Ces tâches sont généralement de quelques heures à un jour par sprint (mais pas à chaque sprint). (Un exemple récent: j'ai eu une tâche pour apprendre et expérimenter avec Scala acceptée, sur la base que cela - et une approche fonctionnelle en général - pourrait aider à simplifier une partie complexe de notre code Java.) Ceux-ci sont ensuite hiérarchisés et planifiés dans un Sprint, tout comme les tâches régulières. Il est également encouragé et attendu d'effectuer des démonstrations / conférences sur ce que nous avons appris, de transférer les connaissances aux autres membres de l'équipe (et éventuellement même aux développeurs de différentes équipes).
Lorsque vous travaillez en équipe, suivre le même processus de développement est indispensable. Bien sûr, ce processus devrait être la chose la plus simple qui pourrait fonctionner, pas quelque chose de décrit dans un manuel de 600 pages. Et le processus doit être défini et adapté en permanence à la situation par l'équipe elle-même . Donc, si l'équipe a accepté une norme de codage et TDD, elle doit la suivre.
Si vous ne connaissez pas un développeur, il est normal de suivre de plus près ce qu'il fait, ses livraisons, son rythme de travail, etc. Il est également correct de revoir son code (soit vous-même, soit une équipe expérimentée et de confiance) membre). Une fois qu'elle a gagné la confiance, elle peut progressivement obtenir plus de liberté. Mais cette confiance doit être gagnée en premier. En ce qui concerne les heures de travail, selon mon expérience, les horaires flexibles sont excellents jusqu'à une limite, c'est-à-dire qu'il est bon d'avoir un minimum commun convenu, comme tous les jours entre 11h et 14h, lorsque les développeurs se trouvent (généralement) sur leur lieu de travail, afin qu'ils peut être approché avec des questions, ou invité à des réunions. Mais à part cela, il est inutile d'être strict.
la source
OK en tant que chef de file, c'est votre travail de faire sortir les projets. Vous devez donc être celui qui applique les normes, examine les codes, demande des rapports d'étape et toutes ces choses lorsque les développeurs préfèrent que vous les laissiez seuls. Ces choses ne sont que des exigences de la direction et, à l'exception des revues de code, elles n'augmentent pas vraiment les compétences des employés.
Cependant, vous voulez les aider à grandir, ce qui est un excellent attribut d'un leader.
Les révisions de code sont certainement une première étape, elles vous aideront à voir qui a moins que des habiletés stellaires et a besoin d'être amélioré pour avoir même des performances satisfaisantes. Ils aideront les développeurs à voir d'autres façons de faire et à comprendre différentes parties de la base de code que celles sur lesquelles ils ont personnellement travaillé. À mon avis, les révisions de code sont mieux effectuées en personne dans une salle de conférence avec le développeur et le réviseur (qui devrait être un autre développeur lorsque cela n'est pas toujours le responsable, la révision du code des autres est également une compétence qui doit être développée) et vous en tant que un modérateur. Vous devriez prendre des notes sur ce qui devait être changé pour identifier les tendances. Ce que vous recherchez vraiment, ce ne sont pas des erreurs ou des changements (le code de tout le monde peut être amélioré), mais un échec constant à apprendre des erreurs. Ne dites pas à la haute direction que vous conservez ces notes ou vous vous retrouverez obligé de les utiliser comme mesures dans le processus d'examen des performances, ce qui va franchement à l'encontre de l'objectif. Si plusieurs développeurs font les mêmes erreurs, une session de formation ou une entrée wiki sur la façon de faire X peut être nécessaire.
Passons maintenant au vice croissant pour atteindre le niveau minimal. Tout d'abord, vous devez savoir quels sont les ensembles de compétences dont disposent les développeurs et quels ensembles de compétences il serait utile qu'ils aient et ce qu'ils pourraient être intéressés à obtenir. n'aime pas faire.
Ne donnez pas toutes les tâches intéressantes uniquement aux plus qualifiés. Cela n'aide pas les autres à se familiariser avec les nouveaux problèmes et technologies. Vous ne pouvez pas passer du type le plus subalterne aux tâches les plus petites et les moins importantes au type senior à moins que quelqu'un ne prenne une chance et vous assigne un travail plus difficile. Cela dit, les moins expérimentés devront peut-être d'abord être affectés au programme de jumelage avec une personne âgée pour acquérir des compétences plus avancées. L'inclusion des juniors dans les revues de code les exposera également à des techniques plus avancées.
Donnez-leur d'abord une chance de comprendre le problème eux-mêmes. Mais parfois, les gens sont bloqués et ne savent pas par où commencer (une compétence que vous devez également développer en particulier chez les nouveaux programmeurs) ou quoi faire pour résoudre un problème.
Si vous leur donnez quelques jours pour rechercher quelque chose et qu'ils n'ont toujours pas de direction sur la façon dont ils vont faire quelque chose, alors vous devrez peut-être intervenir avec quelques suggestions. Si vous êtes vous-même technique, vous pouvez leur donner quelques idées pour résoudre le problème. Sinon, une réunion avec plusieurs personnes où vous réfléchissez à des idées peut aider si la personne est coincée. Ou demander à une personne plus expérimentée de faire quelques suggestions. Ce que vous ne voulez pas, c'est leur enlever le problème et le résoudre vous-même. Mais vous devez équilibrer la réalisation du projet avec l'ego du programmeur et parfois vous devez les envoyer dans une direction spécifique. S'il a une mauvaise solution et qu'elle doit être corrigée, la pire chose que vous puissiez faire est de la donner à quelqu'un d'autre, sauf si vous avez l'intention de virer le programmeur.
J'ai vu de mauvais programmeurs choyés, où quelqu'un d'autre doit réparer presque tout ce qu'ils font. Les autres programmeurs en veulent et veulent juste que la personne sorte de leur vie. Choyer un mauvais programmeur fait partir les bons programmeurs. Vous devez trouver la frontière entre les compétences de dorloter et de développement. Si vous donnez à quelqu'un plusieurs chances et qu'il ne s'améliore jamais, coupez-le.
Pour les seniors qui sont déjà compétents dans leurs compétences actuelles, les choses sont plus faciles. Habituellement, il suffit de leur donner l'occasion de faire quelque chose de nouveau et ils se jettent à l'eau et l'apprennent. Assurez-vous simplement que les opportunités intéressantes se propagent et ne vont pas tous à Joe the Wonder Programmer qui peut tout réparer. Vous voulez vous retrouver avec dix Joes et pas un seul.
Une autre façon de développer des compétences est d'avoir une session de formation hebdomadaire d'une heure. Rendez chaque développeur responsable d'un sujet particulier. Cela les aidera à mieux communiquer, leur fera faire des recherches approfondies et donnera à chacun le bénéfice de leurs recherches. Certains sujets devraient être attribués à des personnes qui ne sont pas familières avec le sujet pour les forcer à acquérir des connaissances dans ce domaine et certains devraient être attribués à des personnes que vous connaissez être les experts locaux sur ce sujet. Les sujets devraient être une combinaison de choses dont vous avez besoin que les gens soient bons dans le futur proche ou en ce moment et une couverture des nouvelles technologies à venir que vous n'utilisez pas en ce moment mais les gens sont intéressés à savoir s'ils pourraient être utiles. Mais tout le monde, y compris les plus jeunes, doit se voir attribuer un sujet.
Selon la façon dont le temps de vos développeurs est facturé (c'est plus difficile dans une situation de facturation client), cela vaut généralement la peine que les développeurs disposent de 4 à 8 heures par semaine pour travailler sur des projets personnels. Ils seront ravis de le faire. Les meilleures personnes voudront y travailler et apprendront beaucoup qui deviendront utiles pour l'avenir. Il est difficile pour les compteurs de haricots de comprendre la nécessité de cela, mais ce temps sera remboursé à plusieurs reprises en termes de satisfaction des employés, de nouvelles fonctionnalités ou logiciels dont personne n'a besoin (ou qui aideront à automatiser une partie de la corvée) et un développement plus rapide en raison de nouvelles techniques apprises. Certains développeurs utiliseront ce temps strictement pour des projets personnels sans rapport avec ce que vous faites (et c'est bien, ils continueront à acquérir des compétences et seront heureux de l'opportunité), mais beaucoup d'autres l'utiliseront pour résoudre des problèmes persistants que, en raison de la nature de la gestion des projets, ndbody a eu le temps de régler au préalable. Vous pouvez donc obtenir des refactorisations qui profitent à tout le monde; certaines personnes pourraient passer des tests pour améliorer la couverture des tests afin de faciliter la refactorisation; d'autres pourraient explorer de nouvelles fonctionnalités qui pourraient rendre votre logiciel plus utile à ses clients. En général, si vous pouvez convaincre les compteurs de haricots, il n'y a aucun moyen de perdre en leur accordant cette liberté.
Vous devez apprendre à équilibrer en laissant aux gens un peu d'étirement pour leurs compétences et en gardant le projet sur la bonne voie. Moins le développeur est expérimenté, plus quelqu'un a besoin de vérifier les progrès, en particulier dans les premiers stades, lorsque le changement de direction est plus facile. Les inexpérimentés peuvent avoir du mal et avoir peur de parler. Ces personnes ont tendance à partir juste avant le lancement et vous constatez que leur partie du projet n'est pas loin d'être terminée. Soyez particulièrement prudent pour vérifier les progrès de toute personne que vous avez qui a changé d'emploi fréquemment (à moins qu'il ne s'agisse d'un entrepreneur car c'est la nature du contrat).
On peut généralement faire confiance aux plus expérimentés pour vous dire quand ils ont du mal à trouver la solution et ont besoin de l'aide de quelqu'un ayant plus de connaissances dans le domaine ou ils iront chercher cette personne et obtenir le transfert de connaissances. Ils n'ont donc pas besoin d'être surveillés aussi étroitement dans les phases initiales d'apprentissage d'un nouvel ensemble de compétences pour un projet. Ils trouveront un moyen de livrer le projet. Ceux qui ont un historique de livraison peuvent généralement être laissés seuls, sauf pour les rapports d'étape minimes (vous devez généralement faire rapport à votre direction aussi et donc avoir besoin de certaines informations).
la source
Quand je dis que votre travail consiste à faire respecter, je ne veux pas adopter une sorte de style de leadership draconien. Lorsqu'un groupe d'individus capables a leur mot à dire sur la façon dont ils vont se comporter, ils doivent également accepter les conséquences du non-respect des règles. Quelqu'un est finalement en charge et puisque vous êtes ce chef d'équipe, c'est vous.
la source
Interagissez fréquemment avec eux. Évidemment, ce n'est pas le point de les embêter, mais en tant que manager, vous devriez avoir des conversations régulières avec eux sur la façon dont les choses se passent et plus de discussions géniales. Environ une fois toutes les quelques heures, la bonne fréquence retentit, mais jouez-la à l'oreille.
Vous devez vous attendre à ce qu'ils fonctionnent exactement selon les mêmes normes que vous. Si vous effectuez des tests unitaires et suivez les directives, alors ils devraient. Ils doivent apprendre à bien coder et c'est votre responsabilité de leur enseigner cela.
Je serais plus diciplined au début, mais je me calmerais quand ils prouveraient qu'on peut leur faire confiance. Donner aux gens la confiance de travailler 4 heures par jour dès le départ demande des ennuis, mais laisser un employé apprécié qui travaille régulièrement tard a un peu de mou entre les projets est très bien.
la source
Relatif à vos trois points:
Je dirai que cela dépend vraiment du type de personne avec qui vous travaillez. Certains préfèrent discuter à l'heure du café fixe (vers 10h du matin, par exemple) et travailler autrement seuls, sans être dérangés. Avec eux (OK, je l'admets, je suis exactement comme ça), j'envoie généralement des e-mails (même lorsqu'ils sont près de moi, à 2-3 mètres environ) afin que vous puissiez leur laisser le choix lorsqu'ils liront vos informations . Et au fait, ne leur demandez pas s'ils ont "reçu votre mémo" :-) Et bien sûr, certains "ont besoin" de plus de conseils, plus d'interaction.
Quant aux directives suivantes, elles sont assez claires pour moi. Si vous définissez des directives relatives au style de codage, à la règle de toujours fournir un cas de test, etc., vous devez les appliquer si vous êtes le développeur principal. Pour le projet que vous gérez, chaque développeur doit suivre vos directives, sans exception, même pour les " superstars ".
Si vous savez déjà comment les gens travaillent et sont confiants, ils ne briseront pas votre confiance, vous pouvez détendre la discipline. Mais je pense que pour ce point la règle (ou non-règle) que vous définissez devrait s'appliquer à tout le monde. L'important est qu'il ne devrait pas y avoir d'exception. Je suis actuellement très heureux de travailler pour un chef de projet qui dit simplement "tant que vous faites vos 40 travaux par semaine et que le travail est fait, ça va". De cette façon, vous pouvez arriver tard un matin, travailler seulement 6 heures et les deux jours suivants travailler pendant 9 heures. Peu importe "tant que le travail est fait". J'aime cette règle.
la source
Je dirais que la quantité d'expérience (pas seulement en programmation, mais aussi dans les environnements commerciaux) de vos développeurs est un élément clé du temps que vous passez avec eux. Je travaille actuellement avec des développeurs qui viennent juste de quitter l'école, et je trouve qu'ils ont besoin de plus de conseils sur la façon de travailler avec les autres, non seulement dans la documentation / les tests / les normes, mais aussi dans les relations interpersonnelles (quand appeler au téléphone ou se rencontrer en personne, au lieu d'envoyer simplement des courriels). La connaissance de notre entreprise est également un élément clé à connaître, car bon nombre des mêmes mots sont utilisés très différemment dans notre contexte commercial que dans un contexte de développement logiciel. Et c'est avant d'arriver aux acronymes ...
la source
Ma suggestion est d'avoir quelques conversations sur le style qui fonctionne le mieux pour cet individu et d'affiner au fil du temps. Certaines personnes voudront peut-être se réunir une fois par jour pour examiner comment les choses se passent tandis que d'autres trouveront une fois par trimestre excessif. Certaines personnes peuvent souhaiter une revue de performance formelle et écrite tous les mois et d'autres peuvent simplement vouloir discuter des performances. La clé est d'obtenir la relation avec le stade où vous pouvez être honnête sur ce qui fonctionne et ne fonctionne pas pour quelqu'un.
Le revers de la médaille serait d'étudier les philosophies du développement personnel, même si cela peut être un chemin difficile si quelqu'un est mal analysé. Si vous voulez quelques exemples de telles philosophies, vous pouvez consulter Myers-Briggs, Ennéagramme et Strengths Finder 2.0 pour quelques exemples.
la source
Vous leur demandez comment ils préfèrent travailler.
Ce qu'ils aimeraient changer, etc.
Pas tout à la fois. Juste ... quand les choses se présentent.
Restez naturel. (ou ils sentiront la peur)
Et puis ... vous pouvez même apprendre des choses d'eux . Si vous ne pensez pas que ce serait le cas, (trop de distance dans l'éducation et l'expérience) ne vous embêtez pas vraiment à les faire grandir, cela ne ferait que les embrouiller.
(Dans ce cas particulier, abandonnez-le et régnez avec une poigne de fer , c'est plus honnête que de simuler l'intérêt que vous n'avez pas pour eux)
Établir un processus démocratique , voter les choses, discuter des problèmes.
Comme tout président, vous gardez le dernier mot: le veto .
Le reste appartient au groupe.
la source
Une façon d'aider votre peuple à grandir est de le laisser faire ce qu'il fait le mieux.
Si vous avez de la chance, vous aurez un ou deux programmeurs dont les normes de "test" personnelles sont plus strictes que celles de l'ensemble du département. Dans ce cas, vous pouvez les mettre sur le "système d'honneur" pour ces problèmes, ou même adopter leurs méthodes.
Avec le «temps flexible», vous pouvez accorder plus de latitude à vos employés les plus productifs. Tant qu'ils font le travail, je me soucierais moins de leurs heures. Certaines personnes entrent, mettent 5 à 6 heures «sans escale» et réussissent mieux que d'autres qui mettent 10 heures au rythme lent.
Mais l'un de vos emplois en tant que manager est de corriger les FAIBLESSES. Autrement dit, vous devrez TENIR COMPTE sur des programmeurs bâclés dont les normes de test sont inadéquates, ou des gens qui ne sont pas assez productifs - parce qu'ils ne mettent pas du temps.
la source