
Le recrutement pour un
stage d'été chez Yandex se poursuit. Il va dans cinq directions: backend, ML, développement mobile, frontend et analytics. Dans ce blog, dans d'autres blogs sur Habré et au-delà, vous pouvez trouver beaucoup d'informations privilégiées sur le déroulement du stage. Mais une grande partie de ce processus reste un mystère pour ceux qui ne travaillent pas pour l'entreprise. Et si vous regardez du point de vue des responsables du développement, il y a encore plus de questions. Comment mener un stage, comment maximiser l'utilité mutuelle avec un stagiaire, comment réussir à l'apprendre en trois mois et enseigner tout ce qui est nécessaire pour continuer à travailler?
Nous avons préparé cet article à cinq d'entre nous. Nous nous présentons: 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 service de développement d'interface de recherche et Dima Cherkasov du groupe de développement antifraude. Chacun de nous représente son domaine de stage. Nous sommes tous des gestionnaires, nous avons besoin de stagiaires et nous avons une certaine expérience de travail avec eux. Laissez-nous vous raconter une partie de cette expérience.
Entretien pré-stage
Les candidats attendent plusieurs entretiens techniques. Le succès à l'entrevue dépend moins des compétences générales (capacité de communiquer efficacement) et davantage des compétences générales (compétences en mathématiques et en programmation). Cependant, les gestionnaires apprécient les deux.
Ignat:
Même si une personne est très cool, mais complètement non communicative, elle ne pourra pas appliquer toutes les compétences. Bien sûr, nous y prêtons attention, mais ce n'est pas une raison pour ne pas prendre quelqu'un en stage. En trois mois, tout peut changer, et en plus, votre première impression peut être fausse. Et si tout est correct - il faudra que la personne s'explique, lui cherche d'autres commandes. Pour les stagiaires, la sociabilité n'est certainement pas un facteur clé. Pourtant, les compétences professionnelles sont beaucoup plus importantes.
Denis:
J'aime les gens qui racontent des histoires - dans le bon sens. Une personne qui peut dire comment ils ont héroïquement géré un fakap avec une équipe est intéressante. Je commence à poser des questions supplémentaires lorsqu'une telle histoire apparaît. Mais cela arrive rarement si vous demandez simplement "de parler de quelque chose d'intéressant dans vos projets".
Un candidat a prononcé une fois une phrase merveilleuse, que j'ai même écrite: «J'ai réussi à éviter les tâches fastidieuses.»

Comme il n'y a pas beaucoup de temps pour la communication, l'intervieweur essaie d'obtenir des informations utiles sur le candidat à chaque minute de la réunion. C'est formidable si le stagiaire avait compris à l'avance quels détails de son expérience (pas à partir du curriculum vitae) il pourrait partager. Cela devrait être une courte histoire strictement sur le cas.
Denis:
Je fais attention si une personne dit qu'elle a essayé plusieurs langues, approches. Les personnes aux horizons plus larges proposent des solutions plus élégantes en mode combat. Mais c'est un plus ambigu. Vous pouvez saisir le haut, mais sérieusement ne rien apprendre.
Le temps consacré aux histoires décrites par Denis ne reste généralement qu'à la dernière entrevue. Jusque-là, il est nécessaire de démontrer les connaissances fondamentales et pratiques qui formeront la base des travaux futurs. Et, bien sûr, vous devrez écrire du code sur un tableau noir ou sur un morceau de papier.
Misha:
Nous testons la connaissance de la théorie des probabilités et des statistiques mathématiques. Nous cherchons à voir si une personne a de l'expérience avec les métriques, avec les algorithmes d'apprentissage automatique, avec l'ajustement de leurs paramètres, avec le recyclage, etc. Nous nous attendons à ce qu'une personne puisse écrire suffisamment de code pour être analyste.
Denis:
Ceux qui viennent pour un entretien connaissent surtout les langues: à Iekaterinbourg, nous avons une bonne école de langues de base, de bonnes institutions. Mais pour être honnête, un candidat au stage avec de bonnes compétences est un cas rare, au moins dans notre quartier epsilon. Par exemple, Swift. Il est très difficile de travailler avec des cordes, et il y a peu de gens qui peuvent travailler avec eux de ma tête. Car un tel œil s'accroche immédiatement. Je donne souvent une tâche lors des entretiens, qui est précisément liée au traitement en ligne. Et pendant tout ce temps, il n'y avait qu'une seule personne qui, tout de suite, sur un morceau de papier, pouvait écrire un tel code Swift. Après cela, je suis allé dire à tout le monde que quelqu'un avait finalement réussi à résoudre ce problème sur Swift sur un morceau de papier.
Interviewer des algorithmes
Il s'agit d'un problème distinct, car les candidats se posent toujours la question - pourquoi évaluons-nous toujours la connaissance des algorithmes et des structures de données? Même les futurs développeurs mobiles et les fournisseurs frontaux réussissent ce test.
Misha:
Lors de l'entrevue, nous donnons certainement une sorte de puzzle algorithmique. Le candidat doit comprendre comment l'implémenter en Python, de préférence sans erreur. Vous devez comprendre comment vérifier votre programme et le réparer vous-même.

L'expérience des algorithmes est utile pour trois raisons. Premièrement, il sera évidemment nécessaire dans les problèmes algorithmiques - qui se produisent rarement, mais se produisent toujours. Deuxièmement, le développeur sera en mesure de résoudre plus efficacement les problèmes liés aux algorithmes, même s'il ne nécessite pas d'entrer dans les algorithmes eux-mêmes (et il y en a déjà pas mal). Troisièmement, si vous n'avez pas appris les algorithmes à l'université, mais que vous savez toujours travailler avec eux, cela vous caractérise comme une personne curieuse et augmentera votre autorité aux yeux de la personne interrogée.
Denis:
La plupart du développement mobile est JSON Shifting. Mais une fois tous les six mois, des algorithmes sont parfois nécessaires. Je dessine maintenant de belles cartes pour Yandex.Weather. Et en une semaine, j'ai dû implémenter un algorithme de lissage, l'algorithme Sutherland-Hodgman et l'algorithme Martinez. Si une personne ne savait pas ce que serait une table de hachage ou une file d'attente prioritaire, elle resterait longtemps assise et on ne sait pas si elle aurait réussi ou non sans aide extérieure.
Les algorithmes sont la base du développement. C'est ce qui aide un développeur à être développeur. Peu importe ce que vous faites. Ils sont également nécessaires dans des projets simples, où le travail principal consiste à «déplacer JSON». Même si vous n'écrivez pas les algorithmes eux-mêmes, mais utilisez implicitement des structures de données, il est préférable de les comprendre. Sinon, vous obtiendrez des applications qui fonctionnent lentement ou incorrectement.
Il y a des programmeurs qui sont venus au développement académique: ils sont entrés à l'université, honnêtement désappris pendant cinq ans, et ont reçu une spécialité. Ils connaissent les algorithmes parce qu'ils ont été enseignés. Et puis la connaissance des algorithmes ne caractérise pas les horizons d'une personne, il faut vérifier ces horizons d'une autre manière.
Et il y a des autodidactes, auxquels je me considère. Oui, officiellement, j'ai une formation en informatique, un diplôme en génie logiciel. Mais les personnes autodidactes ont appris à programmer «contrairement». Ils n'avaient pas de programme universitaire. Habituellement, ils ne connaissent pas les algorithmes - car ils n'ont jamais rencontré le besoin de les étudier. Et quand une telle personne comprend les algorithmes, cela signifie qu'il a passé du temps et les a compris. Ayant terminé l'université, j'ai réalisé que j'avais des points blancs dans la partie des algorithmes fondamentaux - le fait est que la spécialité était appliquée. Je suis allé étudier des cours en ligne à l'Université de Princeton, le célèbre Robert Sedgwick. Compris, a fait tous les devoirs. Et quand une personne à l'entrevue raconte une histoire similaire, je m'intéresse immédiatement, il y a un désir de travailler avec lui, ou du moins de continuer la conversation.

Ignat:
Lorsque vous interviewez un stagiaire, dans un sens, 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 une sorte de code correct. Candidat à un stage - il est toujours à l'université. Il y a tout juste un an, on lui a tout expliqué sur les algorithmes en détail. Il est prévu qu'il puisse les reproduire. Si la personne est adéquate et a écouté attentivement les conférences, elle saura simplement tout, sortez-la 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. Un stagiaire ne peut obtenir des tâches de formation qu'au tout début du travail, dont le résultat ne sera pas impliqué dans la production. De plus, la probabilité d'obtenir de telles tâches est faible. Le plus souvent, des projets militaires de l'arriéré sont donnés, qui sont reconnus comme dignes d'attention, mais pas prioritaires et "séparables" - de sorte que d'autres composants ne dépendent pas de leur mise en œuvre. Les dirigeants essaient de les distribuer afin que le stagiaire apprenne à connaître les différentes parties du service, travaille dans le même environnement que les autres membres de l'équipe.
Ignat:
Ce sont des tâches extrêmement utiles. Peut-être qu'ils n'augmenteront pas l'utilisation du cluster de 10%, ils n'économiseront pas un million de dollars à l'entreprise, mais ils feront le bonheur de centaines de personnes. Par exemple, nous avons maintenant un stagiaire qui est engagé dans notre client pour démarrer les opérations sur nos clusters. Avant de démarrer l'opération, il doit charger certaines données sur le cluster. Habituellement, cela prend 20 à 40 secondes, et avant que cela ne se produise en silence: je l'ai démarré dans la console et vous vous asseyez, regardez l'écran noir. Un stagiaire est venu et a fait une 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 dans la description, et d'autre part, il y a quelque chose à creuser, dans quelles bibliothèques regarder. La meilleure partie est que vous l'avez fait, une semaine s'est écoulée, il s'est avéré être sur des clusters, les gens l'utilisent déjà. Vous écrivez un message sur le réseau interne - ils disent merci.

Misha:
Les stagiaires préparent des modèles, collectent des données pour eux, proposent des mesures et mènent des expériences. Petit à petit, nous commençons à lui donner plus de liberté et de responsabilité - nous vérifions s'il s'en sort. Si c'est le cas, il passe au niveau suivant. Nous ne supposons pas que lorsqu'un stagiaire arrive, il peut faire tout cela. Le responsable l'aide à comprendre, donne un lien vers une ressource interne ou un cours en ligne.
Si le stagiaire se montre en hauteur, on peut lui donner quelque chose de prioritaire, important pour le département ou d'autres services.
Dima:
Notre stagiaire est maintenant engagé dans des raffinements inconditionnels d'antifraude. Il s'agit d'un système qui lutte contre une grande variété de nouvelles et de fraudes sur les services Yandex. Au début, nous avons pensé donner des choses qui n'étaient pas très compliquées et pas très importantes pour la production. Nous essayons de réfléchir à l'avance aux tâches du stagiaire, mais nous avons ensuite vu qu'une personne «brûlait», résolvait rapidement et bien les problèmes. En conséquence, nous avons commencé à lui confier le lancement d'antifraude pour de nouveaux services.
De plus, il y a peu de chance d'obtenir une tâche que les collègues n'ont pas abordée auparavant en raison de son volume.
Dima:
Il y a un ancien système et un nouveau, pas encore terminé. Vous devez passer de l'un à l'autre. À l'avenir, il s'agit d'un projet important, bien qu'avec une grande incertitude: vous devez beaucoup communiquer, lire un code hérité incompréhensible. Lors de l'entrevue finale, nous avons honnêtement dit au stagiaire que la tâche était difficile. Il a répondu qu'il était prêt, est venu dans notre équipe et il a réussi. Il s'est avéré qu'il avait les qualités non seulement d'un développeur, mais aussi d'un gestionnaire. Il était prêt à marcher, reconnaître, cingler.
Mentorat sur le stagiaire
Un stagiaire a besoin d'un mentor pour plonger dans les processus. Il s'agit d'une personne consciente non seulement de ses tâches, mais également des tâches du stagiaire. Une communication régulière est établie avec le mentor, vous pouvez toujours vous tourner vers lui pour 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 me présenter au moins tous les deux jours pour demander comment va le stagiaire. Si je vois que j'ai creusé, j'essaie de l'aider, je lui demande quel est le problème et je le trouve avec lui. Il est clair que cela enlève mes forces et rend le travail du stagiaire moins intégré si efficacement - je passe également mon temps. Mais cela lui permet de ne rien creuser, d'obtenir un résultat. Et c'est toujours plus rapide que si je le fais moi-même. J'ai moi-même besoin de 5 heures pour la tâche. Le stagiaire le fera en 5 jours. Et oui, je vais passer 2 heures durant ces 5 jours pour parler avec le stagiaire et aider. Mais au moins 3 heures, je vais gagner, et le stagiaire sera heureux qu'il ait été invité, aidé. En général, il vous suffit de communiquer étroitement, de regarder ce que fait une personne et de ne pas perdre le contact.

Serge:
Le stagiaire est constamment en contact avec son mentor et communique avec lui plusieurs fois par jour. Le mentor révise le code, participe à la programmation en binôme avec le stagiaire, aide lorsqu'il y a des problèmes. C'est de cette manière, en combinant l'aide d'un mentor et de vraies missions de combat, que nous formons les front-renders.
Dima:
Afin que le stagiaire ne se révèle pas abandonné, nous discuterons de qui sera son mentor avant même son embauche. C'est aussi une grande amélioration pour le mentor lui-même: se préparer au rôle de chef d'équipe, tester la capacité à garder à l'esprit à la fois sa tâche et celle du stagiaire. Il y a des réunions régulières que je vais parfois à moi pour me tenir au courant. Mais le mentor communique assez régulièrement avec le stagiaire. Au début, il passe beaucoup de temps, mais ça rapporte.
Cependant, la présence d'un mentor ne signifie pas que tous les problèmes émergents sont résolus par son intermédiaire.
Misha:
Nous acceptons que les personnes qui rencontrent un problème demandent conseil à leurs voisins et collègues et trouvent rapidement de l'aide. Plus une personne grandit vite, plus il lui faut souvent aller voir ses collègues pour découvrir quelque chose. Il est même utile de simplement se renseigner sur les tâches d'autres personnes afin de trouver de nouvelles tâches. Lorsque le stagiaire est en mesure de se mettre d'accord, de comprendre ce qui est important pour l'autre partie et d'atteindre un résultat dans l'équipe, il grandira beaucoup plus rapidement que celui pour qui le leader devrait faire tout cela.
Serge:
Il existe de la documentation, mais la plupart des informations sont dissoutes dans l'air. Si vous l'absorbez en début de carrière, c'est un avantage supplémentaire, et nous pouvons concentrer une personne sur ce qui doit être étudié.
Un stagiaire idéal est quelqu'un qui pratique depuis plusieurs mois, devient développeur junior, puis juste développeur, puis chef d'équipe, etc. Pour cela, il faut un archétype d'élève qui n'hésite pas à lui demander s'il ne comprend pas quelque chose, mais est capable de travail indépendant. Si on lui a dit que vous pouvez y lire, il ira, lira et reviendra vraiment avec de nouvelles connaissances. Il peut se tromper, mais il ne doit pas se tromper plus d'un, au maximum deux fois au même endroit. Un stagiaire idéal devrait se développer, absorber tout comme une éponge, apprendre et grandir. Quiconque est assis, essaie de comprendre lui-même, fouille longtemps, ne pose pas de questions, a peu de chances de prendre racine.
Fin du stage
Avant de commencer le travail, nous signons un contrat à durée déterminée avec chaque stagiaire. Bien sûr, le stage est payé, exécuté conformément au Code du travail de la Fédération de Russie, et le stagiaire a les mêmes avantages que tout autre employé de Yandex. Trois mois plus tard, le programme se termine - nous transférons ensuite de nombreux stagiaires à l'État (sous contrat perpétuel).

D'une part, il est important pour le leader que le développeur remplisse son minimum de stagiaire. C'est à cela que mène le stagiaire, à commencer par l'entretien. Cependant, ce n'est que le début de l'histoire. Un stagiaire pour nous est toujours un candidat potentiel pour l'État. Le programme minimum pour le leader est au tout début de discerner une personne qui, après 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 embauchant du personnel. Dans le même temps, nous tenons compte du fait qu'un étudiant de deuxième ou troisième année, même s'il est devenu stagiaire, devra poursuivre ses études à l'université au début de l'année scolaire.
Serge:
Tout d'abord, les stagiaires sont pour nous des ressources humaines. Nous essayons de faire grandir les gens à l'intérieur de Yandex afin qu'ils soient parfaitement adaptés à nos tâches. Nous leur donnons tout, d'une culture de communication et d'interaction en équipe à une connaissance encyclopédique de tous nos systèmes.
Ignat:
En prenant un stagiaire, nous l'essayons immédiatement pour qu'il rejoigne notre équipe. Et en règle générale, le seul obstacle est le manque de postes vacants. Les stagiaires essaient de prendre suffisamment de jeunes. Si une personne a cinq ans d'expérience en développement, elle vient chez Yandex et est stagiaire en termes de niveau, alors hélas, pour nous, cela signifie que bien qu'il soit un bon gars, il obtient un emploi chez Yandex avec cinq ans d'expérience et ne pourra pas devenir un développeur senior . Habituellement, c'est une question de vitesse: une croissance lente dans le passé signifie également une croissance lente ici. Oui, parfois la compréhension qu'une personne ne tire pas ne vient qu'après trois mois. Mais c'est assez rare. Dans plus de la moitié des cas, nous sommes prêts à recruter des personnes. À ma mémoire, ce n'était pas une personne qui avait réussi un stage, mais qui ne pouvait pas passer une entrevue pour un poste à temps plein.
Misha:
Tous les stagiaires retenus sont invités à rester dans l'entreprise. Après le stage, nous prenons généralement plus de la moitié du temps plein. C'est plus difficile avec un stage d'été, car souvent les étudiants, par exemple, de troisième année, viennent chez nous et il leur est difficile de combiner travail et études.
Dima:
Supposons qu'un stagiaire fasse un excellent travail et ait de nombreuses chances de devenir un bon développeur - même s'il n'a pas assez d'expérience maintenant. Et supposons qu'il n'y ait pas de poste vacant pour un contrat perpétuel. Ensuite, tout est simple: je dois aller voir mon chef et lui dire - c'est une personne très cool, il doit être laissé de toutes ses forces, offrons-lui quelque chose, trouvons où l'attacher.
Histoires de stagiaires
Denis:
La fille qui nous a fait un stage en 2017 était de Perm. Il se trouve à 400 kilomètres d'Ekaterinbourg à l'ouest. Et chaque semaine, elle venait de Perm en train pour l'école de développement mobile. Arrivé dans l'après-midi, étudié le soir et parti en fin de soirée. Ayant apprécié ce zèle, nous l'avons appelée au travail, et ça a payé.
Ignat:
Il y a quelques années, nous avons participé à un programme d'échange de stagiaires. C'était intéressant de travailler avec des gars étrangers. Mais les stagiaires de là-bas ne sont pas plus forts que, par exemple, de la ShAD ou de la FCN. Il semblerait que l'EPFL figure parmi les 20 meilleures universités d'Europe. À ce moment-là, comme un intervieweur pas encore très expérimenté, j'avais une telle attente: c'est incroyable, nous allons interviewer des gens de l'EPFL, ils seront super cool. Mais les gens qui ont reçu une éducation de base sur le codage dans notre pays - y compris dans les principales universités régionales - sont tout à fait au niveau.
Ou une autre histoire. Maintenant, j'ai un gars dans mon équipe, assez jeune, environ 20 ans. Il travaille à Saint-Pétersbourg, est venu pour un stage. Il est très cool. Vous, comme d'habitude, donnez des tâches à une personne, il les résout, et un mois plus tard, il vient et dit: j'ai décidé, je regarde, et il semble que votre architecture soit mal construite. Refaisons-le. Le code deviendra plus simple, plus compréhensible. Bien sûr, je l'ai dissuadé: le volume de travail est important, il n'y a aucun profit pour les utilisateurs, mais l'idée semble tout à fait raisonnable. Une personne a compris un processus multithread complexe et a suggéré des améliorations - peut-être inopportune, une refactorisation pour une refactorisation. 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 repris cette tâche. Je l'ai volontiers embauché. Nous ne sommes pas des génies. Vous pouvez venir, comprendre quelque chose et nous signaler nos problèmes. C'est apprécié.
Misha:
Nous avons des stagiaires parfaits. Malgré le manque d'expérience, ils voient la tâche non seulement au niveau technique, mais aussi au niveau mondial. Ils offrent des améliorations fondamentales. Ils savent comment traduire des tâches du monde réel en techniques, sans perdre de sens. Ils se demandent quel est le but final, si cela vaut la peine de fouiller dans les détails maintenant ou si vous pouvez changer complètement l'approche de la tâche ou même l'énoncé du problème. Ainsi, ils ont une réserve pour être plusieurs niveaux plus élevés. Pour ce faire, il leur suffit de pomper des compétences et des outils internes. De plus, lancez plusieurs projets réussis.
