web-dev-qa-db-fra.com

Comment mentorez-vous un programmeur junior qui peut ne pas être un bon ajustement pour la programmation?

Je suis dans un peu de position précaire.

Je travaille à distance pour un client qui a récemment apporté un développeur junior directement hors de l'université dans le projet. Il travaille physiquement à leur bureau. Je crois qu'il a étudié l'informatique (bien que je ne puisse pas rappeler 100% pour le moment).

Il a été avec la société de quelques mois de quelques mois et a été lancé, par le chef de projet, lors de tests et de se familiariser avec l'application et depuis environ le mois dernier, a été attribué de petits bugs et fonctionnalités.

Le problème est que, dans cette époque, il n'a commis que du code une fois et c'était le code que j'ai essentiellement marqué à travers et écrit pour lui. (Je pensais qu'il serait bénéfique pour lui de voir la solution de travail après avoir passé des jours à essayer de le faire travailler).

J'ai eu quelques appels avec lui et quelques sessions de programmation par paires, mais il passe des journées qui deviennent frustrées par un simple code JavaScript qui ne devrait vraiment pas être aussi difficile pour un développeur junior. Je commence à penser que peut-être que la programmation n'est pas une bonne voie pour lui, mais je veux faire autant d'effort que possible pour l'aider à trouver des solutions seul et à l'aider à s'améliorer.

C'est la première fois que je suis en mesure de devoir fournir une formation et un mentorat. Être à distance rend probablement cela beaucoup plus difficile aussi.

Que puis-je faire pour l'aider à m'améliorer et à le faire aller?

36
Matt McCormick

Selon l'endroit où il est allé à l'école, il n'a peut-être pas plus de quelques mois d'expérience de faire des choses très triviales dans une langue. Cela peut être corrigé, mais assurez-vous que cela vaut la peine d'être effort.

On dirait que vous devez dire s'il peut être récupéré ou non.

  1. mettre le code loin pendant un peu de temps
  2. expliquer un problème de petite à moyenne taille qui existe dans le projet
  3. demandez-lui qu'il vous expliquera comment il le résoudrait - aucun code, aucun modèle, aux pratiques, à une langue ou à des diagrammes indigènes expliquant ce qui doit se produire à un niveau de base.

S'il peut proposer une solution semestre raisonnable, voire une mauvaise solution, mais en pensant à travers le processus de résolution de problèmes, il peut apprendre le code. S'il ne peut pas penser à travers le processus d'approximation d'une solution correctement, vous ne pouvez probablement pas lui apprendre à penser mieux.

Assurez-vous également que votre gestion comprend la situation ou vous allez faire le travail de deux personnes avant trop longtemps jusqu'à ce que votre nouveau gars attire.

16
Bill

Donnez-leur la chance de briller

J'ai eu une position très similaire depuis un certain temps, mais je pense maintenant que je fais des progrès avec le développeur. Je pense qu'à la fin, ce ne sera qu'un cas de timidité de commettre, mais je viens de lui dire "J'ai besoin de vous pour vous engager et appuyer sur le serveur afin que je puisse vous aider mieux si vous êtes coincé, et que vous pourrez m'aider à superviser le projet ", puis il a commencé à commettre.

Leur donner des responsabilités qu'ils peuvent traiter (c'est-à-dire inférieur à leur niveau) pour améliorer le moral.

Leur donner la chance d'échouer

Il est également important de les laisser prendre des décisions et échouer, cela s'appelle l'apprentissage. Donnez-leur le pouvoir de prendre de petites décisions architecturales ou de conception et de voir comment elles se produisent. Une fois qu'ils échouèrent, dites-leur comment ils peuvent faire mieux et alors assis avec eux.

Ne soyez pas impatient parce que vous savez que vous ferez en 5 minutes le travail qu'ils feront en cinq heures. Laissez-les le faire.

Missions plus petites

Avoir des missions plus petites et des objectifs plus clairs leur fera sentir moins perdu et attaquer mieux les problèmes à portée de main; Baby marche si vous voulez.

Toutes les personnes n'ont pas assez d'initiative, malheureusement, mais l'initiative peut être enseignée.

Être là en n'étant pas là

Continuer en partie le "laissez-les échouer" argument, mais reste toujours à la portée (par exemple, im) mais pas physiquement. Si vous restez connecté avec eux par im, vous pouvez parfois y répondre avec la bonne réponse, mais d'autres fois, vous pouvez simplement les laisser pendre et prétendre que vous êtes occupé (cruel, je sais * le sourire maléfique *), et juste leur dire "brb , Google XHR et ActiveX "ou" Erreur de compilateur Google "ou" Google "... En faisant cela, vous les faites en partie que vous vous sentez stupides de manière bête et perdez progressivement la peur de la recherche de choses en eux-mêmes.

Leur fournir les outils

Savent-ils sur Firebug ou Chrome Dev Outils ?. que diriez-vous des pièges JS communes ?. utilisent-ils un bon cadre JavaScript? (P. Ex. motoools ). Vous avez vraiment besoin de Pour leur donner les armes pour rendre son travail aussi amusant et productif que possible.

Pensez à eux comme votre passé

Vous n'étiez pas toujours un pro, non ?. Comment avez-vous appris ?, rappelez-vous cela et essayez de les mettre sur le même chemin.

S'ils ne sont pas réellement coupés pour le travail ...

Demandez-leur s'ils ont des problèmes avec quoi que ce soit et que vous sachiez que leur performance n'est pas assez bonne. Personnellement, j'aime être directement avec les gens, et je leur dis que à l'avance, il y a le moindre ressentiment.

Ils pourraient ne pas savoir qu'il y a un problème si vous ne leur dites pas.

41
dukeofgaming

J'ai eu une expérience comme celle-ci avec un programmeur junior. Je vais vous donner l'anecdote, avec l'avertissement évident que ce qui a fonctionné pour elle ne travaillerait pas nécessairement pour personne d'autre.

Son problème était qu'elle n'avait jamais eu à traiter de rien au collège qui n'était pas un système de jouet que vous pourriez raisonnablement être invité à faire dans un ensemble de devoirs. Ainsi, quand elle est confrontée à un vrai problème dans une base de code réelle qui évolue depuis des décennies, elle n'avait vraiment aucune idée où commencer.

Notre responsable lui a donné un problème réaliste difficile, qui n'avait pas trop de dépendances sur d'autres choses, que j'aurais fini dans quelques jours. Je l'ai vue de rester coincée dessus. Après un moment, j'ai commencé à y aller régulièrement et à lui demander: "Voulez-vous une suggestion?" Après un mois ou deux, elle a finalement rompu et était disposée à prendre mon aide.

Mon "aide" consistait à la faire briser le problème en petits morceaux. Chaque jour, je parlais, lui parler et lui demander ce que ses objectifs de la journée étaient. Invariablement, elle sculpt une pièce mal définie et trop grosse. Je lui dirais que ça sonnait trop gros pour moi et que je l'aurai de la sorte de balayer et de m'engager à faire quelque chose à faire de manière réaliste en déjeunant si elle rencontrait des problèmes graves. Après le déjeuner, je vous enregistrerais sur la façon dont ça se passait.

Dans une semaine, elle gagnait de bons progrès et avait compris le rythme. Après une autre semaine, elle a livré une solution parfaitement acceptable au problème à laquelle elle a été donnée. Elle a bien fait son prochain problème et a continué à faire parfaitement bien.

Il s'est avéré que notre responsable s'attendait à sa performance médiocre initiale. Je soupçonne qu'il aurait finalement intervenu, mais il a vu ce que je faisais et j'ai compris qu'il serait plus efficace de venir d'un pair qu'un gestionnaire.

20
btilly

En savoir plus sur son fond et ce qu'il connaît bien. S'il a un diplôme en informatique, il a probablement fait du codage (peut-être pas JavaScript). Quelle que soit la langue avec laquelle il connaît, voyez si vous pouvez expliquer les problèmes/solutions en termes de langue. S'il peut voir les similitudes, peut-être que les choses vont commencer à cliquer.

Les gens apprennent de différentes manières, essayez de comprendre comment il apprend mieux. Vous pouvez demander cela comme une question directe, ou à nouveau dans le cadre de son antécédent, découvrez quel type de projets il a apprécié et a bien fait à l'école et voyez s'il peut expliquer comment ils étaient structurés. Certaines personnes apprennent mieux en étant invitée à résoudre un problème avec peu de direction et d'expérimentation/d'essais et d'erreurs, tandis que d'autres voudront être montrés étape par étape ...

Un autre avantage de poser ses antécédents est que vous serez capable de mieux déterminer s'il n'est vraiment pas bon pour un travail de programmation. De toute évidence, il devrait avoir du temps et aider à s'améliorer, mais s'il n'est finalement pas mauvais pour vous deux s'il continue à essayer de travailler dans un emploi qu'il n'est tout simplement pas bon.

On dirait que vous essayez de faire la bonne chose en l'aidant.

(Aussi: est-il possible d'organiser de travailler sur place avec lui pendant une semaine ou plus?)

6
David

il est incompétent, ne le protégeez pas - Vous faites votre client sans faveurs en crainlant quelqu'un qui ne peut pas effectuer

désolé d'être dur, mais c'est une affaire; Tout le monde avec un diplôme fait un bon programmeur

cela dit, si vous voulez l'aider à vous aider à suggérer de participer au code KATAS, joignez un groupe d'utilisateurs local, essayez de coder des compétitions et de contrôler et de coder et de coder jusqu'à ce qu'il ait du sens ou qu'il réalise qu'il a choisi la mauvaise profession.

ne laissez en aucun cas que cette personne devienne votre responsabilité - à moins que ce soit en réalité votre travail

6
Steven A. Lowe

Dur.

Malheureusement, certaines personnes traversent leurs cours de programmation par la peau de leurs dents, et souvent sur l'aide (et le code) des autres, il est donc inévitable que quelqu'un vienne tout droit de côté de l'université sans avoir la première idée de savoir où commencer. (Je pouvais continuer et blâmer le système éducatif un peu, ici, car je pense qu'il y a une tendance à trop compter sur le code de cutter-cutter, ainsi que la tendance à résumer l'une des programmations de niveau bas de niveau - quelque chose que je trouver fondamental pour le processus de programmation, c'est-à-dire logique.)

Voici:

  • Comprenez qu'il est totalement nouveau à cela et n'a jamais eu à traiter quelque chose de plus grand que quelques milliers de lignes de code ( si cela ). Face à une application à grande échelle avec des conséquences réelles, il sera plus qu'un bit provisoire, et il est peu probable que cela comprenne également la forêt, sans parler des arbres et comment ils sont tous interdépendants.
  • Encourager dans la mesure du possible. Si une partie du code était utilisable ou si vous pouviez voir la direction du code, le code était bon, puis encouragez, même si le résultat final n'est pas si chaud. À ce stade, guidez-le à la solution sans orthographier le mot-mot. (Je dis aux gens que je google pour tout. Amazing les gens qui m'ignorent cependant.)
  • Permettre l'échec. Laissez-le voir ce qui se passe quand les choses se brisent complètement et totalement si possible. Si ce n'est pas possible, dites-moi que cela ne va pas directement à la production? Environnements de test règle.) On apprend davantage à l'échec que de réussite. (Je dis cela parce que je peux écrire du code qui fonctionne, sans comprendre pourquoi cela fonctionne. Si le code se casse, je dois travailler à travers ce qu'il est censé faire, pourquoi quelle partie de cela fonctionne fonctionne et pourquoi la partie qui échoue ISN 't fonctionne.)
  • Entrer un peu dans le fond. Ce programmeur peut avoir une méthode d'apprentissage totalement différente et peut ne pas être capable de rendre les mêmes sauts logiques de la même manière que vous le faites. (Je suis un bon exemple. Je peux faire de grands sauts logiques énormes qui me semblent simples. Et puis je me demande pourquoi tout le monde se demande comment aller du point A-> B pendant que je suis déjà au point D . Et puis je me rappelle, je suis naturellement logique. Tout le monde n'est pas.)
  • Lui donner le temps. Pas le temps tout en faisant rien; Non, mais au fil du temps, l'individu devrait commencer à choisir les choses. S'ils ne le font pas, cependant, il peut être temps de ...
  • Accepte la defaite. Gracieusement. Et pas vraiment. Par cela, je veux dire que vous devrez peut-être avoir une discussion franche avec le responsable, mais vous réalisez également que vous êtes essentiellement payé pour l'aider. Si vous souhaitez continuer une bonne relation avec votre client, vous en serrant les dents ou la dépose du client peut être vos dernières options finales.
5
Kerri Shotts

Il y a évidemment beaucoup de variables à jouer ici (et d'autres bonnes réponses), mais voici quelques questions à poser à vous-même et à quelques pensées:

  • Quelle est l'attente de la direction de sa position? Était-il embauché avec l'intention d'être encadré? Si oui, combien de mentorat est attendue? Il est important d'aider à déterminer la quantité d'effort de dépenser pour l'aider à se mettre à la hauteur et à être compétents, même si elle est pour de petites tâches.
  • Est-ce qu'il passe de "temps libre" d'auto-apprentissage sur ce qu'il travaille? Par exemple, s'il luttait avec JavaScript, passe-t-il à n'importe quel moment de se mettre à la hauteur?
  • Est-ce qu'il s'approche-t-il à ses pairs quand il est coincé ou est-il devenu son temps? J'ai travaillé avec quelques développeurs qui auraient plus tôt siéger et regarder à l'écran que de demander de l'aide.
  • Comme mentionné dans une autre réponse, quel est son antécédent? A-t-il fait un codage avant le collège? Contribue-t-il aux projets open source à une certaine capacité? C'est pour aider à évaluer l'intérêt et la passion pour le rôle.
  • Lorsque vous travaillez avec lui, le permettez-vous de "mener" et de discuter de son processus de pensée? Aidez-vous----vous l'aider à atteindre une solution correcte par la discussion?
  • Est-ce qu'il montre des signes d'amélioration lorsque vous travaillez avec lui? Rappelez-vous où il était quand il a commencé et à quelle distance il est venu depuis. Le taux de croissance des compétences est-il acceptable?
  • Est-ce qu'il vous écoute ou d'autres personnes lorsque vous donnez des conseils? Certaines personnes vont prendre des conseils et l'ignoreront ou ne pas la comprendre, mais continuer à faire leur propre chose. Cela inclut une critique constructive.
  • Est-ce qu'il cause réellement plus de travail pour les autres? C'est là que cela devient un peu dangereux de garder à la fin de quelqu'un pour le tour. Si quelqu'un a un impact négatif sur un projet, une réévaluation peut être nécessaire pour déterminer s'il est préférable de continuer à mentorat ou non. Vous voulez une contribution positive, peu importe la petite façon de commencer.
  • At-il une attitude positive envers la programmation? Une mauvaise attitude peut être préjudiciable non seulement à sa propre performance, mais celle des autres aussi.
  • Réalisez que tout le monde n'est pas pareil. Cela devrait aller sans dire, mais là c'est. Tout le monde apprend et effectue leurs tâches un peu différemment, mais il devrait également y avoir des limites quant à ce qui est acceptable ou non. Cela peut varier d'une entreprise à la société et au projet au projet.

Donc, vraiment, cela devrait descendre aux attentes, attitude, aptitude et contributions. S'il montre qu'il est capable d'apprendre et de ramasser ce qu'il doit savoir, il peut-être peut-être la peine d'être tenue s'il a aussi une bonne attitude.

L'important est qu'il montre des progrès et de la croissance et ne stagne pas ou ne se fait pas frustré facilement. C'est un rôle qui nécessite la patience et une certaine motivation.

3
Michael Dean

Décision difficile. Essayez d'identifier les bases sous-jacentes qu'il manque.

Pour vous aider à localiser la région où se trouve le problème, demandez-lui quand était la dernière fois qu'il faisait bien, la dernière fois qu'il a vraiment compris ce qu'il faisait, juste avant qu'il ne soit confus. Cela pourrait être quelque chose qu'il a étudié avant d'avoir jamais eu la compagnie.

Vous constaterez que quelque part dans cette région, dans les choses qu'il croit comprendre, est la cause réelle de sa confusion. Cela pourrait être quelque chose de base que jamais n'ayant jamais compris une variable ou même quels moyens de programmation. Répétez cela plusieurs fois et il devrait commencer à devenir "plus lumineux".

Une autre approche serait de regarder les différentes choses qu'il est bloquée. Ensuite "triangulé" et trouver ce que sont les dénominateurs communs. Notez tout ce qu'il fait qui n'a aucun sens. Ensuite, essayez de comprendre comment cela correspond ensemble. Si vous pouvez trouver un modèle, cela devrait vous donner une très bonne idée de ce qu'il est qu'il ne comprend vraiment pas.

Une autre situation possible est qu'il ne comprend pas ce que la demande est censée faire et pourquoi. Une démonstration de l'application et un contexte du POV de l'utilisateur pourrait vraiment y aider.

Une fois que vous savez ce qu'il ne comprend pas, vous pouvez l'aider efficacement. Jusque-là, vous vous déconnectez et espérez avoir de la chance.

Cependant, gardez à l'esprit que le débogage pourrait ne pas être ce que votre client paie, donc à moins que vous ne compreniez avec votre client, ne vous laissez pas tomber sur vos propres objectifs.

Bonne chance.

0
Sylverdrag