Stage en informatique : le point de vue d'un manager

Stage en informatique : le point de vue d'un manager

Recrutement pour stage d'été dans Yandex continue. Cela va dans cinq directions : backend, ML, développement mobile, frontend et analytique. Dans ce blog, ainsi que dans d’autres blogs sur Habré et au-delà, vous pouvez trouver de nombreuses informations sur le fonctionnement du stage. Mais une grande partie de ce processus reste un mystère pour ceux qui ne travaillent pas dans l’entreprise. Et si l’on regarde du point de vue des responsables du développement, encore plus de questions se posent. Comment bien réaliser un stage, comment maximiser l'utilité mutuelle avec un stagiaire, comment faire sa connaissance en trois mois et lui apprendre tout ce dont il a besoin pour continuer à travailler ?

Cinq d’entre nous ont préparé cet article. Présentons-nous : Ignat Kolesnichenko du service de technologie informatique distribuée, Misha Levin du service d'intelligence artificielle du marché, Denis Malykh du service de développement d'applications, Seryozha Berezhnoy du département de développement d'interfaces de recherche et Dima Cherkasov du groupe de développement antifraude. Chacun de nous représente son propre domaine de stage. Nous sommes tous des managers, nous avons besoin de stagiaires et nous avons une certaine expérience de travail avec eux. Laissez-nous vous raconter quelque chose de cette expérience.

Entretien pré-stage

Plusieurs entretiens techniques attendent les candidats. La réussite à un entretien dépend moins des compétences générales (la capacité de communiquer efficacement) que des compétences techniques (compétences en mathématiques et en programmation). Cependant, les gestionnaires évaluent les deux.

Ignat :

Même si une personne est très cool, mais absolument peu communicative, elle ne pourra pas appliquer toutes ses compétences. Bien sûr, nous y prêtons attention, mais ce n’est pas une raison pour ne pas embaucher quelqu’un en stage. En trois mois, tout peut changer, et en plus, votre première impression peut s'avérer fausse. Et si tout est correct, vous devrez expliquer à la personne, rechercher d'autres commandes. Pour les stagiaires, les compétences en communication ne sont certainement pas un facteur clé. Pourtant, les compétences professionnelles sont bien plus importantes.

Denis:

J'aime les gens qui racontent des histoires – dans le bon sens du terme. Une personne qui peut raconter comment lui et son équipe ont héroïquement géré un fakap est intéressante. Je commence à poser des questions de suivi lorsqu'une histoire comme celle-ci survient. Mais cela arrive rarement si vous demandez simplement « de parler de quelque chose d’intéressant dans vos projets ».

Un candidat a dit un jour une phrase merveilleuse, que j'ai même écrite : « J'ai réussi à éviter de résoudre des problèmes fastidieux ».

Stage en informatique : le point de vue d'un manager

Comme il y a peu de temps pour communiquer, l'intervieweur essaie d'obtenir des informations utiles sur le candidat à chaque minute de la réunion. C'est formidable si le stagiaire savait à l'avance quels détails de son expérience (et non issus de son CV) il pourrait partager. Cela devrait être une histoire courte strictement pertinente.

Denis:

Je fais attention si une personne dit qu'elle a essayé de nombreuses langues et approches. Les personnes ayant une vision plus large proposent des solutions plus élégantes en mode combat. Mais c'est un plus ambigu. Vous pouvez comprendre, mais vous n’apprenez vraiment rien.

Le temps des histoires décrites par Denis ne reste généralement que lors de l'entretien final. D’ici là, il est nécessaire de démontrer les connaissances fondamentales et pratiques qui constitueront la base des travaux futurs. Et bien sûr, vous devrez écrire le code sur un tableau ou sur une feuille de papier.

Souris:

Nous testons les connaissances en théorie des probabilités et en statistiques mathématiques. Nous vérifions si la personne a de l'expérience avec des métriques, avec des algorithmes d'apprentissage automatique, avec la définition de leurs paramètres, avec le recyclage, etc. Nous nous attendons à ce que la personne soit suffisamment capable d'écrire du code pour être un analyste.

Denis:

Ceux qui viennent pour un entretien connaissent pour la plupart des langues : à Ekaterinbourg, nous avons une bonne école de langues de base, de bons instituts. Mais pour être honnête, un candidat au stage doté de bonnes compétences techniques est un cas rare, du moins dans notre quartier Epsilon. Par exemple, Swift. Cela implique un travail très complexe avec les cordes, et rares sont ceux qui peuvent travailler avec elles par tête. L’œil attire immédiatement votre attention. Lors des entretiens, je confie souvent une tâche liée au traitement des chaînes. Et pendant tout ce temps, une seule personne était capable d’écrire un tel code Swift immédiatement, sur un morceau de papier. Après cela, j'ai dit à tout le monde que quelqu'un était enfin capable de résoudre ce problème dans Swift sur un morceau de papier.

Tester les algorithmes lors d’un entretien

Il s'agit d'un sujet distinct car les candidats ont encore une question : pourquoi évaluons-nous toujours la connaissance des algorithmes et des structures de données ? Même les futurs développeurs mobiles et développeurs front-end subissent de tels tests.

Souris:

Au cours de l'entretien, nous sommes sûrs de poser une sorte de problème algorithmique. Le candidat doit comprendre comment l'implémenter en Python, de préférence sans erreurs. Vous devez comprendre comment vérifier votre programme et le corriger vous-même.

Stage en informatique : le point de vue d'un manager

L'expérience en algorithmique est utile pour trois raisons. Premièrement, cela sera évidemment nécessaire dans les tâches algorithmiques - ce qui n'arrive pas souvent, mais cela arrive. Deuxièmement, le développeur sera en mesure de résoudre plus efficacement les problèmes liés aux algorithmes, même s'ils ne nécessitent pas d'approfondir les algorithmes eux-mêmes (et ils sont déjà assez nombreux). Troisièmement, si vous n'avez pas appris les algorithmes à l'université, mais que vous savez toujours comment travailler avec eux, cela vous caractérise comme une personne curieuse et augmentera votre autorité aux yeux de la personne interrogée.

Denis:

Une grande partie du développement mobile est la lecture aléatoire JSON. Mais une fois tous les six mois, il arrive que des algorithmes soient nécessaires. Je dessine actuellement de belles cartes pour Yandex.Weather. Et en une semaine, j'ai dû implémenter l'algorithme de lissage, l'algorithme de Sutherland-Hodgman et l'algorithme de Martinez. Si une personne ne savait pas ce qu'est une hashmap ou une file d'attente prioritaire, elle serait restée coincée avec elle pendant longtemps et il ne serait pas clair si elle y parviendrait ou non sans aide extérieure.

Les algorithmes sont la base du développement. C'est ce qui aide un développeur à être un développeur. Peu importe ce que vous faites. Ils sont également nécessaires dans les projets simples, où le travail principal consiste à « traduire JSON ». Même si vous n'écrivez pas les algorithmes eux-mêmes, mais que vous utilisez implicitement certaines structures de données, il est préférable de les comprendre. Sinon, vous vous retrouverez avec des applications lentes ou incorrectes.

Il y a des programmeurs qui sont entrés dans le développement par des études académiques : ils sont entrés à l'université, ont étudié pendant cinq ans et ont reçu une spécialité. Ils connaissent les algorithmes parce qu’on leur a enseigné. Et puis la connaissance des algorithmes elle-même ne caractérise en aucune façon les horizons d’une personne ; cet horizon doit être testé d’une autre manière.

Et il y a des autodidactes, dont je fais partie. Oui, formellement, j'ai une formation en informatique, un diplôme en génie logiciel. Mais les autodidactes ont appris à programmer « malgré tout ». Ils n'avaient pas de programme universitaire. Habituellement, ils ne sont pas familiers avec les algorithmes, car ils n’ont jamais eu besoin de les étudier. Et quand une telle personne comprend les algorithmes, cela signifie qu'elle a passé du temps et les a compris. Après avoir obtenu mon diplôme universitaire, j'ai réalisé que j'avais des angles morts en termes d'algorithmes fondamentaux - le fait est que ma spécialité était appliquée. Je suis allé étudier des cours en ligne à l'Université de Princeton, du célèbre Robert Sedgwick. J'ai compris et j'ai fait tous mes devoirs. Et quand une personne raconte une histoire similaire lors d'un entretien, je m'y intéresse immédiatement, j'ai envie de travailler avec elle ou du moins de poursuivre la conversation.

Stage en informatique : le point de vue d'un manager

Ignat :

Lorsque vous interviewez un stagiaire, d'une certaine manière, vous attendez encore plus que d'un développeur expérimenté. Nous parlons de la capacité de résoudre des problèmes algorithmiques, d'écrire rapidement au moins du code correct. Le candidat au stage est toujours à l'université. Il y a à peine un an, on lui a tout expliqué en détail sur les algorithmes. On s'attend à ce qu'il puisse les reproduire. Si une personne est adéquate et a écouté attentivement les conférences, elle saura simplement tout, l'obtiendra de la cache.

Quelles tâches le stagiaire résout-il ?

En règle générale, le programme de stage peut être décrit et discuté lors des entretiens finaux. Ce n'est qu'au tout début du travail qu'un stagiaire peut se voir confier des tâches de formation dont les résultats ne seront pas utilisés en production. De plus, la probabilité de recevoir de telles tâches est faible. Le plus souvent, les projets de combat sont issus de l'arriéré, c'est-à-dire ceux reconnus comme dignes d'attention, mais non prioritaires et « séparables » - afin que les autres composantes ne dépendent pas de leur mise en œuvre. Les managers essaient de les diffuser pour que le stagiaire connaisse les différentes parties du service et travaille dans le même environnement avec les autres membres de l'équipe.

Ignat :

Ce sont des tâches extrêmement utiles. Ils n’augmenteront peut-être pas l’utilisation des clusters de 10 % ni n’économiseront un million de dollars à l’entreprise, mais ils rendront des centaines de personnes heureuses. Par exemple, nous avons actuellement un stagiaire qui travaille avec notre client pour exécuter des opérations sur nos clusters. Avant de démarrer, l'opération doit charger certaines données sur le cluster. Cela prend généralement 20 à 40 secondes, et avant cela, cela se produisait en silence : vous l'aviez lancé dans la console et restiez assis là, regardant un écran noir. Le stagiaire est venu et a réalisé la fonctionnalité en deux semaines : vous pouvez maintenant voir comment les fichiers sont téléchargés et ce qui se passe. La tâche, d'une part, n'est pas difficile à décrire, mais d'autre part, il y a quelque chose à creuser, quelles bibliothèques consulter. Le meilleur, c'est que vous l'avez fait, une semaine s'est écoulée, il s'est avéré que c'était sur des clusters, les gens l'utilisent déjà. Lorsque vous écrivez un post sur le réseau interne, ils vous disent merci.

Stage en informatique : le point de vue d'un manager

Souris:

Les stagiaires préparent des modèles, collectent des données, proposent des mesures et mènent des expériences. Peu à peu, nous commençons simplement à lui donner plus de liberté et de responsabilités - nous vérifions s'il peut y faire face. Si oui, il passe au niveau suivant. Nous ne présumons pas que lorsqu’un stagiaire arrive, il sait tout faire. Le manager l'aide à comprendre, lui donne un lien vers une ressource interne ou un cours en ligne.

Si un stagiaire se montre au meilleur de sa forme, il pourra se voir attribuer quelque chose de prioritaire, important pour le département ou d'autres services.

Dima:

Notre stagiaire apporte actuellement des modifications majeures à la lutte contre la fraude. Il s'agit d'un système qui lutte contre une grande variété d'abus et de fraude sur les services Yandex. Au début, nous pensions donner des choses qui n'étaient pas très complexes et peu importantes pour la production. Nous essayons de réfléchir à l’avance aux tâches du stagiaire, mais ensuite nous avons vu que la personne était « en feu », résolvant les problèmes rapidement et bien. Du coup, nous avons commencé à lui confier le lancement de la lutte contre la fraude pour de nouveaux services.

De plus, il existe une petite chance de recevoir une tâche que des collègues n'ont pas abordée auparavant en raison de son volume.

Dima:

Il existe un ancien système et un nouveau, qui n’est pas encore terminé. Il faut passer de l’un à l’autre. Pour l'avenir, il s'agit d'un projet important, bien qu'avec une grande incertitude : il faut beaucoup communiquer, lire du code hérité incompréhensible. Lors de l’entretien final, nous avons honnêtement dit au stagiaire que la tâche était difficile. Il a répondu qu'il était prêt, qu'il était venu dans notre équipe et que tout s'était bien passé pour lui. Il s'est avéré qu'il possède non seulement les qualités d'un développeur, mais aussi d'un manager. Il était prêt à se promener, à découvrir, à cingler.

Encadrer un stagiaire

Un stagiaire a besoin d’un mentor pour s’immerger dans les processus. Il s'agit d'une personne consciente non seulement de ses propres tâches, mais aussi de celles du stagiaire. Une communication régulière est établie avec le mentor, vous pouvez toujours vous tourner vers lui pour obtenir des conseils. Le mentor peut être soit le chef du groupe (s'il s'agit d'un petit groupe), soit l'un des collègues, membres réguliers de l'équipe.

Ignat :

J'essaie de venir au moins tous les deux jours et de demander comment va le stagiaire. Si je vois que je suis coincé, j’essaie de l’aider, je lui demande quel est le problème et je le découvre avec lui. Il est clair que cela m'enlève de l'énergie et rend le travail d'un stagiaire moins efficace dans son intégralité - je perds également mon temps. Mais cela lui permet de ne s'embourber dans rien et d'obtenir des résultats. Et c'est quand même plus rapide que si je le faisais moi-même. J'ai moi-même besoin d'environ 5 heures pour cette tâche. Le stagiaire le fera en 5 jours. Et oui, je passerai 2h durant ces 5 jours pour discuter avec le stagiaire et l'aider. Mais je vais gagner au moins 3 heures, et le stagiaire sera ravi d'avoir reçu quelques conseils et aide. En général, il suffit de communiquer étroitement, de surveiller ce que fait la personne et de ne pas perdre le contact.

Stage en informatique : le point de vue d'un manager

Serge:

Le stagiaire est constamment en contact avec son mentor et communique avec lui plusieurs fois par jour. Le mentor examine le code, effectue la programmation en binôme avec le stagiaire et aide en cas de problème. C'est ainsi, en combinant l'aide d'un mentor et des tâches réelles de combat, que nous formons des développeurs front-end.

Dima:

Pour éviter qu'un stagiaire ne soit abandonné, nous discutons de qui l'encadrera avant même son embauche. Il s'agit également d'une grande amélioration pour le mentor lui-même : préparation au rôle de chef d'équipe, test de la capacité à garder à l'esprit à la fois sa propre tâche et celle du stagiaire. Il y a des réunions régulières, auxquelles je me rends parfois moi-même, pour rester informé. Mais c'est le mentor qui communique assez régulièrement avec le stagiaire. Au début, il y passe beaucoup de temps, mais cela finit par payer.

Cependant, avoir un mentor ne signifie pas que tous les problèmes qui surviennent sont résolus par son intermédiaire.

Souris:

Il est d'usage chez nous que les personnes confrontées à un problème demandent conseil à leurs voisins et collègues et trouvent rapidement de l'aide. Plus une personne grandit vite, plus elle a souvent besoin d'aller voir ses collègues pour apprendre quelque chose. Il est même utile de simplement se renseigner sur les tâches des autres afin de pouvoir en proposer de nouvelles. Lorsqu'un stagiaire est capable de se mettre d'accord, de comprendre ce qui est important pour l'autre partie et d'obtenir des résultats en équipe, il grandira beaucoup plus vite que quelqu'un pour qui le manager doit faire tout cela.

Serge:

Il existe de la documentation, mais la plupart des informations se perdent dans les airs. Si vous l'absorbez tôt dans votre carrière, c'est un avantage supplémentaire et nous pouvons concentrer la personne sur ce qu'elle doit apprendre.

Le stagiaire idéal est quelqu'un qui se forme plusieurs mois, devient développeur junior, puis développeur simple, puis chef d'équipe, etc. Cela nécessite un archétype d'étudiant qui n'est pas gêné de demander si quelque chose n'est pas clair pour lui, mais est également capable de travailler de manière indépendante. Si on lui disait qu'il pouvait le lire quelque part, il irait le lire et reviendrait avec de nouvelles connaissances. Il peut faire des erreurs, mais il ne doit pas en commettre plus d'une, deux au maximum, au même endroit. Le stagiaire idéal doit se développer, tout absorber comme une éponge, apprendre et grandir. Celui qui s'assoit et essaie de tout comprendre par lui-même, passe beaucoup de temps à fouiner et ne pose aucune question, ne s'habituera probablement pas.

Fin de stage

Avant de commencer à travailler, nous signons un contrat à durée déterminée avec chaque stagiaire. Bien entendu, le stage est rémunéré, formalisé conformément au Code du travail de la Fédération de Russie, et le stagiaire bénéficie des mêmes avantages que tout autre employé de Yandex. Au bout de trois mois, le programme se termine - nous transférons alors de nombreux stagiaires vers le staff (en contrat à durée indéterminée).

Stage en informatique : le point de vue d'un manager

D'une part, il est important pour le manager que le développeur remplisse son minimum de stage. C'est là que le stagiaire est dirigé, dès l'entretien. Cependant, ce n’est que le début de l’histoire. Pour nous, un stagiaire est toujours un candidat potentiel pour rejoindre le staff. Le programme minimum pour un manager est d'identifier dès le début une personne qui, au bout de trois mois, n'aura pas honte de recommander à d'autres départements. Le programme maximum est de le garder dans la même équipe, en l'embauchant comme membre du personnel. Dans le même temps, nous tenons compte du fait qu'un étudiant de deuxième ou de troisième année - même s'il est devenu stagiaire - devra poursuivre ses études dans une université dès le début de l'année universitaire.

Serge:

Tout d’abord, les stagiaires représentent pour nous un potentiel en ressources humaines. Nous essayons de former des personnes au sein de Yandex afin qu'elles soient parfaitement adaptées à nos tâches. Nous leur donnons tout, depuis une culture de communication et d'interaction en équipe jusqu'à une connaissance encyclopédique de tous nos systèmes.

Ignat :

Lorsque nous embauchons un stagiaire, nous le testons immédiatement pour rejoindre notre équipe. Et en règle générale, le seul obstacle est l’absence de poste vacant. Nous essayons d’embaucher suffisamment de jeunes comme stagiaires. Si une personne a cinq ans d'expérience en développement, qu'elle vient chez Yandex et est stagiaire au niveau, alors, hélas, pour nous, cela signifie que même s'il est un gars formidable, puisqu'il obtient un emploi chez Yandex avec cinq ans d'expérience expérience, il ne pourra pas devenir développeur senior. C'est généralement une question de rapidité : une croissance lente dans le passé signifie une croissance lente ici. Oui, parfois, on ne comprend qu'après trois mois qu'une personne n'est pas à la hauteur de la tâche. Mais c'est assez rare. Dans plus de la moitié des cas, nous sommes prêts à embaucher du personnel. Dans ma mémoire, il n'y a jamais eu de situation où une personne a réussi un stage mais n'a pas pu passer un entretien pour un poste à temps plein.

Souris:

Nous proposons à tous les stagiaires retenus de rester dans l'entreprise. Après un stage, nous en prenons généralement plus de la moitié à temps plein. Les stages d’été sont plus difficiles car souvent des étudiants de troisième année viennent chez nous et il leur est difficile de concilier travail et études.

Dima:

Disons que le stagiaire fait un excellent travail et a de nombreuses perspectives pour devenir un bon développeur - même s'il n'a pas suffisamment d'expérience pour le moment. Et supposons qu'il n'y ait pas de poste vacant pour un contrat à durée indéterminée. Ensuite, tout est simple : je dois aller voir mon manager et lui dire - c'est une personne très cool, il faut le garder par tous les moyens, offrons-lui quelque chose, trouvons un endroit où le placer.

Histoires de stagiaires

Denis:

La fille qui a obtenu un stage chez nous en 2017 était originaire de Perm. C'est à 400 kilomètres d'Ekaterinbourg à l'ouest. Et chaque semaine, elle nous venait de Perm en train jusqu'à l'École de développement mobile. Elle venait le jour, étudiait le soir et rentrait tard le soir. Appréciant un tel zèle, nous l'avons invitée à travailler, et cela a payé.

Ignat :

Il y a plusieurs années, nous avons participé à un programme d'échange de stagiaires. C'était intéressant de travailler avec des étrangers. Mais les stagiaires qui en proviennent ne sont pas plus forts que, par exemple, ceux du ShAD ou de la Faculté d'informatique. Il semblerait que l’EPFL fasse partie des 20 meilleures universités d’Europe. A ce moment-là, en tant qu'intervieweur encore peu expérimenté, j'avais cette attente : incroyable, nous interviewons des gens de l'EPFL, ils seront super cool. Mais les personnes qui ont reçu une formation de base en matière de codage ici - y compris dans les principales universités régionales - s'avèrent tout à fait à la hauteur.

Ou une autre histoire. Maintenant, j’ai un gars dans mon équipe, il est très jeune, environ 20 ans. Travaille à Saint-Pétersbourg, est venu faire un stage. Il est très cool. Comme d'habitude, vous posez des problèmes à une personne, il les résout, et un mois plus tard, il vient et dit : je les ai résolus, je regarde, et il semble que votre architecture soit mal construite. Refaisons-le. Le code deviendra plus simple et plus clair. Bien sûr, je l'ai dissuadé : la quantité de travail est importante, il n'y a aucun profit pour les utilisateurs, mais l'idée semble tout à fait raisonnable. La personne a compris un processus multithread complexe et a suggéré des améliorations - peut-être intempestives, en refactorisant pour le plaisir de refactoriser. Mais dès que vous souhaitez compliquer ce code, vous pouvez toujours faire ce refactoring. En fait, plusieurs mois se sont écoulés et nous avons entrepris cette tâche. Je l'ai embauché avec plaisir. Nous ne sommes pas tous des génies. Vous pouvez venir, trouver une solution et signaler nos problèmes. Ceci est apprécié.

Souris:

Nous avons des stagiaires tellement idéaux. Malgré leur manque d’expérience, ils envisagent la tâche non seulement au niveau technique, mais aussi au niveau mondial. Ils offrent des améliorations fondamentales. Ils savent comment traduire les problèmes du monde réel au monde technique sans perdre leur sens. Ils se demandent quel est l'objectif final, s'il vaut la peine d'approfondir les détails maintenant ou s'ils peuvent changer complètement l'approche de la tâche ou même la formulation du problème. Cela signifie qu’ils ont le potentiel d’être plusieurs niveaux plus élevés. Pour y parvenir, il leur suffit de mettre à niveau certaines compétences et outils internes. De plus, lancez plusieurs projets réussis.

Stage en informatique : le point de vue d'un manager

Source: habr.com

Ajouter un commentaire