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).
Réponses:
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:
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.
la source
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.
la source
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.
la source
la source
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.
la source
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.
la source
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:
la source
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".
la source
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.
la source
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:
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.
la source
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.
la source
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:
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.
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 .
la source
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.
la source
Les autres réponses sont très bonnes, mais je voulais commenter cette phrase.
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.
la source
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.
la source
Je vais vous donner mon regard dessus.
En gros, j'apprends bien quand je:
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:
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 .
la source
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.
la source
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,
la source
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.
la source