Que faire des développeurs stars qui ne documentent pas leur travail ?[fermé]

StackOverflow https://stackoverflow.com/questions/532338

  •  22-08-2019
  •  | 
  •  

Question

Il y a un collègue qui connaît sérieusement son métier, c'est l'un des plus brillants avec qui j'ai jamais travaillé, mais il :

  • travaille dans sa propre petite zone de son répertoire personnel plutôt que dans le CVS dépôt
  • n'a pas document son code
  • n'a pas commentaire son code, par ex.3 500 SLOC de C sans commentaires ni lignes vides pour diviser les choses
  • complique souvent les choses, par ex.utilise trois scripts shell qui s'appellent les uns les autres pour effectuer le travail qu'un simple script shell pourrait faire.

Peut-être fait-il partie de ces personnes qui pensent « si je suis la seule personne à savoir cela, ils ne peuvent pas se débarrasser de moi » ?

Des suggestions sur quoi faire ?

BTW Management connaît la situation et essaie de changer les choses.

Était-ce utile?

La solution

Dans mon avis quelqu'un faire des choses stupides que vous avez décrit ci-dessus ne peut pas être un développeur star! Pour moi, il semble qu'il fait intentionnellement les choses plus compliquées car ils sont, de sorte que personne d'autre que lui-même peut maintenir le code. Cela se fait plus important qu'il est vraiment! Parle lui. Il doit changer! S'il ne le fait pas, le remplacer par une vraie star-développeur!

Je vous promets que, même dans un demi-année, il ne sera pas savoir comment fonctionne son propre code! le feu et vous pouvez économiser beaucoup de temps et d'argent.

Autres conseils

La partie CVS est facile - une panne de disque dur « accidentelle » lui donner une leçon d'une vie (assurez-vous d'avoir une sauvegarde bien que vous ne perdrez pas réellement le code)

Cela ressemble à une situation difficile.

Personnellement, je le laisser aller. Il est peut-être un développeur étoiles, mais il est pas un joueur d'équipe. Et vous devez avoir une équipe cohérente qui peut travailler ensemble si vous voulez faire un bon produit.

A défaut de document est un (très mauvaise) façon d'assurer la sécurité de l'emploi.

Vous pouvez faire plusieurs choses pour contrer ceci:

  • ajouter de la documentation comme une exigence pour les examens de rendement personnel.
  • n'accepte pas les logiciels qui ne sont pas documentés.
  • avoir un mot avec le développeur et savoir pourquoi il ne documente pas.
  • Acheter un outil de documentation cool.

Jouer le mauvais flic / bon flic croquis que vous avez vu des films. Que la gestion soit le mauvais flic et vous être le bon flic. Laissez le managament demander plus-kill documentation et par minute sauvegardes ZIP de son travail. Mais vous lui offrez une documentation modérée (par doxygen par exemple) et l'enregistrement ins contrôle de code source habituelle ...

Parlez-lui?

S'il est vraiment un « développeur star » il va prendre note de ce que vous dites.

Il ne peut pas le changer du jour au lendemain, mais il est peut-être qu'il est juste complètement ignorer que d'autres personnes ne l'obtenez pas tout à fait comme il le fait.


Edit:

Il est probablement un peu tard pour changer maintenant, mais plus d'information est nécessaire dans l'élaboration d'une solution. Il est impossible pour quiconque de suggérer ici en fait de laisser le gars aller à partir de ces seuls points. Si vous avez dites le gars tous les jours de l'année dernière qu'il a besoin de changer ou il est d'ici, vous pouvez le laisser partir. Cependant, je ne vois aucune preuve de cela.

Un développeur brillant peut apprendre à utiliser le contrôle des sources, des commentaires et des documents. Si vous passez l'effort ici, alors vous aurez vraiment un développeur étoiles.

Vous pourriez nous concentrer sur la mauvaise zone ici, vous êtes donné l'occasion de voir quelques faiblesses dans votre processus.

  
      
  • travaille dans son propre petit coin de son répertoire plutôt que dans le référentiel CVS commun
  •   

Une discussion simple, suffit probablement ici, les avantages du contrôle de version parlent d'eux-mêmes et toute personne « brillant » seraient probablement enthousiastes à l'idée de ces avantages. Cependant, il peut aussi être une bonne occasion de se pencher sur les systèmes de contrôle de version de remplacement qui permettent une plus grande facilité d'utilisation et la flexibilité (jetez un oeil à bzr et git). Mieux encore, l'impliquer dans le processus de sélection, s'il est vraiment une « star », il aura probablement une bonne entrée et être plus direct dans son utilisation.

  
      
  • ne documente pas son code
  •   

Il ne ressemble pas à la documentation fait partie de votre processus. Les gens vont résister avoir à faire un travail supplémentaire et s'il n'y a pas un processus défini, vous parlez beaucoup de travail supplémentaire. La documentation est vraiment nécessaire? Si oui, est-il un processus défini pour la créer? si vous avez quelqu'un entièrement dédié à elle? Si vous avez au moins un outil pour faciliter (peut-être quelque chose d'aussi simple que mediawiki)?

  
      
  • ne fait aucun commentaire son code, par exemple 3500 SLOC C sans commentaires et aucune ligne blanche à bec choses
  •   

Trois mots: revue de code par les pairs. En dehors des avantages évidents accrocheur erreur, cela peut également fournir une certaine pression par les pairs, qui est une force et peut être une bonne chose. Voulant être bien perçu par vos pairs soi génère la propriété et de la qualité.

  
      
  • overcomplicates souvent les choses, par exemple utilise trois scripts shell qui appellent les uns les autres pour faire le travail que l'un script shell simple pourrait faire.
  •   

Encore une fois, l'examen du code par les pairs. Vous mentionnez que la direction connaît les lacunes de ce programmeur. Est ce qu'il? Il est assez difficile pour les gens de changer et d'améliorer si elles ne reconnaissent pas les problèmes avec la façon dont ils font les choses.

Et, peut-être le meilleur de tous, en proposant des plans pour améliorer votre processus de développement (qui sera probablement non seulement d'améliorer votre « star », mais tout le monde dans l'équipe), vous pouvez probablement gagner quelques étoiles d'or pour vous-même de la direction.

Cela ne semble pas beaucoup d'un programmeur étoile pour moi. Tous les bons programmeurs savent que le formatage du code et l'utilisation des questions de contrôle des sources. On dirait bien qu'il progresse bien par lui-même, il entrave les progrès des autres membres de l'équipe, ce qui pourrait avoir un effet négatif net sur le travail se fait. Parlez-lui, et s'il refuse de changer ses pratiques, le laisser aller.

S'il est vraiment brillant et vous ne pouvez pas changer ses habitudes, ni voulez-vous le perdre, mais vous voulez toujours votre code à documenter et a ensuite commenté ma suggestion serait de laisser un développeur moins expérimenté faire la documentant et commenter pour lui. Personnellement, si j'étais un développeur d'étoiles, je me sens prettiy stupide si quelqu'un d'autre a été fait pour commenter mon code et je commence à le faire moi-même par la suite. En attendant tout cela ne se produit pas le développeur moins expérimenté peut apprendre une chose ou deux.

Il y a plus d'être un développeur étoiles que d'être un excellent programmeur. S'il n'a pas les compétences de l'équipe et ne tient pas compte des normes de l'équipe délibérément, il doit être mis à lui. S'il refuse d'y adhérer après avoir parlé avec la direction, peut-être qu'il est pas la bonne pour votre entreprise.

Cette question me rend nerveux, parce que si la personne que vous décrivez les sons flagrants, je peux voir un peu de moi-même en lui.

Je pense que je suis un très bon joueur d'équipe, et je suis chanceux d'être sur une très bonne équipe. Cependant, je ne l'utilise des méthodes que mes collègues ne comprennent pas, mais je l'ai essayé assez difficile de les expliquer. Il est tout simplement un manque d'expérience assez grande, ce qui est sans réflexion sur aucun d'entre nous.

La documentation est un sujet vaste et délicat. J'essaie de suivre la SEC (ne pas vous répéter) maxime. La documentation qui est distinct du code peut équivaloir à vous répéter, il est donc susceptible de sortir de ce jour à moins que vous vous ralentissez pour le garder à jour. Mon approche habituelle est de toucher jusqu'à la suite.

Souvent, le problème je travaille est tellement difficile que je puisse faire avancer le plan et le document tout ce que je veux, mais en ce qui concerne le code souvent je découvre que j'avais tort et à re-penser. L'idée que vous pouvez documenter des choses à l'avance, et il suffit de suivre que, ne fonctionne que pour des problèmes assez simple, il me semble.

Quoi qu'il en soit, je pense que cela est une excellente question, et la réponse est pas du tout simple.

Est ce que le gars vraiment une rock star? Sérieusement? Réfléchis-y une seconde. Est-il intelligent, mais ne se fait pas les choses, ou est-il à la fois intelligent et capable de faire avancer les choses?

Pensez-y vraiment dur.

S'il est vraiment une rock star, alors peut-être vous ne devriez pas jouer avec lui. Il est la production de choses incroyablement impressionnant en utilisant son propre processus. Tout simplement parce qu'il ya une autre façon de faire les choses qui fonctionne le mieux pour vous, ne veut pas dire que ça va lui permettre de produire son meilleur travail. Au lieu d'essayer de l'amener à se plier à votre processus, qui pourrait très bien tuer tout son awesomeness, vous devriez essayer de trouver un moyen de tenir compte de la façon dont il fonctionne.

S'il est vraiment aussi bon que vous dites, vous ne devriez pas faire cela l'esprit. Si cela ne vaut pas la peine de le faire, alors il est vraiment pas bon. Dans ce cas, vous ne disposez pas d'une rock star, vous avez juste un programmeur médiocre qui n'aime pas jouer soit les règles. Ces gars-là, vous devriez juste se débarrasser de. Une rock star capricieuse est généralement vaut la peine, cependant, en raison de la qualité de ce qu'il ou elle peut produire. Ces gens, vous devriez aller très loin pour garder.

Sons comme un programmeur star qui s'ennuie de son travail et sur ce qui complique les choses pour le rendre plus d'un défi. Il va trouver quelque chose de mieux assez vite.

Essayer de changer les choses? Que préférez-vous, une pièce de travail mal documenté d'un logiciel ou d'une jonque bien documenté? Certaines personnes sont capables de logiciels d'écriture qui nécessite peu ou pas de commentaires, ce n'est pas un indicateur fiable de la qualité.

Je crains que vous allez perdre un bon développeur.

"Salut étoiles développeur,

juste un peu informel heads-up pour vous dire que la semaine prochaine, nous exigerons la documentation du code, et utile de commenter dans le code - il va être la politique de l'entreprise, et il n'y aura pas d'exception "

A partir de là, vous venez de traiter cet échec la même chose que vous faire face à un défaut de se présenter à l'heure, un défaut d'arrêter gaffes pendant le travail, etc. En bout de ligne est si le patron dit document, vous documentez ou que vous ne faites pas votre travail correctement.

S'il travaille comme ça, il est pas un développeur star - grands développeurs de logiciels comprennent que la maintenabilité est extrêmement important. Vous devrez probablement payer cher pour cela dans le long terme, je serais très direct avec lui sur la gravité de c'est et le laisser aller s'il ne peut pas commencer à régler. Je l'ai vu beaucoup de fois avant et il est une bombe à retardement.

Pour être parfaitement honnête, je l'ai vu beaucoup de développeurs comme celui-ci et, à moins qu'ils sont sortis de l'école, ils ne changeront pas. Je dis sans perte votre coupe maintenant, son seul va devenir plus difficile de le congédier comme il continue à cracher le code plus difficile à maintenir:)

Il est très peu probable que la direction va se débarrasser de lui s'il est vraiment brillant.

L'ensemble du projet peut être fermé, bien sûr, mais il n'y aura pas une utilisation dans CVS et de la documentation puis, de toute façon.

Pas de gestion se déclenche un bon programmeur que d'embaucher un mauvais.

Dites-lui que cela aidera le pour se débarrasser de la gestion à chaque fois qu'il veut.

Qu'est-ce qu'il veut changer d'emploi? Il peut dire à la direction: « OK, les gens, tout est comme vous me demandiez:. Arrivé, et sous documenté que vous contrôlez je suis fait avec ma part, je laisse emballer et ».

L'équipe peut réussir avec lui sur? Si oui pousser la question et refuser d'accepter un code qui est pas correctement documenté ou ne répond pas à d'autres normes. Espérons que cela va faire passer le message, mais il pourrait juste le mettre en colère et lui faire quitter. Si l'équipe ne peut réussir avec lui sur alors vous êtes hors de la chance jusqu'à ce que vous pouvez former un remplaçant jusqu'à son niveau de compétence qui ne peut être le temps et l'effort.

+1 à ocdecio - s'il est un développeur star, alors son code devrait être fondé sur une telle conception de haute qualité qu'il se documente

.

Cela dit, la frustration pourrait être que bien qu'il est excellent dans des domaines techniquement exigeants qui sont intéressants pour lui, il ne muck en pas à la livraison de fonctionnalités - que vous saurez si cela est un problème pour votre organisation.

Avoir un disponible « gourou » peut être une vie saver absolue - ou du moins il était, ou a fait StackOverflow ce rôle redondant

Ne laissez pas le code soit libéré jusqu'à ce qu'il ait passé la revue de code et permettre seulement à passer s'il y a suffisamment de commentaires et / ou de la documentation pour le code qu'il a écrit pour la fonction en cours / projet.

Modifier Apportez dans son évaluation. Code Documentation / commentaires peut lui être donnée pour ses « domaines d'amélioration ».

: -)

Vous pouvez également ajouter des contrôles automatisés de qualité qui l'empêcherait de vérifier dans son code jusqu'à ce qu'il soit suffisamment documenté.

C'est si vous pouvez le persuader de l'enregistrement en premier lieu! (Ce qui est essentiel, imo)

Il y a beaucoup de gens ici sur les « aucun commentaire, alors quoi? » train en marche ici. Code alphabétisés sans commentaire est tout à fait possible, mais juste parce que quelqu'un est intelligent et ne fait aucun commentaire ne signifie pas nécessairement qu'ils sont en train d'écrire un code lettré.

Alors clarifions. Vous avez déjà dit qu'il ne documente pas son code à tous, que ce soit dans les commentaires ou documents distincts, et il ne se sert pas de contrôle de code source. Que diriez-vous:

  • est son code compréhensible malgré l'absence de commentaires?
  • Votre équipe utilise toute sorte de suivi des problèmes (par exemple FogBugz, Bugzilla, etc.) qu'il participe à?
  • est son code sous test?
  • Y at-il quelqu'un d'autre sur l'équipe qui est en fait au moins un peu familier avec la façon dont fonctionne son code?
  • Est-il prêt à reconnaître au moins qu'il pourrait se faire quelques changements dans la façon dont il travaille avec le reste de l'équipe?

Si la réponse à toutes ces questions est « non », vous avez un gros problème. Juste être intelligent ne fait pas nécessairement quelqu'un un atout. Avez-vous une garantie qu'il ne quittera pas votre avenir de l'entreprise, ou se faire frapper par un autobus? Comment vissé seriez-vous si cela se produisait? Cela vaut-il le risque?

Je pense que cela est assez typique dans tout environnement. Comment obtenez-vous quelqu'un pour faire ce que vous voulez? C'est exactement ce « Comment gagner des amis et influencer les gens » est tout au sujet. Dale Carnegie n'a pas de manipulation, mais la gestion des personnes.

Il me semble qu'il est juste inexpérimenté et a besoin d'une certaine expérience et des conseils.

Pensez-vous que vous pouvez vous asseoir et lui parler de ces questions? Dire à quelqu'un qu'ils font quelque chose de mal apparaît souvent comme la mauvaise chose à faire (en particulier dans la société occidentale d'aujourd'hui où nous ne voulons pas blesser les sentiments des autres) mais je pense que vous pouvez aller très loin en expliquant calmement et honnêtement les problèmes et les parler à travers. Il aide si la personne que vous respecte et vous, ce qui est une toute autre question et on parle dans le livre mentionné ci-dessus. Assurez-vous qu'il comprend que ce sont des questions graves. En outre, que tous les travaux de développement futurs, il va s'attendre à faire ces choses trop il est donc une bonne idée de les mettre en pratique maintenant.

Je ne pense pas attendre la prochaine évaluation de la performance est une bonne idée. Empilant un tas de commentaires négatifs et la livraison est tout à la fois juste une mauvaise idée et je n'aimait vraiment pas quand cela a été fait pour moi.

Documentation du code est surestimée. CVS formation est facile.

Une bonne classe doit révéler son but par ses méthodes et propriétés.

Documenter le modèle en dehors de l'application est également plus facile de circuler et de comprendre.

Je le porter à son attention, si vous ne pouvez pas l'obtenir résolu semble que vous allez perdre un développeur étoiles.

Edit: Oops - CSV utilisé au lieu de CVS, de nombreuses importations et j'utilise svn heh

.
  1. l'occasion d'utiliser des outils d'exécution-vérification automatique. (Voir ma réponse à « Comment poser des questions à un obsructionist? ")

  2. S'il overcomplicates et ne pas utiliser la CSC, il est pas un excellent développeur -. Ces choses sont des éléments importants de l'ingénierie logicielle

  3. Dans le cas très improbable qu'il a une certaine brillance irremplaçable dans des domaines tels que les algorithmes, l'assigner à travailler dans ce domaine, par exemple, des algorithmes définissant, et obtenir un vrai programmeur pour faire le codage.

  4. Utilisez le code d'analyse statique pour comprendre et nettoyer son code.

La programmation en binôme. Trouvez paire Hima qui lui « complet » pour les besoins que vous venez d'énumérer. Vous résoudre un problème contrôle de code source, documentation, question toutes ses actions, etc. Vous formez également d'autres gars en utilisant la force du premier type

D'après ce que vous décrivez, cet homme est nettement pas un développeur étoiles. La programmation est un sport d'équipe, et ceux qui ne ne pas ajouter joue pas bien avec d'autres beaucoup de valeur à un projet.

Personnellement, je pourrais ne me souviens pas du code que j'ai écrit il y a 6 mois ou plus, et beaucoup de valeur l'histoire des changements dans une sorte de contrôle de code source.

Si vous aviez des revues de code réguliers avec ce gars-là, je pense que vous verriez qu'il est pas aussi brillante d'un développeur que vous pensez qu'il est.

Je suis d'accord avec la plupart des gens sur ce fil. Une façon de le mettre sur le point chaud est d'avoir Commentaires code d'équipe.

Pour la première réunion d'examen de code choisir le code d'un membre de l'équipe qui est ouverte et acceptera les recommandations. Le développeur « étoiles » aura la chance de voir comment la révision du code fonctionne et vous pouvez programmer son code à être revu suivant. Donnez-lui un peu de temps pour se préparer à la prochaine réunion et alors il devrait être au moins commentait son code.

L'intention des revues de code est de ne pas mettre la honte sur les gens, mais plutôt de cerner ensemble les enjeux et les lieux d'amélioration, mais ce sera un bon moyen de mettre le développeur star sur la sellette.

À mon avis, vous devez déposer ce gars-là. On dirait que son code est illisible et il est certainement pas une équipe, ni un coffre-fort, lecteur.

Il est également une très mauvaise pratique pour permettre à quelqu'un de se voir comme indispensable. Si vous laissez le garder cette place, ses pratiques vont empirer, pas mieux. Quand il quitte, pour tout le monde fait, vous vous retrouverez avec un mal de tête énorme code emmêlés. Vous devez couper maintenant vos pertes s'il ne forme vers le haut.

Enfin, sans lui régnant en gardant ce développeur dans un mauvais exemple des développeurs juniors. Si vous les forcer à travailler correctement, vous risquez de ressentiment de la part du « pourquoi lui et pas moi » foule. Si vous ne le faites pas, vous obtenez un tas de hacks qui travaillent comme votre « star ».

En bref, à moins qu'il façonne très, très rapidement, il est temps de le laisser tomber, pour la santé et la santé mentale de votre ensemble du personnel de développement.

Nous avons eu un problème similaire lorsque j'ai commencé mon travail actuel il y a un peu plus de 3 ans, notre développeur principal était un cow-boy.Il était vraiment intelligent mais très irrégulier, certains de ses trucs étaient très bien documentés, mais tellement compliqués qu'il était impossible à maintenir, ou à coder d'abord et à comprendre ce qu'il construisait plus tard, il jetait du code pour voir ce qui resterait.

Il est parti il ​​y a environ 2 ans et demi, et cela nous hante toujours lorsque nous trouvons une partie de son ancien code, et pour sa défense, c'est ainsi que l'atelier de développement ici était géré à l'époque, au cours des 3 dernières années, j'ai été en croisade pour changer cette mentalité.

Lorsque vous devenez un développeur vedette, cela ne dépend plus tant de votre connaissance du système, du code, du framework, de l'architecture, etc.et plus sur

  1. Écrire du code élégant, maintenable, flexible et lisible
  2. Travailler avec le reste de l'équipe :en utilisant le contrôle de source, en donnant l'exemple, etc.
  3. Documenter ce que fait chaque méthode, classe, objet, etc.
  4. Rechercher de nouvelles et meilleures façons de faire les choses pour vous-même et votre équipe

si vous ne suivez pas ces quatre éléments à un certain niveau, vous n'êtes pas un développeur vedette, d'autant plus si vous refusez d'essayer/d'apprendre à les utiliser, il est temps que vous trouviez d'autres opportunités d'emploi d'une manière ou d'une autre, j'entends dire que l'artiste affamé est populaire avec ce temps de personne (tout ce truc de génie mal compris)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top