Comment encadrer un développeur junior


99

Ce titre est un peu large, mais il se peut que je doive donner un peu de contexte avant de pouvoir poser ma question correctement.

Je sais que des questions similaires ont déjà été posées ici . Mais dans mon cas, je ne me demande pas si je devrais être un mentor ou si cette personne convient bien comme développeur de logiciels. Ce n'est pas à moi de juger. On ne m'a pas demandé directement, mais il est évident que moi-même et d'autres développeurs expérimentés devons encadrer les nouveaux développeurs qui commencent ici. Cela ne me pose aucun problème et, dans de nombreux cas, cela me donne une nouvelle perspective et j’apprends par la suite. De plus, je me souviens à quel point il était bénéfique au début de ma carrière d’apprendre quelque chose.

Quand je parle de "nouveau développeur", ils peuvent être nuls, de la sortie d’un collège à une année ou deux d’expérience.

Récemment, nous avons eu des débutants ici qui semblent avoir une attitude envers le développement / la programmation qui est différente de la mienne et difficile à réconcilier pour moi; ils extraient juste assez d'informations pour mener à bien la tâche sans en tirer de véritables enseignements. Je me retrouve à refaire les mêmes problèmes avec eux. Je comprends qu'une partie de cela pourrait être une affaire de personnalité, mais je pense que c'est à moi de faire de mon mieux et de les pousser hors du nid alors qu'ils sont sous mon aile, pour ainsi dire.

Comment puis-je donner juste assez d'informations pour qu'ils apprennent sans pour autant résoudre le problème à leur place?

Ou peut-être:

Quelle est la réponse appropriée aux questions conçues pour emprunter le chemin de la moindre résistance et, essentiellement, pour les forcer à apprendre au lieu de choisir la solution de facilité?

Ces questions sont probablement des questions d’enseignement plus générales et n’ont pas grand-chose à voir avec le développement de logiciels.

Remarque: je n'ai pas voix au chapitre sur les tâches sur lesquelles ils travaillent. La direction s’occupe de tout et il peut s’agir d’une solution de bogue très simple au démarrage d’une application entière par eux-mêmes. Bien que cela ne soit absolument pas idéal et présente évidemment son propre défi, je pense que c'est un sujet qu'il vaut mieux laisser à une autre question. Donc, le mieux que je puisse faire est de les aider à résoudre le problème et d'essayer de les aider à le décomposer en problèmes plus simples, à consulter leurs journaux de validation et à signaler les erreurs qu'ils ont commises.

Mes objectifs principaux sont de:

  • Aidez-les et donnez-leur les outils dont ils ont besoin pour devenir plus autonomes.
  • Orientez-les dans la bonne direction et rompez tôt avec les mauvaises habitudes de développement.
  • Réduisez le temps que je passe avec eux (le type de personnalité décrit ci-dessus a tendance à nécessiter beaucoup plus de rencontres individuelles et ne donne pas de bons résultats avec la messagerie instantanée ou le courrier électronique. Bien que ce soit généralement bien, je ne peux pas toujours arrêter ce que j'ai. Je travaille, je brise le pas et je les aide à corriger une erreur au bout d’un moment (j’ai mes propres projets à réaliser).

1
vous pouvez seulement aider quelqu'un à devenir ce qu'il veut devenir. Guide ceux qui veulent être guidés.
Darknight

14
Vous avez raison de dire qu'il y a beaucoup de choses à ce sujet qui ne sont pas spécifiques au développement de logiciels, mais il s'agit d'être un bon enseignant (même si ce n'est pas votre travail principal). Dans le contexte de l’enseignement, j’ai écrit dans Chronicle of Higher Ed un article qui dit que le succès peut arriver lorsque vous jouez trois rôles: être un bon modèle, servir de support technique (jusqu’à ce qu’ils sachent comment poser de bonnes questions et où. ) et être une pom-pom girl (patiente et solidaire).
jcmeloni

1
Il y a une foule d'excellents commentaires sur ce sujet ici: programmers.stackexchange.com/questions/137708/…
KodeKreachor

Pourquoi adhérez-vous à la rhétorique du "mentoring"? Utilisez le mot "formation": vous décrivez "formation pour le travail" , ce n'est pas une question de philosophie, votre façon de voir la vie de l'univers et tout le reste, c'est ainsi que les choses sont censées se faire dans votre entreprise. (et votre entreprise devrait réfléchir un peu plus avant de leur en donner un officiel)
ZJR

3
Et .. assurez-vous que leur cube est à mi-chemin sur le chemin de votre cube aux toilettes ...
vrdhn

Réponses:


121

Il y avait une fois une question ici qui contenait ce genre d'information, et la chose qui m'a le plus coincée était celle -ci: ne touchez pas leur clavier.

En bref, dites à votre junior comment accomplir ce qu’ils essaient de faire, mais ne le faites pas pour eux.

Mais en plus de cela, voici quelques autres conseils:

  • Encouragez Google (ou tout autre outil de recherche). Si vous savez que la réponse peut être trouvée facilement en ligne, dites-leur de la rechercher au lieu de la leur dire. En fin de compte, vous voulez leur apprendre à apprendre par eux - mêmes , sans les laisser devenir dépendants de vous.
  • Rendez-vous disponible pour répondre aux questions. Si jamais vous n'êtes pas disponible ou si vous ne souhaitez pas être interrompu, indiquez-leur clairement qu'ils doivent poser leurs questions jusqu'à une heure précise.
  • Examinez régulièrement les codes pour leur dire ce qu'ils font bien / ce qui est mal. Utilisez cette opportunité pour souligner les meilleures pratiques
  • Commencez tôt avec les meilleures pratiques. Il vaut mieux prendre plus de temps pour leur apprendre la bonne façon que d'essayer de changer leurs méthodes plus tard.
  • Commencez tôt avec la planification / documentation de ce qu’ils vont faire au lieu de les laisser commencer par écrire du code.
  • Soyez ouvert à apprendre d'eux. Ils passent probablement plus de temps que vous n’en apprenez et il est possible qu’ils apprennent quelque chose que vous ne saviez pas.
  • Aidez-les à apprendre de leurs erreurs. Il y aura des erreurs, alors assurez-vous de leur montrer que les erreurs font partie de l'apprentissage et qu'ils doivent les utiliser comme une opportunité d'apprendre.

  • (De RuneFS ci-dessous) Au lieu de leur dire comment faire quelque chose, essayez de les aider à le résoudre eux-mêmes. Cela les aidera à améliorer leur capacité à résoudre logiquement un problème et à accroître leur capacité d'apprentissage.

  • (De RuneFS ci-dessous) Au lieu de leur dire ce qu'ils ont mal fait, expliquez-leur comment ils peuvent l'améliorer. Assurez-vous d'inclure pourquoi votre façon de faire est meilleure que la leur. Cela renforcera leur confiance au lieu de l'affaiblir. Bien sûr, s'ils ne vous écoutent pas, n'hésitez pas à leur dire de le faire correctement :)

68
+1 pour ne touchez pas le clavier. En partie parce que leur apprendre à faire quelque chose est plus important que de le faire dans une situation de mentorat, mais vraiment parce que je déteste absolument les gens qui volent mon clavier.
fire.eagle

3
Je sais que cela a déjà été dit mais "ne touche pas le clavier". Est un très bon point
Tom Squires

3
Il me semble que cela consiste en grande partie à apprendre au développeur débutant à poser des questions plus intelligentes. Excellente ressource pour cela: catb.org/esr/faqs/smart-questions.html
TALlama

4
Bien que je sois d’accord avec la plupart de vos remarques, j’essaie très dur d’enseigner aux entraîneurs et aux autres personnes responsables du développement d’autres peuples. Ne leur dites jamais comment faire quelque chose. Aidez-les à comprendre eux-mêmes et ne leur dites jamais ce qu'ils ont mal fait, ne leur dites pas comment ils peuvent s'améliorer à la place. Les premiers parce que cela augmente leur apprentissage, les seconds parce qu'au lieu d'affaiblir la confiance, cela peut le stimuler
Rune FS

1
@Jae: il est conseillé au mentor de ne pas toucher le clavier du junior.
ftr

21

J'ai environ 4 ans d'expérience et, de par mon expérience en tant que développeur junior, je peux vous dire ce que j'aimerais avoir comme mentor. Il semble que vous décriviez réellement le type de développeur que j'étais quand j'ai commencé :)

Essentiellement, vous voulez les encourager à apprendre. Certaines personnes pensent qu'après avoir terminé leurs études, elles n'ont plus besoin de lire des livres ni d'apprendre. Ce type d’attitude peut conduire à rechercher des raccourcis et à simplement «y arriver».
Obtenez-les "Le programmeur pragmatique" et demandez-leur de le lire. Ce livre les aidera à comprendre que la programmation est un métier / métier et pas seulement un travail. Recommandez-leur des livres à lire tous les trimestres environ. Aidez-les à construire leur "portefeuille de connaissances" (comme mentionné dans Pragmatic Programmer). Je recommande vivement Safari Books Online, qui contient de nombreux ouvrages sur la programmation et la programmation CS.

Avec leur portefeuille de connaissances, ils sauront où chercher s'ils ont des problèmes. Apprenez-leur où regarder. J'ai moi-même récemment découvert l'utilité de StackOverflow (et comme vous le savez, il vaut mieux regarder ici que sur Google).

On dirait que vous ne pouvez pas passer beaucoup de temps avec eux, mais la programmation en binôme est très utile. Si vous ne pouvez pas faire cela, faites au moins des revues de code en utilisant CodeCollaborator ou un autre outil similaire. Ils ne prennent pas autant de temps que vous le pensez.

Les tests unitaires sont également très importants. Ils peuvent rapidement révéler de mauvaises pratiques de développement, surtout si vous y associez une intégration continue.


10

Posez des questions dirigées pour le guider vers des réponses plutôt que de simplement lui dire (vous pouvez lui dire certaines choses de base, telles que le nom du serveur et la base de données stockant les informations). Montrez-lui comment trouver ses réponses.

Et ne réécrivez jamais son code quand il ne va pas, dites-lui ce qui ne va pas et attendez-lui de le réparer. Vous obtenez ce que vous attendez. Vous n'aidez personne en le rendant dépendant de vous.

Les revues de code sont également critiques. Et si vous programmez une paire, laissez-le avoir le clavier fréquemment. Même si vous lui dites quoi taper, il apprendra en tapant plus qu'il n'apprendra assis à côté de vous pendant que vous programmez.

Prenez quelques exemples du logiciel qui sont typiques de la structure de l'application et parcourez-les ligne par ligne pour vous assurer qu'il comprend pourquoi chaque ligne est nécessaire et ce qu'elle fait. Votre travail consiste à vous assurer qu'il connaît les normes de codage et son organisation, ainsi que les raisons pour lesquelles vous (en tant qu'entreprise) faites les choses comme vous le faites.

S'il a une façon différente de suggérer, écoutez attentivement. En premier lieu, il a peut-être raison. En deuxième lieu, l'écoute vous dira où est sa faiblesse de compréhension si ce qu'il suggère n'est pas pratique. De plus, les gens ont tendance à vous respecter davantage si vous les écoutez. Quand il se trompe, revenez aux questions principales pour qu'il puisse voir par lui-même pourquoi l'idée est fausse. S'il est même près d'avoir raison, allez parfois avec ses idées, rien n'est plus décourageant que de toujours se faire dire que vos idées ne valent rien.

Posez des questions sur ses antécédents. Il peut savoir certaines choses avec lesquelles vous n'avez pas eu la chance de travailler. Si c'est le cas et que la possibilité de les utiliser se présente, posez-lui des questions sur ses connaissances.

Si votre application est très ancienne, il y a probablement des «pièges» sournois que quelqu'un de nouveau n'aura aucun moyen de connaître. Ainsi, lorsqu'il commence à travailler sur des zones où vous avez un ou plusieurs de ces pièges, vous pouvez le lui dire au fur et à mesure qu'il se met au courant avant de coder, puis regardez s'il est tombé dans le piège quand il a codé.

Enfin, vous obtenez le respect en partie en donnant le respect. Traitez tous ceux que vous encadrez avec respect. Ne leur faites pas se sentir rabaissés ou stupides. Ils vous écouteront beaucoup mieux si vous les traitez avec respect.


1
Presque identique à la réponse que je me serais donnée moi-même, mais j'ajouterai également ceci: Laissez vos juniors faire des erreurs (offrez-leur des occasions de les faire même), car les erreurs constituent la meilleure occasion d'apprendre. L'échec provoque un stimulus émotionnel qui est plus susceptible d'entraîner une association de mémoire qui encourage l'apprentissage et, espérons-le, vos juniors seront encouragés par leur incapacité à poser plus de questions. Je dis souvent à mes juniors qu’il est correct d’essayer mais d’échouer au début s’ils essaient également d’apprendre de leurs échecs, et j’utilise des tests et des revues de code pour guider leurs efforts d’apprentissage.
S.Robins

Poser des questions suggestives est l'une des meilleures techniques que j'ai trouvées pour amener quelqu'un à un autre niveau de maturité. Votre objectif principal n'est pas de les amener à la bonne réponse, mais bien de les amener à un endroit où ils peuvent reconnaître la bonne réponse quand ils la trouvent (et ainsi, être capable de se débarrasser des mauvaises réponses en cours de route.)
chanvre

1
@ S.Robins, j'ai trouvé qu'il était utile de signaler que vous connaissez ce genre de choses à cause des erreurs que vous avez commises.
HLGEM

8
  • Je m'assure toujours que le développeur demande mon aide, et je fais très attention à ne pas aller plus loin dans les explications que leur patience ne peut tolérer. Comme tout le monde, j'aime le son de ma propre voix!
  • Je les traite comme des égaux et je leur demande leur avis aussi souvent que possible.
  • Catch les faire quelque chose de bien et leur faire savoir.
  • Lorsque j'agis correctement, j'apprends toujours quelque chose - sur mon métier, sur mon métier, sur le développement et sur l'enseignement.
  • La première leçon est toujours: quand savoir que vous l’essayez trop longtemps par vous-même. Beaucoup de gens sont fiers de trouver leurs propres réponses et perdent un temps précieux à tourner en rond.

Re: "Attrapez-les en train de faire quelque chose de bien": Je ne suis pas sûr d'être d'accord avec cela, car cela implique que vous regardiez toujours par-dessus leur épaule, ou du moins que vous les surveilliez régulièrement. Cela peut être nécessaire dans certaines relations, mais je ne pense pas que la relation mentor / protégé en soit une; et cela contredit votre excellent conseil de "les traiter comme des égaux".
Ruakh

Ruak, vous faites un excellent point. C'est ce que m'a appris mon responsable lorsque je suis devenu directeur (il était mon mentor, mais il était originaire de Brooklyn ...) et je n'ai jamais remis en question le libellé jusqu'à présent. Plus convenablement: "Remarquez quelque chose de juste sur ce qu'ils font." Je commence avec ça. Lorsque l'inévitable problème "off by 1" survient avec les programmeurs en C, je peux remarquer que la construction de sa boucle était compacte et bien commentée, puis lui demander de me guider dans la logique. Merci.
Thomas McNamee

OK, oui, je suis d'accord avec ça. +1 :-)
ruakh

7

Je suis un développeur junior et je pense que mon mentor gère très bien ces choses. Généralement, il me dira plusieurs façons de faire quelque chose, mais pas comment le faire. Ensuite, je restais assis là à essayer les deux solutions et à choisir la solution la plus propre au problème.

De plus, si jamais il faisait quelque chose qui pourrait m'être utile, il m'appellerait juste pour donner un aperçu de ce qu'il faisait et pourquoi.

Cela s'est traduit par un peu de temps passé avec moi et signifiant essentiellement que je devais apprendre par moi-même les bonnes réponses et comment mettre les choses en œuvre. Bien sûr, si jamais je restais coincé, il serait là pour aider, mais c'était une poignée de fois. Après seulement 5 mois de travail avec lui, j'ai probablement acquis plus de connaissances en la matière que l'ensemble de mes études universitaires.

La chose importante à retenir est que je ne suis qu'un individu et que cela a bien fonctionné pour moi en raison de mon état actuel et de son état actuel. Il s’agit de trouver une structure appropriée qui vous aidera tous les deux.


5
+1 J'ai appris davantage au travail qu'à l'université, simplement parce que les gens ont pris le temps de m'apprendre.
James Khoury

7

En fonction de la tâche confiée, je serais tenté d'adopter différentes approches:

  • Demandez-leur ce qu'ils essaieraient ensuite pour terminer la tâche. Cela peut donner une idée de la catégorie "Je ne sais pas quoi faire" et "Bien, je voudrais essayer mais mais ..." sont-ils en termes de leur propre idée qui peut être utile comme point de départ .

  • Jetez un coup d'œil à ce qu'ils veulent faire et proposez-leur des astuces pour qu'ils découvrent le problème. C’est plutôt que de donner la réponse suivante: "Supprimez cette ligne de code", suggérez-leur de regarder ce qui est là et est-ce nécessaire.

  • Si le premier couple ne va pas au travail, j'essaierai de le convaincre de suivre mes instructions pour résoudre le problème. C'est la prochaine étape de la progression. S'ils ne savent pas par où commencer et que les astuces ne fonctionnent pas, c'est le point suivant.

  • Enfin, si rien ne fonctionne, je ferais le travail pour eux, mais j'essaierais d'éviter cela autant que possible, car c'est ainsi que des problèmes se posent, par exemple, une personne connaissant intimement la création d'un système, car quelqu'un peut envisager de se décharger de son travail. sur moi pour ce système que je semble connaître si bien.


+1 j'allais écrire quelque chose mais cela résume bien mon approche.
Jason Sebring

5

Une chose que j’ai trouvée utile dans mon travail a été de mettre en place un forum (PHPbb) pour les questions-réponses internes et de suivre la règle suivante: si la question et / ou la réponse prend plus de 5 minutes, elle devrait être demandé et répondu via le forum. Les avantages:

  • Cela oblige le jeune développeur à énoncer clairement la question, ce qui facilite la réponse, sans parler des moments dans lesquels il trouve la réponse lui-même, en y réfléchissant un peu plus
  • Cela évite les questions en double, car le développeur junior devrait commencer par chercher des questions similaires déjà posées
  • Cela aide à créer une base de connaissances qui sera utile pour les futurs recrutements et à documenter de nombreuses petites choses qui pourraient être perdues avec le temps.

4

Je vais inverser la tendance et suggérer de ne pas encourager les développeurs débutants à apprendre à trouver eux-mêmes les réponses. Cela ressemble à un jeu de "Je l'ai mais je ne vais pas vous le donner."

Jumelez-les plutôt avec eux pour trouver la réponse. Vous allez quand même le chercher sur Google, alors faites-le assis à vos côtés. Ils vont comprendre que c'est le moyen de trouver des réponses.

Si vous travaillez en étroite collaboration avec eux, ils découvriront comment utiliser correctement l'IDE; Comment normaliser une base de données; comment assécher votre code ... tout ce que vous savez qui vaut la peine d'être connu.

Les clés sont les suivantes: - se mettre à leur disposition afin qu’ils puissent voir comment vous travaillez. Et deux - dire à haute voix pourquoi vous faites ce que vous faites. "Ce code se répète, je vais donc le refactoriser" et non "utiliser la méthode d'extraction sur ces trois lignes".


Je ne crois pas que vous résistiez à la tendance. C'est un bon conseil. de travailler avec eux et leur montrer comment vous iriez de résoudre le problème (bien que, on peut avoir à faire semblant qu'ils ne savent pas la réponse déjà [pas le cacher] pour montrer le processus de le trouver).
Josh Johnson

Et pour être clair, je n'ai aucune intention de cacher la connaissance. Mais il est devenu évident que ce que je sais, c’est être exploité (consciemment ou inconsciemment). Et je ne parle pas d'une cavité cachée profonde de la technologie que nous utilisons; Je parle de la différence entre une primitive et un objet, ou d'une variable d'instance et locale, ou d'un message d'erreur qui dit exactement quelle est l'erreur et par où commencer. (Pour référence, mon élève actuel a 5 ans d'expérience professionnelle; je ne pense pas être déraisonnable.)
Josh Johnson

4

Je n'ai jamais eu à former une seule fois un programmeur junior. C'était pour aider à maintenir un système que j'avais construit. Le but était finalement de lui céder l’ensemble du système.

Après une courte période au cours de laquelle il m'a suivi, je l'ai jeté au feu. Je lui attribuerais des cas et m'attendrais à ce qu'ils soient terminés. S'il avait des problèmes, je lui demanderais de lui expliquer quel était le problème et où il avait regardé. Je lui conseillerais alors dans les termes les plus généraux, où regarder ensuite. (Quelle application, peut-être quel module regarder, etc.). Je ne le laisserais jamais se débattre, mais je ne ferais jamais rien du travail. Ne donnez que des instructions. S'il avait toujours des problèmes, je me contenterais de hausser les épaules et de dire "Commencez à rechercher le code". Et chaque fois que je disais ça, il se recroquevillait - sachant qu'il allait faire un exercice fastidieux. Cela le rendait fou, parce que nous savions tous les deux que je pourrais probablement trouver le problème en 10 minutes si je me débarrassais de mes fesses et de l'aide.

Des années plus tard, il est passé à de plus grandes choses et maintenant, il entraîne ses propres juniors. Et son histoire préférée est la façon dont je lui disais toujours de "tracer le code", et comment ces exercices de traçage de code étaient cruciaux pour faire de lui le programmeur qu'il est aujourd'hui.


3

Chaque fois que l'on me pose une question qui, à mon avis, peut être résolue par une recherche rapide dans Google, je vais trouver de la documentation ou un article relatif et le transmettre à la personne qui pose la question.

Savoir où faire des recherches est une compétence importante, et parfois plus difficile que vous ne le pensez pour un nouveau développeur. Ils ne savent peut-être même pas ce qu’ils cherchent et c’est là que vous devez les aider.

Une fois entre leurs mains, des articles et de la documentation les forceront à se renseigner sur la solution au lieu de gripper les autres développeurs pour une réponse rapide.

Cela permettra d'accomplir les tâches suivantes:

  • Réduire une partie du fardeau des développeurs chevronnés.
  • Forcer le nouveau développeur à apprendre.
  • Le bonheur pour tous.

Parfois, il suffit de leur donner un amour coriace, surtout s’ils ne semblent pas vouloir apprendre. Ne leur donnez pas la réponse, mais assurez-vous de les orienter dans la bonne direction.


3

Je recommanderais de commencer à donner des parties de tâches réelles que vous avez et à tout faire pour pouvoir utiliser son code. En d'autres termes, formez-le en remplacement de vous-même.

De cette façon, vous vous engagerez à consacrer du temps à travailler avec junior et il sera capable de voir la "vraie vie". En travaillant sur de vraies tâches et en écoutant des retours d'expérience, il sera capable de faire en sorte que p se dépêche assez rapidement.


1

J'ai enseigné aux gens diverses matières par le passé, et ce qui m'a le plus frappé, c'est que la plupart des gens n'ont pas de compétences en résolution de problèmes . Autrement dit, si vous leur montrez une solution exacte, ils pourront la réutiliser plus tard s'ils le reconnaissent ou s'ils se font dire qu'ils en ont besoin.

Mais très peu de situations dans la vie sont comme ça. Sauf si votre travail est une "usine mentale" impliquant le fait de coller le widget A au widget B avec l'outil C, vous devrez disposer de quelques éléments:

  • Une boîte à outils de compétences et d'outils
  • Une méthode de résolution de problème

Par exemple, jetez un oeil à cette réponse que j'ai postée . Cela couvre la méthode de résolution de problèmes que beaucoup de gens n’ont pas . College n’a enseigné cela à personne du programme CompSci, vous le saviez déjà ou l’aviez compris vous-même.

Une fois que le développeur junior comprend comment résoudre des problèmes, il lui faut un ensemble d’outils pour le faire.

  • Debugger (College jamais mentionné)
  • Profileurs
  • Éditeur de texte
  • Shell (et utils associés)
  • Ressources (livres, google, SO, pages de manuel)

Déterminez ce qui manque au développeur junior et vous pourrez l’aider à s’améliorer. Sachez simplement que certaines personnes ne sont vraiment pas intéressées par l’apprentissage de la résolution de leurs propres problèmes et souhaitent simplement recevoir une solution «évidente, étape par étape». Ce ne sont pas de bons développeurs.

J'espère que vous n'en aurez pas. Si vous le faites, sachez que peu importe le temps que vous passez, ils ne s'aideront pas tous eux-mêmes. Cela demanderait des efforts, et il est plus facile de simplement vous demander de le faire pour eux. C'est semblable au problème de bien-être, et expliqué par la théorie économique.

Enlightened self interest dit que les gens prendront ce qu’ils considèrent comme l’option la plus avantageuse dans une situation donnée. Notez que c'est ce qu'ils voient. Je considère la chose la plus importante comme étant autonome et en apprentissage. Alors, je fais les choses moi-même. Mais d'autres peuvent se rendre compte qu'ils doivent simplement fournir un code fonctionnel dans les délais. Ils recherchent donc la méthode la moins coûteuse pour le faire. En leur fournissant des "cadeaux", ils ont besoin de dépenser le plus petit effort possible pour atteindre leur objectif. Tant que vous n'enlevez pas cette béquille, ils ne pousseront pas .


1

Votre organisation, telle que vous la décrivez, est très différente de la mienne. Je suis en train de contrôler mon travail de junior et je le vois comme mon rôle de juger. Donc, beaucoup est différent.

Quoi qu'il en soit, j'aimerais vous conseiller de vous rendre fréquemment à leur bureau au cours des deux premières semaines. Quelque chose comme trois fois par jour la première semaine, en diminuant progressivement.

Le message que j'essaie de transmettre de cette façon est que je me soucie de leur productivité. Je m'assure qu'ils ne restent pas coincés. Je m'assure qu'ils suivent les règles et ne réinventent pas la roue. Je leur apprends à s'engager aussi souvent que possible. Apprenez-leur à se développer progressivement et à réfléchir progressivement à la conception.

Mon pire cauchemar sont les développeurs qui chaque jour vous disent qu'ils n'ont besoin que d'un jour de plus pour terminer leur travail. Après des semaines de retard, vous obtenez une conception trop compliquée, qui est piratée dès le début par son auteur. Des fonctionnalités de buggy supplémentaires non demandées sont ajoutées au mixage pour compenser le retard, et parce qu'elles étaient un effet secondaire libre du design.

Je crois que beaucoup de développeurs sont enclins à cette approche. Si vous vous retrouvez seul (e) avec une tâche Compex, essayer de prouver que vous pouvez le faire vous-même est une réaction naturelle. Mais c'est la mauvaise réponse. La qualité, c'est le travail d'équipe, et plus vite ils apprennent, mieux c'est.


1

Les autres réponses sont très bonnes, mais je voulais commenter cette phrase.

Récemment et par le passé, nous avons eu des débuts ici qui semblent avoir une attitude envers le développement / la programmation qui est différente de la mienne et difficile à réconcilier pour moi; ils semblent extraire juste assez d’informations pour mener à bien la tâche, mais n’en tirent pas vraiment les leçons.

La plupart des gens veulent savoir comment faire quelque chose. Cette attitude convient au début lorsque vous êtes submergé par l’apprentissage de nouvelles choses et l’apprentissage de votre métier.

Rares sont les personnes qui veulent savoir pourquoi quelque chose est fait. Ce sont les gens que les gestionnaires intelligents veulent, même s’ils sont parfois difficiles à gérer.

Certaines personnes codent pour être bien payées. D'autres acceptent volontiers de l'argent pour le codage. C'est beaucoup plus agréable de travailler avec des personnes passionnées par le design et le codage. Malheureusement pour moi, c'était aussi assez rare. Au moins jusqu'à ce que j'ai trouvé Stack Overflow.


1

Une chose à surveiller, pour ceux qui s'enthousiasment à la perspective de faire tout ce mentorat pour les développeurs débutants: assurez-vous que votre direction comprend ce qui se passe.

Enseigner aux autres est un travail difficile, en général. Cela demande de la concentration, de la planification, des efforts et, surtout, du temps. Quelle que soit votre approche, si vous enseignez et faites du mentorat de manière sérieuse, vous perdrez du temps.

  • Si votre direction recrute des développeurs moins expérimentés en espérant que les développeurs seniors se chargent de la formation, assurez-vous que cela est explicite. Déterminez le délai et assurez-vous que vos calendriers de développement reflètent le temps et les efforts consacrés à la formation. Assurez-vous que la direction a des plans pour évaluer le succès des efforts de mentorat à un moment convenu. (Bien sûr, s’ils embauchent des développeurs qui ont besoin d’enseignement et de mentorat, mais que la direction n’en planifie pas la tâche, il est évident que le problème est grave.)

  • Tout le monde n'est pas un bon enseignant ou un bon mentor, et tout le monde ne veut pas l'être. Je ne veux pas paraître croustillant ou amer; J'aime beaucoup enseigner. Mais il est stupide de s’attendre à ce que tout le monde soit bon (malgré ses propres talents), et on ne peut pas s’attendre à ce que tout le monde apprécie le processus (rappelez-vous, ce n’est pas facile). En outre, si vous êtes un développeur expérimenté qui n'aime pas le mentor ou si vous pensez vraiment que vous êtes un mauvais choix pour un enseignant ou un mentor, assurez-vous que votre direction comprend qu'un plan qui implique que vous accomplissiez ces tâches soit un plan avec un défaut grave. D'autre part, si vous voulez devenir bon en enseignement ou en mentorat, c'est aussi quelque chose à communiquer.

  • Si l’enseignement et le mentorat sont des tâches inégalement réparties parmi la population de développeurs expérimentés, assurez-vous que ces tâches sont considérées comme utiles pour l’entreprise, de la même manière que les réalisations en matière de développement de produits.


1

Je vais vous donner mon regard dessus.

En gros, j'apprends bien quand je:

  1. Je reçois une introduction formelle au sujet. Je ne pourrai jamais apprendre quelque chose de nouveau sans que quelqu'un (oui, une personne) réponde à toutes les questions que j'ai sur les nouveaux concepts. Une fois que j'ai fait ça, je ...
  2. Obtenez un livre. En tant que mon mentor, vous devriez avoir exactement le même livre pour que je puisse toujours dire quelque chose comme: "Hé, qu'est-ce que cela signifie au chapitre quatre, page 72, paragraphe 6 ..." et vous saurez exactement de quoi je parle sur. Une fois que j'ai un livre, je suis plus indépendant et je ne pose que des questions. Alors je...
  3. Commencez un projet ensemble. C'est la partie la plus importante du processus. C'est ici que vous pouvez commencer à m'enseigner les meilleures pratiques, les algorithmes, les fonctionnalités de langage difficiles (mais utiles), etc.

Maintenant, vous avez dit que vous avez vos propres projets à gérer et que vous n’avez pas toujours le temps. C'est pourquoi nous avons été bénis avec StackOverflow . Je suis sûr qu'ils seraient heureux de l'aider à déboguer son code. Quant aux questions qui ne sont pas sur le sujet, il peut poser ici.

Cela dit, vous devez toujours travailler avec lui régulièrement. Un "calendrier" général devrait être:

  • 1 mois. Devrait connaître la syntaxe de base. Toujours pas indépendant lors du codage.
  • 3 mois. À ce stade, il devrait connaître la syntaxe sur le bout des doigts et devrait pouvoir résoudre facilement des problèmes simples. Il est beaucoup plus indépendant, mais pas encore tout à fait là.
  • 6 mois. Ils devraient savoir, en plus de tout le reste: meilleures pratiques, algorithmes communs, etc. Il devrait être capable de faire un projet lui-même, peut-être avec un peu d'aide de SO.

Outre ce qui précède, le moyen le plus simple de rendre une personne indépendante est de leur donner un sujet difficile à apprendre et de ne leur donner aucune aide pour les aider à part Internet. Il sera obligé d'apprendre par lui-même et il saura ce qu'il fait.

Après qu'il sache ce que vous voulez qu'il sache, libérez-le. Permettez-lui de partir et d'apprendre ce qu'il veut apprendre (vous pouvez toujours dire que vous voulez qu'il continue à travailler dans cette langue).

J'espère que ça aide! En passant, laissez-le lire ceci: Apprenez-vous à programmer dans dix ans .


0

Faites une distinction entre les niveaux d'apprentissage inférieurs et supérieurs. S'il s'agit de connaissances, de compréhension ou d'applications, je n'ai aucun problème à leur donner la réponse, avec une brève explication de la façon dont ils peuvent le rechercher la prochaine fois. Ce n'est pas l'école, ce n'est pas de la triche et ils ne compteront pas sur vous de cette façon pour toujours. Ne comptez pas faire autre chose la première ou la deuxième semaine, vous ne serez donc pas ennuyé.

Après les deux premières semaines, si vous êtes trop souvent interrompu par ce genre de questions, utilisez un minuteur pomodoro et ne répondez à aucune question avant la fin du pomodoro. Google est facile pour vous maintenant parce que vous savez quoi rechercher. Ils ne le font souvent pas. Par conséquent, si vous devez leur dire de rechercher quelque chose dans Google, indiquez-leur quels termes de recherche utiliser pour obtenir les meilleurs résultats.

Si un problème est lié à l'analyse, à la synthèse ou à l'évaluation, je passe plus de temps sur le sujet. C’est là que vous expliquez votre raisonnement et que vous les aidez à tirer les mêmes conclusions. Cela revient le plus souvent en matière de design et de style. Ne leur dites pas simplement d'utiliser un certain design, montrez- leur pourquoi il est supérieur à leur premier choix. Laissez-les faire des erreurs et laissez-les réparer eux-mêmes.


0

Je n'ai vu personne ici mentionner mon héros personnel, Randy Pausch .

Je pense que cela peut être bénéfique pour quiconque programme réellement, enseigne ou programme de mentorat (ou même pour tous ceux qui veulent mener une vie enrichissante). Vous et / ou vos collègues pourriez juger, comme moi, de regarder ces conférences digne de ce nom,


-4

En tant que développeur débutant, j’estime que si je rencontrais un problème, il serait préférable d’obtenir la réponse immédiatement et de passer du temps à comprendre comment le problème a été résolu.

Je suis payé. mon employeur ne s'attend pas à me payer pour apprendre. Je suis censé faire un travail à la fin de la journée. Pas la peine de perdre du temps dans un environnement de travail, essayez de trouver une solution. C’est quelque chose que je vais ramasser à temps, espérons-le rapidement si je suis bon dans ce que je fais.


9
D'une manière ou d'une autre, votre employeur vous paye pour apprendre
smp7d

13
Vous avez moins de valeur pour votre employeur si vous ne devenez jamais meilleur que le jour où vous avez été embauché comme programmeur junior.

10
Max, tu te trompes, à moins d'avoir un employeur de merde. Les bons employeurs vous paieront pour apprendre, au travail ou même en vous envoyant à des conférences ou à des cours. Si vous restez fidèle à votre attitude actuelle, ne vous attendez pas à ne plus être un développeur junior. Les titres comme junior / senior ne sont pas distribués uniquement en fonction du temps que vous avez consacré à quelque chose; si vous avez fait la même chose depuis longtemps mais que vous n'avez pas appris, vous seriez toujours considéré comme junior.
Andy

5
@ MaxSan Le problème est que les développeurs expérimentés voudront rarement vous nourrir à la cuillère. Nous n'avons pas embauché de stagiaires à plein temps car ils étaient incapables de trouver la solution par eux-mêmes. Nous nous attendons à ce que vous passiez du temps à essayer de comprendre, et seulement quand vous avez passé un temps raisonnable à venir demander de l'aide. En tant que senior, vous devrez probablement résoudre les problèmes, et vous ne pourrez pas le faire si vous mangez à la cuillère.
Andy

6
Si vous voulez une solution "sur une assiette", vous ne pourrez jamais sortir de votre statut de développeur junior. Apprendre des solutions complètes qui vous sont données pourrait être possible, mais ce n’est certainement pas efficace . C'est ainsi que fonctionne le cerveau: si vous rencontrez le chemin de la solution, pas seulement la solution elle-même, vous en apprendrez beaucoup plus que d'étudier la solution que quelqu'un d'autre vous a présentée.
Perdian
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.