web-dev-qa-db-fra.com

Comment corriger un junior, mais encourager-il de penser pour lui-même?

Je suis la tête d'une petite équipe où tout le monde a moins d'une année d'expérience de développement logiciel. Je ne voudrais en aucun cas appeler moi-même un gourou logiciel, mais j'ai appris quelques années dans les quelques années que j'ai écrit des logiciels.

Lorsque nous effectuons des critiques de codes, je fais un peu d'enseignement et de correction des erreurs. Je dirai des choses comme "Ceci est trop complexe et compliqué, et voici pourquoi" ou "que pensez-vous de déplacer cette méthode en une classe distincte?" Je suis très prudent de communiquer que s'ils ont des questions ou des opinions dissidentes, c'est bon et nous devons discuter. Chaque fois que je corrige quelqu'un, je demande "Qu'est-ce que tu penses?" ou quelque chose de similaire.

Cependant, ils sont rarement désagréables ou demandent pourquoi. Et récemment, j'ai remarqué plus de signes flagrants qu'ils acceptent aveuglément avec mes déclarations et ne formant pas leur propre opinion.

J'ai besoin d'une équipe qui peut apprendre à faire les choses de manière autonome de manière autonome, pas seulement suivre des instructions. Comment fonctionne-t-on un développeur junior, mais l'encourage-t-il toujours à penser pour lui-même?

EDIT: Voici un exemple de l'un de ces signes évidents qu'ils ne forment pas leurs propres opinions:

Moi: J'aime votre idée de créer une méthode d'extension, mais je n'aime pas comment vous avez passé un grand complexe lambda en tant que paramètre. La Lambda oblige les autres à en savoir trop sur la mise en œuvre de la méthode.

Junior (après avoir mal compris): Oui, je suis totalement d'accord. Nous ne devrions pas utiliser les méthodes de vulgarisation ici car elles forcent d'autres développeurs à en savoir trop sur la mise en œuvre.

Il y avait un malentendu et cela a été traité. Mais il n'y avait même pas une once de logique dans sa déclaration! Il pensa qu'il régurgitait ma logique à moi, pensant que cela aurait un sens quand il n'avait vraiment aucune idée de la raison pour laquelle il le disait.

53
Phil

Réponse courte :

Engagez-les (mettre le puzzle dans leur esprit), les responsabiliser (faire confiance à leurs réponses).


C'est la question qui nous pousse! - Matrice.

Généralement, dans mes observations, que les juniors ont leur propre monde - leur propre vision limitée de la façon dont ils pensent et dans une partie de leur propre enthousiasme/des favoris/opinions sur les choses.

Il n'y a rien de mal à dire à leur dire que vous avez tort - mais c'est mieux que vous les faites penser. Pourquoi? Y a-t-il d'autres manières? Y a-t-il de meilleurs moyens de faire la même chose? L'une des anecdotes que j'utilise toujours est - "Donnez-moi trois solutions (à ce problème)!"

Au moment où ils pensent à ces solutions, ils commencent à réaliser de nombreux problèmes. Cela leur prend un certain investissement de temps - mais au fil du temps, ils ont tendance à visualiser les limitations et les lacunes de leur pensée. Ils commencent à voir que plus comme "Je n'y pensais pas!" C'est bien meilleur que de rentrer à la maison avec le sentiment que "J'avais tort!" ou même pire "On m'a dit/s'est avéré faux même lorsque j'avais des points de vue valides".

En général, de très jeunes enfants auront tendance à être plus adeptes liés à Technique Les problèmes (tels que le modèle de conception fonctionnent mieux!) Over Processus Problèmes, mais plus Il est temps où vous les entraînez, cela fonctionne.


Cependant, ils sont rarement désagréables ou demandent pourquoi. Et récemment, j'ai remarqué plus de signes flagrants qu'ils acceptent aveuglément avec mes déclarations et ne formant pas leur propre opinion.

Cela est généralement un résultat que vous do Prenez leurs suggestions, mais les annulera plus tard et ils sont également peu convaincus de votre point de vue; Juste parce que vous êtes senior, ils évitent un combat!

La meilleure chose que j'ai apprise d'un de mes bosses passées: il demandera aux membres de l'équipe de débattre d'abord (ils se sentent équitablement égaux ici), et espérons-le après tous les arguments épuisés, il entrerait dans la pièce avec une seule question - "Quels étaient les points de désaccord? " - Le but est que les gens aiment toujours participer à des débats et de discussion, mais si leurs points (valides) ne sont pas pris à l'action la prochaine fois, il n'aurait pas de la peine de participer à la discussion.

Non seulement dans les logiciels, mais partout en fin de compte, seuls les coéquipiers les plus autonomisés devront Dare Pour répondre, encore moins de questionner le système.

37
Dipan Mehta

Depuis que vous avez plusieurs développeurs juniors, les commentaires des codes ne sont pas un groupe 1 un 1.

Open en demandez au groupe "Comment pourrait-on résoudre autrement le problème?" Et laissez les autres développeurs juniors à suggérer d'abord leurs implémentations. Ajoutez uniquement votre mise en œuvre après que les autres membres de l'équipe ont parlé et si aucun n'a suggéré quelque chose de similaire à ce que votre idée est.

Ensuite, disposez d'une table ronde sur les avantages relatifs et les inconvénients des différentes implémentations dans l'intention de guider les Devs juniors afin de choisir la meilleure mise en œuvre sans être informé de quoi il s'agit.

En tant que constructeur de confiance pour les Devs junior, vous pourriez commencer par certains cas où ils ont choisi ce que vous pensez être la meilleure option et rendez votre alternative à une paillette qui a une faille semi-évidente et dirigez la discussion vers la raison pour laquelle la mise en œuvre initiale est la meilleure.

Quand j'ai commencé à travailler dans un travail de programmation, j'ai fait exactement la même chose que vous avez décrite: lorsque je pourrais faire quelque chose que je pouvais faire, je serais toujours d'accord. C'était principalement parce que je n'avais pas assez d'expérience pour dire autrement.

Ce qui m'a donné la capacité de discuter de méthodologies et d'idées d'apprentissage de l'expérience ainsi que de lire des approches différentes et de nouvelles technologies. Pour que votre équipe pense pour eux-mêmes, ils doivent en réalité savoir ce que les problèmes peuvent survenir des choses comme un code "trop complexe et compliqué", et le seul moyen réel qu'ils découvriront est d'une expérience.

Un bon moyen de faciliter la pensée individuelle consiste à examiner les sites Web de programmation tels que le débordement de pile ou les programmeurs SE. Je sais que cela m'a aidé à apprendre les différentes techniques qui étaient là-bas et me permettaient d'avoir des discussions avec des membres âgés de l'équipe, au lieu d'accepter aveuglément avec eux.

Le point est qu'en cas d'expérience, les suggestions de personnes âgées ne leur sembleront toujours pas bien.

5
Ivan

L'interaction de votre message démontre un principe clé pour enseigner presque n'importe quoi: Demandez-leur d'expliquer ce qu'ils pensent avoir dit et écoutez attentivement la réponse: cela vous indiquera précisément ce qui doit être corrigé.

J'ai volé sans vergogne Copié cette truc de mon tuteur mathématique il y a environ 25 ans, et cela n'a pas manqué de moi depuis. Je l'ai utilisé en classe lors de mon bref steint comme assistant pédagogique, au travail lorsque vous parlez de la conception de logiciels et avec mes huit ans lorsque vous parlez de ses tâches scolaires.

Bien sûr, vous ne pouvez pas toujours être émoussé de leur demander de répéter ce que vous venez de dire, vous devez donc ajuster votre stratégie. Par exemple, voici la façon dont je voudrais réaffirmer votre déclaration de suivi de la PO comme une question "sondage":

J'aime votre idée de créer une méthode d'extension, mais je n'aime pas comment vous avez passé un grand complexe lambda comme paramètre. Voyez-vous comment ce complexe Lambda oblige les autres à savoir trop certaines choses sur la mise en œuvre de la méthode?

Cette question est impossible de répondre correctement sans comprendre la question que vous essayez de mettre en évidence. J'ai trouvé que mettre fin à mes explications avec une question qui nécessite une analyse de ce que je viens de dire accélère le processus d'apprentissage et me donne des commentaires que je dois faire des corrections.

5
dasblinkenlight

Habituellement, lorsque les gens ne disent pas ce que vous voulez, cela signifie que vous devez travailler sur votre écoute. L'écoute signifie entendre les raisons de leur conception avant de prendre le jugement. Cela signifie pas seulement leur dire que c'est bien de se dissider, mais prouver IT en considérant honnêtement ce qu'ils ont à dire et non seulement les corriger. Recherchez les bonnes choses sur leur solution et modifiez votre solution pour incorporer ces choses.

Vous devez également mener par exemple. Je ne veux pas dire par écrit du code Uber-Awesome, je veux dire en leur demandant leur opinion sur vos propres conceptions. N'attendez pas les critiques de code après le fait, mais travaillez ensemble tout au long du processus. Dites des choses comme ", mon interface semble trop complexe, mais je ne suis pas sûr de la meilleure façon de le simplifier." Et donnez-leur le temps de répondre sans les biaiser à vos idées d'abord.

5
Karl Bielefeldt

Quand j'ai dû faire face à cela, j'ai dit (honnêtement) des choses comme:

Vous savez, c'est une solution vraiment créative que je n'aurais jamais pensé. Comment ça échoue?/Pensez-vous qu'il pourrait y avoir une approche qui est plus simple, pour rendre le développement plus rapide ou plus facile?/Malheureusement, je ne pense pas que cela s'intègre vraiment avec le reste de l'architecture du projet. Que La configuration ressemble?

Cela a généralement été suffisant pour diriger les gens dans une nouvelle direction.

4
James McLeod

La responsabilité est une chose qui peut les aider.

J'ai mené une équipe ou deux dans le passé et une des choses qui ont fait que Juniors Shine était le fardeau de la responsabilité personnelle. Quand on se rend compte que ses actions peuvent impliquer sur lui à un moment donné, il/elle commet-elle généralement un peu-peu de lui-même dans ce qu'il fait. Non, pour mentionner que lorsqu'ils ressentent leur travail, les bons résultats sont beaucoup plus satisfaisants.

2
g.salakirov

Je ne m'inquiéterais pas trop du fait qu'ils vous suivraient aveuglément, c'est ce qu'ils devraient faire comme des juniors. La chose est qu'ils ne vont probablement pas comprendre les véritables raisons des articles que vous avez adressés dans les critiques de code jusqu'à ce qu'ils soient partis et travaillant ailleurs ailleurs qui possèdent des développeurs de logiciels terribles, une gestion terrible et un code terrible.

À cette époque, ils auront appris de bonnes pratiques hors d'habitude et devront vivre dans les erreurs de codage et de conception que d'autres font et ils sont obligés de faire de cela qu'ils doivent maintenant travailler sur des logiciels mal conçus et mis en œuvre.

Ce sera une éventuelle inévitabilité à un moment donné de leur carrière. Vous leur faites un excellent service en les demandant à de bonnes normes et pratiques de codage. Malheureusement, la plupart d'entre nous devaient apprendre la dure.

1
maple_shaft

Basé sur l'exemple donné, je dirais que vous diriez de suivre vos commentaires avec des questions serait probablement la meilleure façon d'y aller. Si vous posez une question avec vos commentaires, cela ne les laissez pas simplement d'accord ou en désaccord, ils doivent au moins penser à la manière dont ils peuvent mettre en œuvre quelque chose.

par exemple. "J'aime votre idée de créer une méthode d'extension, mais je n'aime pas comment vous avez passé un grand complexe lambda en tant que paramètre. La Lambda oblige les autres à en savoir trop sur la mise en œuvre de la méthode. Pouvez-vous penser à une meilleure façon de mettre en œuvre Cette méthode d'extension qui n'expose pas autant d'informations? "

Cela leur permet de voir les défauts dans ce qu'ils développent tout en leur donnant la possibilité de résoudre le problème qu'ils ont introduit dans la demande.

1
SpartanDonut