Estágio em TI: visão do gerente



O recrutamento para um estágio de verão na Yandex continua. Ele segue cinco direções: back-end, ML, desenvolvimento móvel, front-end e análises. Neste blog, em outros blogs sobre Habré e além, você pode encontrar muitas informações privilegiadas sobre o andamento do estágio. Mas muito desse processo continua sendo um mistério para quem não trabalha na empresa. E se você olhar do ponto de vista dos gerentes de desenvolvimento, ainda há mais perguntas. Como realizar um estágio, como maximizar a utilidade mútua com um estagiário, como conseguir aprendê-lo em três meses e ensinar tudo o que é necessário para continuar trabalhando?

Nós preparamos este artigo cinco de nós. Apresentamo-nos: Ignat Kolesnichenko, do serviço de tecnologia de computação distribuída, Misha Levin, do serviço de inteligência de máquina do Market, Denis Malykh, do serviço de desenvolvimento de aplicativos, Seryozha Berezhnoy, do departamento de desenvolvimento da interface de pesquisa, e Dima Cherkasov, do grupo de desenvolvimento antifraude. Cada um de nós representa seu campo de estágio. Somos todos gerentes, precisamos de estagiários e temos alguma experiência trabalhando com eles. Vamos contar um pouco dessa experiência.

Entrevista pré-estágio


Os candidatos estão aguardando várias entrevistas técnicas. O sucesso da entrevista depende, em menor grau, das habilidades sociais (capacidade de se comunicar efetivamente) e mais das habilidades físicas (habilidades em matemática e programação). No entanto, os gerentes valorizam os dois.
Ignat:
Mesmo que uma pessoa seja muito legal, mas completamente sem comunicação, ela não será capaz de aplicar todas as habilidades. Obviamente, prestamos atenção a isso, mas essa não é uma razão para não levar alguém para um estágio. Em três meses, tudo pode mudar e, além disso, sua primeira impressão pode estar errada. E se tudo estiver correto - será necessário que a pessoa explique, procure outros comandos para ele. Para os estagiários, a sociabilidade definitivamente não é um fator-chave. Ainda assim, as habilidades profissionais são muito mais importantes.
Denis:
Eu gosto de pessoas que contam histórias - em um bom sentido. Uma pessoa que pode dizer como eles lidaram heroicamente com um fakap com uma equipe é interessante. Começo a fazer perguntas adicionais quando essa história aparece. Mas isso raramente acontece se você pedir "para falar sobre algo interessante em seus projetos".

Um candidato pronunciou uma frase maravilhosa, que eu até escrevi: "Evitei com êxito tarefas tediosas".



Como não há muito tempo para comunicação, o entrevistador tenta obter informações úteis sobre o candidato a cada minuto da reunião. É ótimo que o estagiário tenha descoberto antecipadamente quais detalhes de sua experiência (não do currículo) ele poderia compartilhar. Este deve ser um conto estritamente sobre o caso.
Denis:
Presto atenção se uma pessoa diz que tentou várias línguas, abordagens. Pessoas com horizontes mais amplos apresentam soluções mais elegantes no modo de combate. Mas esta é uma vantagem ambígua. Você pode pegar o topo, mas sério, não aprende nada.

O tempo nas histórias descritas por Denis geralmente permanece apenas na entrevista final. Até então, é necessário demonstrar o conhecimento fundamental e prático que formará a base de trabalhos futuros. E, é claro, você precisará escrever código em um quadro negro ou em um pedaço de papel.
Misha:
Testamos o conhecimento da teoria das probabilidades e estatística matemática. Procuramos ver se uma pessoa tem experiência em trabalhar com métricas, com algoritmos de aprendizado de máquina, com o ajuste de seus parâmetros, com nova reciclagem etc. Esperamos que uma pessoa possa escrever código o suficiente para ser analista.
Denis:
Quem vem para uma entrevista principalmente conhece idiomas: em Ecaterimburgo, temos uma boa escola de idiomas básicos, boas instituições. Mas, para ser sincero, um candidato a estágio com boas habilidades é um caso raro, pelo menos em nosso bairro de epsilon. Por exemplo, Swift. É muito difícil trabalhar com strings, e há poucas pessoas que podem trabalhar com elas fora da minha cabeça. Para tal olho imediatamente se apega. Costumo dar uma tarefa em entrevistas, que está precisamente relacionada ao processamento de linha. E durante todo o tempo, havia apenas uma pessoa que, imediatamente, em um pedaço de papel, foi capaz de escrever um código Swift. Depois disso, contei a todos que alguém finalmente conseguiu resolver esse problema no Swift em um pedaço de papel.

Entrevistando Algoritmos


Esta é uma questão separada, pois os candidatos ainda têm a pergunta - por que sempre avaliamos o conhecimento de algoritmos e estruturas de dados? Até futuros desenvolvedores de dispositivos móveis e fornecedores de front-end passam neste teste.
Misha:
Na entrevista, definitivamente damos algum tipo de quebra-cabeça algorítmico. O candidato precisa descobrir como implementá-lo no Python, de preferência sem erros. Você precisa entender como verificar seu programa e corrigi-lo.



A experiência em algoritmos é útil por três razões. Em primeiro lugar, obviamente será necessário em problemas algorítmicos - que acontecem com pouca frequência, mas ainda acontecem. Em segundo lugar, o desenvolvedor poderá resolver com mais eficiência os problemas relacionados aos algoritmos, embora não exija a inserção dos algoritmos (e já existem alguns deles). Em terceiro lugar, se você não aprendeu algoritmos na universidade, mas ainda sabe como trabalhar com eles, isso o caracteriza como uma pessoa curiosa e aumentará sua autoridade aos olhos do entrevistado.
Denis:
A maior parte do desenvolvimento móvel é JSON Shifting. Mas a cada seis meses, há momentos em que algoritmos são necessários. Agora estou desenhando belos mapas para o Yandex.Weather. E em uma semana eu tive que implementar um algoritmo de suavização, o algoritmo de Sutherland-Hodgman e o de Martinez. Se uma pessoa não soubesse o que seria um hashmap ou fila de prioridade, ele ficaria sentado por um longo tempo e não está claro se ele teria gerenciado ou não sem ajuda externa.

Algoritmos são a base do desenvolvimento. É isso que ajuda um desenvolvedor a ser desenvolvedor. Não importa o que você faça. Eles também são necessários em projetos simples, onde o trabalho principal consiste em "mudar o JSON". Mesmo se você não escrever os algoritmos, mas usar implicitamente quaisquer estruturas de dados, é melhor entendê-los. Caso contrário, você obterá aplicativos que funcionam lenta ou incorretamente.

Existem programadores que chegaram ao desenvolvimento academicamente: eles entraram na universidade, honestamente desaprendidos por cinco anos, e receberam uma especialidade. Eles conhecem os algoritmos porque foram ensinados. E então o conhecimento de algoritmos não caracteriza os horizontes de uma pessoa, é necessário verificar esses horizontes de outra maneira.

E existem auto-didatas, para as quais me considero. Sim, formalmente, tenho formação em TI, diploma em engenharia de software. Mas as pessoas autodidatas aprenderam a programar o contrário. Eles não tinham um programa universitário. Geralmente eles não estão familiarizados com os algoritmos - porque nunca encontraram a necessidade de estudá-los. E quando uma pessoa assim entende os algoritmos, isso significa que ele passou um tempo e os descobriu. Depois de terminar a universidade, percebi que havia manchas brancas na parte dos algoritmos fundamentais - o fato é que a especialidade foi aplicada. Fui e estudei cursos on-line na Universidade de Princeton, o conhecido Robert Sedgwick. Entendido, fez todo o dever de casa. E quando uma pessoa na entrevista conta uma história semelhante, fico imediatamente interessado, há um desejo de trabalhar com ela ou, pelo menos, continuar a conversa.


Ignat:
Quando você entrevista um trainee, em certo sentido, espera mais do que um desenvolvedor experiente. Estamos falando da capacidade de resolver problemas algorítmicos, escrever rapidamente pelo menos algum tipo de código correto. Candidato a um estágio - ele ainda está na universidade. Apenas um ano atrás, ele foi informado sobre tudo sobre os algoritmos em detalhes. Espera-se que ele possa reproduzi-los. Se a pessoa for adequada e ouvir atentamente as palestras, ela simplesmente saberá tudo, tirá-lo do cache.

Que tarefas o trainee resolve


Normalmente, o programa de estágio pode ser descrito e discutido nas entrevistas finais. Um estagiário pode receber tarefas de treinamento apenas no início do trabalho, cujo resultado não estará envolvido na produção. Além disso, a probabilidade de obter tais tarefas é pequena. Na maioria das vezes, são apresentados projetos militares da lista de pendências, que são reconhecidos como dignos de atenção, mas não prioritários e "separáveis" - para que outros componentes não dependam de sua implementação. Os líderes tentam distribuí-los para que o estagiário conheça diferentes partes do serviço e trabalhe no mesmo ambiente que outros membros da equipe.
Ignat:
Essas são tarefas extremamente úteis. Talvez eles não aumentem a utilização do cluster em 10%, não economizem um milhão de dólares para a empresa, mas fazem centenas de pessoas felizes. Por exemplo, agora temos um estagiário envolvido em nosso cliente para iniciar operações em nossos clusters. Antes de iniciar a operação, ele deve carregar alguns dados no cluster. Geralmente, leva de 20 a 40 segundos e, antes que isso acontecesse silenciosamente: eu o iniciei no console e você senta, olha a tela preta. Um estagiário veio e fez um recurso em duas semanas: agora você pode ver como os arquivos estão sendo carregados e o que está acontecendo. A tarefa, por um lado, não é difícil na descrição e, por outro lado, há algo para explorar, em quais bibliotecas examinar. A melhor parte é que você fez isso, uma semana se passou, acabou sendo em clusters, as pessoas já estão usando. Você escreve uma postagem na rede interna - eles agradecem.


Misha:
Os estagiários preparam modelos, coletam dados para eles, criam métricas e conduzem experimentos. Gradualmente, começamos a dar-lhe mais liberdade e responsabilidade - verificamos se ele lida. Nesse caso, ele passa para o próximo nível. Não assumimos que, quando um estagiário chega, ele pode fazer tudo isso. O chefe o ajuda a descobrir, fornece um link para um recurso interno ou um curso on-line.

Se o estagiário se mostrar no auge, pode receber algo de prioridade, importante para o departamento ou outros serviços.
Dima:
Nosso estagiário agora está envolvido em refinamentos incondicionais do antifraude. Este é um sistema que luta contra uma ampla variedade de notícias e fraudes nos serviços Yandex. Inicialmente, pensamos em dar coisas que não eram muito complicadas e nem muito importantes para a produção. Tentamos pensar nas tarefas do estagiário com antecedência, mas depois vimos que uma pessoa está "queimando", resolve rápida e bem os problemas. Como resultado, começamos a confiar a ele o lançamento do antifraude para novos serviços.

Além disso, há poucas chances de conseguir uma tarefa que os colegas não abordaram antes devido ao seu volume.
Dima:
Existe um sistema antigo e existe um novo, ainda não concluído. Você precisa passar de um para outro. No futuro, este é um projeto importante, embora com grande incerteza: você precisa se comunicar muito, ler um código legado incompreensível. Na entrevista final, dissemos honestamente ao estagiário que a tarefa era difícil. Ele respondeu que estava pronto, veio para a nossa equipe e conseguiu. Descobriu-se que ele tem as qualidades de não apenas um desenvolvedor, mas também um gerente. Ele estava pronto para andar, reconhecer, pingar.

Tutoria sobre o estagiário


Um estagiário precisa de um mentor para mergulhar nos processos. Essa é uma pessoa que está ciente não apenas de suas tarefas, mas também das tarefas do estagiário. A comunicação regular é estabelecida com o mentor; você sempre pode pedir conselhos a ele. O mentor pode ser o líder do grupo (se for um grupo pequeno) ou um dos colegas, membros regulares da equipe.
Ignat:
Eu tento aparecer pelo menos a cada dois dias, perguntando como está o trainee. Se vejo que desenterrei, tento ajudá-lo, perguntar qual é o problema e descobrir com ele. É claro que isso tira minhas forças e torna o trabalho do estagiário menos integrado de maneira tão eficiente - eu também passo meu tempo. Mas isso lhe permite não cavar nada, obter um resultado. E ainda é mais rápido do que se eu fizesse isso sozinho. Eu próprio preciso de 5 horas para a tarefa. O estagiário fará isso em 5 dias. E sim, vou passar 2 horas durante esses 5 dias para conversar com o estagiário e ajudar. Mas pelo menos três horas economizarei, e o estagiário ficará satisfeito por ter sido solicitado, ajudado. Em geral, você só precisa se comunicar com firmeza, observar o que uma pessoa faz e não perder o contato.


Serge:
O estagiário está constantemente em contato com seu mentor e se comunica com ele várias vezes ao dia. O mentor revisa o código, está envolvido na programação em pares com o estagiário, ajuda quando há alguns problemas. É dessa maneira, combinando a ajuda de um mentor e missões de combate reais, que treinamos os front-renderizadores.
Dima:
Para que o estagiário não seja abandonado, discutiremos quem o orientará antes mesmo da contratação. Essa também é uma grande atualização para o próprio mentor: preparando-se para o papel de líder de equipe, testando a capacidade de manter em mente tanto a sua tarefa quanto a do aluno. Há reuniões regulares que às vezes vou a mim mesmo para acompanhar. Mas o mentor se comunica com o estagiário regularmente. No começo, ele passa muito tempo, mas vale a pena.

No entanto, a presença de um mentor não significa que todos os problemas emergentes sejam resolvidos por ele.
Misha:
É aceito por nós que as pessoas que encontram um problema pedem conselhos a vizinhos e colegas e rapidamente encontram ajuda. Quanto mais rápido uma pessoa cresce, mais frequentemente ele precisa ir aos colegas para descobrir alguma coisa. É útil apenas aprender sobre as tarefas de outras pessoas para criar novas tarefas. Quando o estagiário puder concordar, entender o que é importante para o outro lado e alcançar um resultado na equipe, ele crescerá muito mais rápido do que aquele pelo qual o líder deve fazer tudo isso.
Serge:
Há documentação, mas a maioria das informações é dissolvida no ar. Se você absorvê-lo no início de uma carreira, essa é uma vantagem adicional, e podemos focar uma pessoa no que precisa ser estudado.

Um estagiário ideal é alguém que pratica há vários meses, se torna um desenvolvedor júnior, depois apenas um desenvolvedor, depois um líder de equipe etc. Para isso, você precisa de um arquétipo de um aluno que não hesite em perguntar se ele não entende alguma coisa, mas é capaz de trabalho independente. Se lhe disseram que você pode ler sobre isso lá, ele irá, lerá e realmente voltará com novos conhecimentos. Ele pode estar enganado, mas não deve estar enganado mais de uma, no máximo duas vezes no mesmo local. Um estagiário ideal deve se desenvolver, absorver tudo como uma esponja, aprender e crescer. Quem se senta, tenta descobrir por si mesmo, fica bisbilhotando por um longo tempo, não faz perguntas, é improvável que se enraíza.

Fim do estágio


Antes de iniciar o trabalho, assinamos um contrato a termo com cada estagiário. Obviamente, o estágio é pago, executado de acordo com o Código do Trabalho da Federação Russa, e o estagiário tem as mesmas vantagens que qualquer outro funcionário da Yandex. Três meses depois, o programa termina - depois transferimos muitos estagiários para o estado (com contrato perpétuo).



Por um lado, é importante para o líder que o desenvolvedor cumpra seu mínimo de estagiário. É a isso que o trainee leva, começando com a entrevista. No entanto, este é apenas o começo da história. Um estagiário para nós é sempre um candidato em potencial para o estado. O programa mínimo para o líder é, no início, discernir uma pessoa que, depois de três meses, não terá vergonha de recomendar a outros departamentos. O programa máximo é mantê-lo na mesma equipe, contratando funcionários. Ao mesmo tempo, levamos em conta que um estudante do segundo ou terceiro ano, mesmo que ele se tornou estagiário, precisará continuar estudando na universidade com o início do ano letivo.
Serge:
Antes de tudo, estagiários para nós são recursos humanos. Estamos tentando criar pessoas dentro do Yandex para que elas sejam ideais para as nossas tarefas. Damos a eles tudo, desde uma cultura de comunicação e interação em equipe até conhecimento enciclopédico sobre todos os nossos sistemas.
Ignat:
Como estagiário, tentamos imediatamente ele para que ele chegue à nossa equipe. E, como regra, o único obstáculo é a falta de vaga. Os estagiários tentam levar rapazes suficientes. Se uma pessoa tem cinco anos de experiência em desenvolvimento, ele estuda na Yandex e é estagiária em termos de nível, então, infelizmente, para nós, isso significa que, embora seja um bom companheiro, ele consegue um emprego na Yandex com cinco anos de experiência e não poderá se tornar um desenvolvedor sênior . Geralmente, trata-se de velocidade: o crescimento lento no passado também significa crescimento lento aqui. Sim, às vezes o entendimento de que uma pessoa não puxa ocorre apenas após três meses. Mas isso é raro o suficiente. Em mais da metade dos casos, estamos prontos para recrutar pessoas. Na minha memória, não era uma pessoa que teve um estágio bem-sucedido, mas não podia passar por uma entrevista para um cargo em período integral.
Misha:
Todos os estagiários de sucesso são convidados a permanecer na empresa. Após o estágio, geralmente levamos mais da metade do tempo integral. É mais difícil com um estágio de verão, porque muitas vezes os alunos, por exemplo, do terceiro ano, vêm até nós e é difícil para eles combinar trabalho e estudo.
Dima:
Suponha que um trainee faça um excelente trabalho e tenha muitas perspectivas de se tornar um bom desenvolvedor - mesmo que ele não tenha experiência suficiente agora. E suponha que não haja vaga para um contrato perpétuo. Então, tudo é simples: eu preciso ir ao meu líder e dizer a ele - essa é uma pessoa muito legal, ele deve ser deixado para trás com todas as suas forças, vamos oferecer-lhe algo, descobrir onde o anexar.

Histórias de estagiários

Denis:
A garota que nos conseguiu um estágio em 2017 era de Perm. Fica a 400 quilômetros de Ecaterimburgo, a oeste. E toda semana ela vinha de Perm de trem para a Escola de Desenvolvimento Móvel. Chegou à tarde, estudou à noite e saiu à noite. Tendo apreciado tal zelo, nós a chamamos para trabalhar, e valeu a pena.
Ignat:
Há alguns anos, participamos de um programa de intercâmbio de trainees. Foi interessante trabalhar com caras estrangeiros. Mas os estagiários de lá não são mais fortes do que, por exemplo, do ShAD ou da FCN. Parece que a EPFL está entre as 20 melhores universidades da Europa. Naquele momento, eu - como um entrevistador ainda não muito experiente - tinha uma expectativa: é incrível, entrevistaremos pessoas da EPFL, elas serão super legais. Mas as pessoas que receberam educação básica sobre codificação em nosso país - inclusive nas principais universidades regionais - estão bem no nível.

Ou outra história. Agora eu tenho um cara na minha equipe, bem jovem, com cerca de 20 anos. Ele trabalha em São Petersburgo, veio para um estágio. Ele é muito legal. Como de costume, você dá tarefas à pessoa, ele as resolve e, depois de um mês, diz: Decidi que estou procurando e parece que sua arquitetura é mal construída. Vamos refazê-lo. O código se tornará mais simples, mais compreensível. Claro, eu o dissuadi: o volume de trabalho é grande, não há lucro para os usuários, mas a ideia parece absolutamente razoável. Uma pessoa entendeu um processo complexo de vários segmentos e sugeriu melhorias - talvez prematuras, refatoração para refatoração. Mas assim que você quiser complicar esse código, você ainda poderá refatorar. De fato, vários meses se passaram e nós assumimos essa tarefa. Eu o peguei de bom grado na equipe. Nós não somos gênios. Você pode vir, descobrir algo e nos indicar nossos problemas. É apreciado.
Misha:
Temos estagiários tão perfeitos. Apesar da falta de experiência, eles veem a tarefa não apenas em nível técnico, mas também em nível global. Eles oferecem melhorias fundamentais. Eles entendem como traduzir tarefas do mundo real para o técnico, sem perder o significado. Eles se perguntam qual é o objetivo final, se vale a pena investigar os detalhes agora, ou se você pode mudar completamente a abordagem da tarefa ou mesmo a declaração do problema. Então, eles têm uma reserva para estar vários níveis mais altos. Para seguir esse caminho, eles só precisam desenvolver algumas habilidades e ferramentas internas. Além disso, lance vários projetos de sucesso.

Source: https://habr.com/ru/post/pt445962/


All Articles