Question:
Comment aider un développeur senior qui va au-delà de l'aide
Miro K.
2018-05-16 01:06:11 UTC
view on stackexchange narkive permalink

J'ai récemment été promu en tant que manager dans une petite entreprise (moins de 20 personnes), je ne suis sur le marché du travail que depuis environ 2,5 ans et je suis développeur principal de notre projet. Le développeur senior travaille depuis plus longtemps que moi et fait partie du projet depuis plus d'un an maintenant. Le développeur senior a une expérience en C / C ++ / C #, pas en python.

Les problèmes avec le développeur senior sont:

  • Oublie la moitié des exigences, ou s'il ne les comprend pas il les ignore totalement
  • Ne teste pas son code, et commet souvent du code cassé
  • Ne pense pas que la validation des valeurs compte et ne se soucie même pas si certaines exceptions ne sont pas détectées
  • Ne suit pas les directives de style communes (PEP8)
  • Oublie comment coder en Python et implémente des solutions folles même pour les problèmes les plus simples
  • Ajoute des fichiers aléatoires au projet et supprime parfois de vrais fichiers. Annule parfois les autres modifications. (git svn rebase ftw)
  • Je le trouve souvent en train de refactoriser du code de travail en un code moins fonctionnel. (Son activité préférée)
  • Évite de communiquer avec moi

Ce que j'ai essayé avec lui:

  • Nous avons commencé à faire des documents de conception et en les examinant -> Ne les suit pas ou ne les fait pas parce que "il y a des questions ouvertes", donc démarrer la mise en œuvre n'est qu'une solution raisonnable pour lui.
  • J'ai essayé de lui dire que son les performances / la qualité du code ne sont pas acceptables
  • Je lui ai toujours enseigné des astuces Python et comment les utiliser correctement, quand je le vois mal utiliser des trucs python
  • Je dois tout revoir il commet et corrige ses bugs, maintenant je pense qu'il s'attend à ce que je répare tout pour lui. Et plus que d'autres, je dois mettre en œuvre le reste des exigences.

Le problème est que je n'ai pas le pouvoir de le licencier, le client paie l'entreprise peu importe le peu que nous faisons, donc aucune pression de leur part. Étant donné que le client paie en fonction des heures utilisées, le grand patron ne veut pas non plus le licencier.

Actuellement, je trouve plus facile et plus rapide de ne pas lui confier de tâches, les délais se rapprochent et il est plus rapide de les faire moi-même. J'envisage en fait de changer d'emploi à cause de lui. Il est gentil d'un autre côté. Actuellement, le projet a 1 autres développeurs, et il va bien.

De temps en temps Le grand patron me dit de mettre ses performances en bon état, il sait à quel point les choses sont mauvaises, nous avons dû annuler un projet parce que développeur senior était le développeur principal de ce projet, alors maintenant c'est mon problème.

Y a-t-il encore des étapes pour l'aider à devenir un meilleur développeur, ou est-ce que tout espoir est perdu?

Pourquoi fait-il Python s'il n'a aucune expérience en Python?Est-il intéressé à l'apprendre, ou lui a-t-il été imposé?Comment était-il en tant que développeur avant la transition vers Python?
Il s'est retrouvé dans mon projet car son projet a été annulé.c ++ devrait être plus difficile que python, alors le patron pensait qu'il était peut-être d'accord avec ça.Il a fait les mêmes erreurs avec C ++, donc je ne sais pas.Il dit qu'il veut mieux connaître Python.
@Jonas Pream Eh bien, le client actuel ne connaît pas la situation, il n'a aucune idée, donc il pense que nous sommes en sécurité.
Donnez-lui le "siège de fenêtre", semble être un gagnant-gagnant pour tout le monde.
Faites des sauvegardes locales quotidiennes de votre référentiel git.Il est parfaitement possible de détruire l'historique pour un utilisateur expérimenté.
la toute première chose que vous devez faire est de supprimer ses droits sur le dépôt git et de lui permettre uniquement de travailler sur d'autres branches et de tirer une requête.S'il est en train de gâcher le code des autres, il devrait être empêché de le faire.
Savez-vous pourquoi vous (un pipsqueak avec 2,5 ans d'expérience) avez été invité à reprendre l'équipe à sa place?
Utilisez les demandes de fusion et faites-lui nettoyer son propre désordre.Ne les fusionnez pas tant que vous n'êtes pas satisfait.
Étape 1, jamais et vraiment dire jamais, corrigez le code de quelqu'un d'autre.Critiquez et renvoyez-le pour qu'ils le réparent.
@rath Je m'entends très bien avec le patron et je travaille depuis plus longtemps dans l'entreprise.Et j'étais le chef de projet car je n'étais qu'un expert en python et je fais avancer les choses.
Tout développeur décent avec plus de dix ans d'expérience ne devrait pas avoir de difficulté à acquérir Python.Les subtilités de la langue prennent plus de temps, mais pas si longtemps si vous souhaitez l'apprendre.Je suis d'accord avec la réponse suggérant que vous lui demandiez d'écrire un cadre de test automatisé pour votre application principale - cela l'empêche de faire de réels dommages et est également précieux.(Il pourrait même écrire le tout en C #!)
Par son attitude et son comportement, il n'agit pas comme un développeur senior.Il agit comme un intermédiaire voyou (développeur II) qui "sait mieux" que le chef de projet.Certaines personnes ne devraient jamais être promues à un poste supérieur même si elles ont de l'ancienneté.Indépendamment du langage, il ne semble pas qu'il aurait dû être un développeur senior pour C / C ++ / C #.
@HLGEM: En général, je suis d'accord, mais "jamais" est un peu fort.Parfois, quelqu'un d'autre est le patron, qui vient de vous dire de corriger son code et n'acceptera pas la critique ou le fait de lui «rendre» le code.
Ce que HGLM a dit.* Tout le monde * devrait faire réviser son code par un pair, pas seulement votre collègue maladroit, à l'aide d'un système traçable.À la fois comme moyen d'apprendre les uns des autres et comme moyen de faire respecter la responsabilité.En ce moment, vous permettez son ignorance en réparant ses affaires pour lui.
Y a-t-il moyen de lui donner un projet à faire dans Cxx, seul?Le fait sortir de vos cheveux et en fonction de ce que vous pouvez trouver, cela peut finir par être utile
Douze réponses:
Ángel
2018-05-16 03:06:42 UTC
view on stackexchange narkive permalink

Ma première idée a été d'ajouter un test, vérifié par un système d'intégration continue, afin de limiter le préjudice qu'il peut faire à votre projet, ce qui est aussi le point de réponse.

Ensuite, il y a le problème que ce type fait réellement de l'argent pour l'entreprise, d'une manière perverse. En faisant payer le client sur les heures passées, cela s'avère être un avantage monétaire d'avoir quelqu'un qui défait le travail des autres. Ce serait comme être engagé pour construire un mur et avoir à la fois un maçon en train de faire un mur et un autre employé le démolissant.

Cependant, à long terme, le client peut changer d'avis (peut-être pour ne plus jamais utiliser services de votre entreprise) s'il découvre que vous le faites (par inadvertance ou exprès), et que cela pourrait également être considéré comme une négligence de votre part.

Votre patron n'a probablement pas ces raisons machiavéliques pour pas le renvoyer, cependant. À ce stade, vous avez une personne dont le travail n'est pas du tout utile à l'entreprise. Je suggérerais de le changer pour une autre position . Vous dites que c'est une cause perdue de lui faire coder correctement python. Mais peut-être qu'il peut utiliser un bon manuel d'utilisation. Ou testez le programme sur ses différentes itérations pour vérifier que les fonctionnalités fonctionnent comme prévu. Techniquement, il ne travaillerait plus en tant que développeur . Cependant, c'est quelque chose qui repose assez souvent sur l'équipe de développeurs elle-même et, étant une petite entreprise, je suppose que vous n'avez pas d'équipe dédiée pour cela.

En tout cas, un mauvais testeur qui trouve qu'occasionnellement un bogue sera plus utile que l'anti-développeur qu'il semble avoir été en travaillant jusqu'à présent. Ainsi, toute tâche qui le tient occupé est probablement bénéfique, même avec un faible rendement. Et les compétences de développeur, lui permettant de lire et de comprendre le code, sont utiles pour diriger les cas de test, même s’il ne parvient pas à écrire le bon code (alors que ce n’est pas si grave s'il ne peut pas).

Un problème potentiel avec cette approche serait qu'il a réussi à tester le programme trop vite (peut-être parce qu'il saute la moitié des exigences?). La prochaine étape serait qu'il codait des tests automatisés pour vérifier les exigences du projet, afin qu'il n'ait pas besoin de passer du temps à effectuer en permanence les mêmes tâches ennuyeuses, et ils sont exécutés de manière cohérente à chaque fois. (Evidemment, de nombreuses itérations seront nécessaires pour pouvoir avoir une couverture complète des conditions requises)

Vous obtenez un vote positif seul pour l'utilisation de «machiavélique», bon travail sur la réponse.
Un moteur CI est idéal pour capturer très rapidement les commits de rupture de build.Faites-le d'abord.
Le problème avec le concept d'ajout de tests à exécuter via le système CI est que le développeur en question n'écrit pas suffisamment de tests pour commencer.De plus, en tant que personne qui "oublie la moitié des exigences", il manquera non seulement l'implémentation, mais manquera également les cas de test, masquant le problème.À moins que vous ne suggériez qu'une personne supplémentaire écrive d'abord tous les tests, je ne vois pas en quoi cela aide.
Neo
2018-05-16 01:41:22 UTC
view on stackexchange narkive permalink

En tant que son manager, il est de votre devoir de le tenir responsable de son absence de procédure de suivi. Je commencerais une trace écrite dans ce cas, car cet employé ne semble pas disposé à modifier ses mauvaises habitudes.

Si la trace écrite ne fonctionne pas, placez-le sur un plan officiel d'amélioration des performances [PIP] , en collaboration avec les RH, avec des objectifs clairement définis , des mesures et un délai pour atteindre les objectifs.

Si le développeur ne parvient pas à atteindre les objectifs, vous devez être libre et clair pour les laisser partir, et votre esprit doit être libre de toute culpabilité. Il peut également partir seul, ce qui résoudra également votre problème. J'espère que cela servira de réveil et qu'ils se ressaisiront.

Les actions devraient avoir des conséquences.Un PIP est une excellente idée.
Cela me semble être la bonne réponse.Si le PO n'est pas en mesure d'instaurer un PIP, il doit alors parler à son responsable pour clarifier exactement comment il est censé être responsable du travail de quelqu'un sans aucun des outils pour réellement améliorer le travail.Peut-être que la réponse pourrait être améliorée en incluant quelque chose de ce genre?
Je suis également d'accord avec cette réponse.De plus, plus vous attendez pour corriger, plus la situation s'aggravera.Les gens pensent toujours que des problèmes personnels comme celui-ci s'amélioreront ... ils ne le font pas ... vous ne faites que mieux les ignorer.Et en tant que son manager, vous serez le seul à blâmer lorsque la merde frappera le fan.Vous ne pouvez pas le licencier, mais vous pouvez l'écrire et documenter les problèmes qui peuvent être utilisés pour le licencier s'il ne travaille pas sur l'amélioration.
+1 pour le PIP.OP n'a peut-être pas le pouvoir de le licencier, mais en tant que supérieur hiérarchique de cet employé, il est responsable de l'évaluation des performances.L'essentiel est de suivre le manuel *** à la lettre ***.Assurez-vous que toutes les déclarations sur les performances sont étayées par des preuves.Donnez-lui la possibilité de se recycler ou de changer de poste et assurez-vous que le PIP comprend des jalons pour lui montrant une amélioration ou ne pas s'améliorer.Et bien sûr, sa prochaine augmentation de salaire devrait être de zéro, ou être une réduction de salaire si la résolution PIP est qu'il est rétrogradé.
user86403
2018-05-16 21:45:51 UTC
view on stackexchange narkive permalink

Vous avez une longue liste de choses pour lesquelles il est mauvais.

Dans quoi est-il bon?

Découvrez-le et configurez-le à la place.

li x
2018-05-16 01:46:53 UTC
view on stackexchange narkive permalink

Autant que cela puisse me gêner de suggérer, avez-vous envisagé d'implémenter quelque chose comme les tests TDD ou BDD dans votre pipeline? D'après mon expérience, une suite de tests bien développée, même si elle n'est pas implémentée de manière stricte, peut faire des merveilles pour les sous-performants. Cela n'accélérera pas son développement, mais cela rendra les objectifs plus transparents en ce qui concerne ce qu'il doit faire pour que ses correctifs soient à jour. Mieux encore, des choses comme la couverture de code peuvent être un excellent outil pour pousser la motivation car il aura une métrique visible associée à son travail en plus des avantages évidents.

Cela signifie également s'il ne fait pas les tests passer, il ne peut pas passer à plus de destruction.

Mon avis

Parfois, dans les équipes, il y a quelqu'un qui ne rentre pas dans le moule et ça ne devrait vraiment pas être sur vos épaules, mais c'est ainsi que vous devrez gérer cela en interne. En fin de compte, en tant que responsable, vous devez prendre les bonnes décisions pour l'équipe et si cela signifie limiter ce qu'il peut travailler et faire, il doit en être ainsi. Personnellement, je saisirais toutes les occasions de le rendre évident s'il ne s'améliore pas vous ne pouvez pas vous tenir la main autant que possible . Travaillez avec la haute direction et s'il ne travaille toujours pas, il y a un moment où vous devez l'appeler et l'informer sans ambages que cela ne fonctionne pas et que votre poste est qu'il doit partir ou passer à une autre partie du Entreprise. Certaines des choses que vous avez mentionnées si elles étaient effectuées en série vous mettraient au chômage dans de nombreuses entreprises que je connais.

Mon opinion impopulaire

Vous êtes un responsable et vous êtes en contact direct avec la haute direction, il est peut-être temps d'aligner un remplaçant si son comportement continue.

J'aime l'idée du TDD, car l'entreprise devient également folle avec les normes ISO27001 et ISO9001, donc cela pourrait être bien adapté à nos processus
Ahh, nous avons ces problèmes depuis un certain temps, les tests lorsqu'ils sont correctement mis en œuvre peuvent faire des merveilles pour la productivité et la sécurité, ce qui est excellent pour les produits commerciaux.Bien que je doive dire que cette approche avec certaines personnes montre simplement les vraies couleurs quand ils commencent à essayer de tricher les tests plutôt que de les compléter.
Essayer si votre code fonctionne réellement serait un bon début.
Paul Smith
2018-05-24 18:26:23 UTC
view on stackexchange narkive permalink

"J'ai récemment été promu en tant que manager" - puis commencez à apprendre à devenir manager. Qu'on le veuille ou non, d'après ce que vous avez décrit, ils font le travail pour lequel ils sont payés, mais vous ne l'êtes pas.

Vous avez un employé auquel vous semblez avoir abandonné - ce n'est pas bien la gestion. Vous faites leur travail pour eux - ce n'est pas une bonne gestion. Vous leur permettez de perturber le projet - ce n'est pas une bonne gestion.

Cet employé est clairement (et peut-être à juste titre) mécontent, mais au lieu de traiter les causes de sa plainte, vous les aggravez. Peu importe que vous soyez un meilleur codeur ou que vous connaissiez mieux les subtilités de python que lui, car votre rôle actuel est un gestionnaire et non un codeur et le travail d'un gestionnaire est d'amener d'autres personnes, y compris lui, à veulent faire ce que vous voulez qu'ils fassent. Vous voulez qu'il produise un code qui réponde aux normes de votre entreprise. Découvrez pourquoi il ne veut pas et changez quelque chose pour qu'il le veuille. Dans le cas extrême, vous pouvez le forcer à choisir entre le faire à la manière de l'entreprise ou travailler pour une autre entreprise, mais vous devez considérer qu'il s'agit d'un échec de votre part, peu importe comment cela se passe.

gnasher729
2018-05-16 12:05:09 UTC
view on stackexchange narkive permalink

Un développeur senior n'est pas censé être senior simplement en vieillissant et en étant là depuis longtemps, mais en étant un bon développeur. Cette personne ne ressemble pas à un développeur senior.

Je suggère un tête-à-tête où vous expliquez la situation, et que son travail n'est pas satisfaisant, qu'il ne vaut pas réellement son salaire (n'est-ce pas?), et ce qu'il pense qu'il et vous pouvez faire pour changer cela.

Quelqu'un peut être développeur senior dans une langue et être junior ou même anti-développeur dans une autre langue.
Je ne sais pas, @jo1storm.Oui, une grande partie du rôle de Senior Dev dépend de la langue, et je vais certainement avoir l'air beaucoup plus idiot dans certains que dans d'autres.Cependant, je continuerais de valider le code de travail, de faire des PR et de m'améliorer avec le temps, comme je suis sûr que la plupart des autres développeurs seniors que j'ai rencontrés le feraient
Jonas Praem
2018-05-16 01:39:28 UTC
view on stackexchange narkive permalink

Je pense honnêtement que votre réponse réside dans votre titre "comment aider quelqu'un qui est au-delà de l'aide". Vous pensez qu'il est au-delà de l'aide. Je pense qu'il semble qu'il est au-delà de l'aide. Il pourrait en fait être au-delà de l'aide.

S'il s'agissait d'un développeur junior, vous accepteriez, au maximum, ce type de performance pendant les deux premiers mois - après cela, ils doivent livrer. C'est le maximum, je pense qu'embaucher quelqu'un qui ne peut pas produire de code le premier jour est une embauche risquée.

Ce gars porte le titre de senior, il est censé être celui qui encadre les développeurs juniors ou du moins fonctionne bien .

DoubleD
2018-05-16 21:41:39 UTC
view on stackexchange narkive permalink

Vous avez essayé de le persuader de changer, et cela n'a pas fonctionné. Le changement doit être forcé, ce qui nécessite des mesures disciplinaires ou un licenciement - donc, une intervention de la direction.

Actuellement, je trouve plus facile et plus rapide de ne pas lui confier de tâches, les délais se rapprochent et c'est plus rapide pour les faire moi-même. En fait, j'envisage de changer d'emploi à cause de lui.

C'est ce que votre patron doit savoir. En fonction de votre relation, vous devrez décider de vous concentrer sur les échéances imminentes ou sur votre désir de changer d'emploi.

Puisque votre patron craint de perdre des heures facturables, vous pouvez lui signaler que le remplacement de $ SeniorDev avec un développeur efficace se traduira par le même nombre d'heures facturables tout en améliorant le moral et la capacité de respecter les délais. Cela fonctionne mieux pour vous deux.

Le licenciement des personnes peut être un peu un problème juridique ici dans l'UE, faisable, mais prend du temps, et trouver de nouvelles personnes est difficile maintenant puisque tout le monde travaille.Certainement un bon argument à lui présenter.
La réaffectation à un projet compatible avec ses préférences de codage est idéale, mais la taille de votre entreprise peut ne pas le permettre.Pourtant, votre manager peut avoir un autre travail qu'il pourrait faire.
dbeer
2018-05-16 01:29:01 UTC
view on stackexchange narkive permalink

D'après mon expérience dans le domaine des logiciels, si un développeur ne comprend pas l'importance de tester et de vérifier le code avant de s'enregistrer, alors il ne sert à rien d'essayer de travailler avec lui. Il est préférable de passer à autre chose et de concentrer vos efforts pour convaincre les autres de la nécessité de le faire.

smith
2018-05-16 01:41:37 UTC
view on stackexchange narkive permalink

Tout d'abord, vous n'avez pas expliqué quelles sont les exigences et les compétences du poste de direction dans votre entreprise. Un rôle senior signifiant que les compétences, les capacités et les attentes diffèrent considérablement d'une entreprise à l'autre. Il est senior là-bas donc il faut d'abord vérifier s'il remplit les critères définis par votre entreprise.
Concernant la situation et les problèmes que vous soulevez. Je pense que vous essayez d'aborder trop de choses à la fois.
Commencez par le plus important qui est le fait que le code n'est pas fonctionnellement ce dont le client a besoin, car les exigences sont manquantes.
Une fois que vous avez répondu, vous pouvez passez à la façon dont le code pourrait être meilleur, en passant éventuellement à la façon de coder correctement en Python.
Si vous commencez par de telles discussions, il est facile de se laisser distancer parce que les développeurs ont généralement des opinions différentes et assez fortes sur ces points.
Peut-être que le gars est dépassé ou n'aime pas Python et cela affecte ses performances.

Zymurge
2018-05-31 23:54:26 UTC
view on stackexchange narkive permalink

D'après la façon dont vous avez décrit cela, je placerais probablement ce développeur dans le département "pas très bon" et je me demanderais si je le souhaite dans ma petite équipe, où chaque développeur a un impact énorme sur tout le reste. Les développeurs pauvres peuvent se cacher dans de grands magasins et travailler sur des zones de code partitionnées qui ont peu ou pas d'impact sur le reste, mais les petits magasins permettent généralement à tout le monde de toucher, et donc de casser, d'autres parties du code. Sortir un tel développeur du système est souvent un cas d ' addition par soustraction . Vous devriez expliquer ceci au grand patron, que vous préférez qu'il ne code pas du tout pour que l'autre développeur et vous-même puissiez en faire plus.

Si le problème concerne uniquement les heures facturables, alors vous pouvez également discuter avec le grand patron de la façon dont le remplacement de cette personne par une personne plus junior et moins chère peut être une double victoire. Vous obtenez des marges plus élevées sur les heures facturables et le remplacement, tout en ne pouvant peut-être pas résoudre les problèmes les plus difficiles, peut au moins être productif pour faire avancer les parties les plus faciles de la solution sans nuire au travail des autres.

Vous en faites donc une analyse de rentabilisation et vous la présentez au grand patron comme un moyen d'améliorer l'entreprise en remplaçant la zone problématique. En tant que manager, vous apprendrez que votre rôle va de la simple concentration sur la technologie à la réflexion en tant que propriétaire d'entreprise et à la compréhension de l'impact global.

En ce qui concerne la manière de coacher réellement cette personne, ce que je mets généralement en place tôt dans un magasin que je dirige est une Définition de Terminé solide, bien définie et socialisée. C'est la ligne dans le sable qui dit qu'aucun travail ne peut être considéré comme terminé (en fonction de votre configuration qui peut être fusionnée pour master, poussée pour produire, etc.) jusqu'à ce qu'il remplisse toutes les choses de votre DoD. Ensuite, vous appliquez cela avec TOUT le travail effectué par l'équipe de manière uniforme. Donc, si ledit développeur ne termine pas ses tests, le travail est arrêté dans ses voies avec une déclaration explicite de "tests adéquats manquants" et le développeur doit terminer cela avant de pouvoir passer à la tâche suivante.

Oui, cela signifie que vous devez maintenant utiliser une partie de votre temps pour auditer le travail de votre boutique, mais cela fait partie de la gestion. Vous pouvez également utiliser ceci, ou d'autres types d'examen par les pairs, pour parcourir les check-ins proposés et attraper certains de ces refacteurs nuisibles que vous avez mentionnés avant qu'ils n'affectent le reste de la base de code. Grâce à votre DoD, vous définissez des portes autour de la qualité (c'est-à-dire - passe un PR) qui empêchent les comportements dommageables.

Si vous appliquez ces portes et empêchez vraiment tout développeur de proposer des solutions partiellement ou mal faites, cela deviendra tout à fait évident qui obtient combien fait à quelle vitesse. Vous pouvez ensuite utiliser ce type de suivi pour quantifier la valeur de chaque développeur, vous aidant à faire valoir auprès du grand patron dont j'ai parlé plus haut la productivité réelle et le rapport qualité-prix de chaque développeur de l'équipe.

gnasher729
2018-06-01 18:41:09 UTC
view on stackexchange narkive permalink

Il semble que son travail consiste à produire des heures facturables, pas des logiciels, et il fait bien son travail. Votre client est stupide, votre patron est sans scrupules. L'employé est au-delà de toute aide.

Vous avez deux choix: arrêter de vous soucier ou trouver un autre emploi.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...