Como entrar em uma grande empresa se você é júnior? Como contratar um júnior decente se você é uma grande empresa? Abaixo, mostrarei nossa história de contratação de iniciantes: como desenvolvemos as tarefas de teste, nos preparamos para realizar entrevistas e construímos um programa de orientação para o desenvolvimento e a integração de recém-chegados, e também por que perguntas padrão para entrevistas não funcionam.
Estou tentando domar o júniorOi Meu nome é Pavel, estou fazendo uma interface no time Wrike. Criamos um sistema para gerenciamento e colaboração de projetos. Estou envolvido na web desde 2010, trabalhei por 3 anos em um site remoto, participei de várias startups e ministrei um curso sobre tecnologias da web na universidade. Na empresa, participo do desenvolvimento de cursos técnicos do Wrike e de programas de mentoria para jovens, além de recrutá-los diretamente.
Por que pensamos em contratar juniores
Até recentemente, recrutávamos desenvolvedores intermediários ou seniores para o front-end, independentes o suficiente para executar tarefas do produto após a integração. No início deste ano, percebemos que queremos mudar essa política: ao longo do ano, o número de nossas equipes de produtos aumentou quase duas vezes, o número de fornecedores front-end se aproximou de cem e, no futuro próximo, tudo isso terá que dobrar novamente. Há muito trabalho, poucas mãos livres, há ainda menos mãos no mercado, por isso decidimos apelar para os caras que estão apenas começando sua jornada na linha de frente e percebemos que estão prontos para investir em seu desenvolvimento.
Quem é júnior?
Essa é a primeira pergunta que fizemos a nós mesmos. Existem critérios diferentes, mas o princípio mais simples e mais compreensível é o seguinte:
O júnior precisa explicar que característica e como fazer. Middle precisa explicar que recurso é necessário, e ele próprio lidará com a implementação. O próprio Signor lhe explicará por que esse recurso não precisa ser feito.
De uma forma ou de outra, um júnior é um desenvolvedor que precisa de conselhos sobre como implementar uma solução específica. O que decidimos construir:
- Junior - aquele que quer se desenvolver e está pronto para trabalhar muito para isso;
- Ele nem sempre sabe para que lado ele quer se desenvolver;
- Precisa de conselhos e procura ajuda externa - de seu líder, mentor ou comunidade.
Também tivemos várias hipóteses:
- Haverá uma tempestade de respostas à posição de junho . É necessário filtrar respostas aleatórias na fase de envio de currículos;
- O filtro primário não ajudará - são necessárias mais tarefas de teste;
- As tarefas de teste assustam a todos - elas não são necessárias.
E, claro, tínhamos um objetivo:
4 juniores em 3 semanas .
Com essa consciência, começamos a experimentar. O plano era simples: comece com o funil mais amplo possível e tente reduzi-lo gradualmente de forma a gerenciar o fluxo, mas não para reduzi-lo a 1 candidato por semana.
Publicamos uma vaga
Para a empresa : haverá centenas de respostas! Pense em um filtro.
Para os juniores : não tenha medo do questionário antes de enviar um currículo e uma tarefa de teste - isso é um sinal de que a empresa cuidou de você e configurou bem o processo.
No primeiro dia, cerca de 70 currículos de candidatos "com conhecimento de JavaScript" voaram para nós. E então novamente. E mais uma coisa. Fisicamente, não podíamos ligar para todos para uma entrevista no escritório e escolhemos entre eles os caras com os projetos mais legais para animais de estimação, o github ao vivo ou pelo menos a experiência.
Mas a principal conclusão que fizemos para nós mesmos no primeiro dia - a tempestade começou. É hora de adicionar o formulário do questionário antes de enviar seu currículo. Sua tarefa era eliminar candidatos que não estão prontos para fazer esforços mínimos para enviar um currículo e aqueles que não têm conhecimento e contexto, pelo menos na medida em que possam pesquisar as respostas corretas no Google.
Continha perguntas padrão sobre JS, layout, web, Ciência da Computação - todo mundo que sabe o que pede uma entrevista no frontend conhece. Qual é a diferença entre let / var / const? Como aplicar estilos apenas para telas com menos de 600 px de largura? Não quisemos fazer essas perguntas em uma entrevista técnica - a prática mostrou que elas podem ser respondidas após 2-3 entrevistas, completamente inconscientes do desenvolvimento. Mas, por outro lado, eles foram capazes de nos mostrar primeiro se o candidato entendia o contexto em princípio.
Em cada categoria, preparamos de 3 a 5 perguntas e, dia após dia, alteramos o conjunto delas na forma de uma resposta até excluirmos as mais difíceis e as mais difíceis. Isso nos permitiu reduzir o fluxo - em 3 semanas recebemos
122 candidatos , com os quais poderíamos trabalhar mais. Estes eram estudantes de TI; caras que queriam ir para a frente pelo back-end; trabalhadores ou engenheiros de 25 a 35 anos, que queriam radicalmente mudar de profissão e colocar uma quantidade diferente de energia na auto-educação, cursos e estágios.
Aproxime-se
Para a empresa : a tarefa de teste não afasta os candidatos, mas ajuda a reduzir o funil.
Para juniores : Não copie e cole o teste - isso é perceptível. E mantenha seu github em ordem!
Se convidássemos todos para uma entrevista técnica, teríamos que realizar cerca de 40 entrevistas por semana apenas para juniores e somente no front-end. Portanto, decidimos testar a segunda hipótese - sobre a tarefa de teste.
O que foi importante para nós no teste:
- Crie uma boa arquitetura escalável, mas sem excesso de engenharia;
- É melhor fazê-lo por mais tempo, mas fazê-lo bem do que escrever um artigo da noite para o dia e enviá-lo com o comentário "Definitivamente vou levá-lo ao fim";
- A história do desenvolvimento no gita é a cultura de engenharia, a iteração do desenvolvimento e o fato de a solução não ser fervida de maneira completamente insolente.
Concordamos que queremos ver um problema algorítmico e um pequeno aplicativo da web. Os algoritmos foram preparados no nível laboratorial dos cursos elementares - pesquisa binária, classificação, verificação de anagramas, trabalho com listas e árvores. Como resultado, decidimos pela pesquisa binária como o primeiro caso de teste. O jogo da velha usando qualquer estrutura (ou sem ela) deveria ter se tornado um aplicativo da web.
A tarefa de teste foi dominada por quase metade dos participantes restantes -
54 candidatos nos enviaram soluções. Visão incrível - o que você acha, quantas implementações de jogo da velha, pronto para copiar e colar, estão na rede?
QuantoDe fato, parece que apenas 3. E na grande maioria das soluções, havia precisamente essas três opções.
O que não gostou:
- copiar e colar ou desenvolver no mesmo tutorial sem sua própria arquitetura;
- ambas as tarefas estão no mesmo repositório em pastas diferentes, certamente não há histórico de confirmações;
- código sujo, violação de DRY, falta de formatação;
- uma mistura de modelo, visão e controlador em uma classe, com centenas de linhas de código;
- falta de entendimento dos testes de unidade;
- a solução "na testa" é a matriz de código rígido das combinações vencedoras 3x3, que será bastante difícil de expandir para 10x10, por exemplo.
E também prestamos atenção aos repositórios vizinhos - projetos legais para animais de estimação eram uma vantagem e várias tarefas de teste de outras empresas eram mais como um sino: por que o candidato não pôde ir lá?
Como resultado, encontramos opções interessantes em React, Angular, Vanilla JS - havia 29. E decidimos convidar outro candidato sem os de teste para seus projetos muito legais para animais de estimação. Nossa hipótese sobre o benefício dos itens de teste foi confirmada.
Entrevista técnica
Para a empresa : os médios / idosos não chegaram até você! Precisa de uma abordagem mais individual.
Para os juniores : Lembre-se de que isso não é um exame - não tente ficar calado nos três primeiros lugares ou inundar o professor com o fluxo de todo o seu conhecimento possível, para que ele fique confuso e coloque “excelente”.
O que queremos entender em uma entrevista técnica? Uma coisa simples - como um candidato entende. Ele provavelmente tem algumas habilidades difíceis, se ele passou pelas primeiras etapas da seleção, resta descobrir se ele sabe como aplicá-las. Nós concordamos em 3 tarefas.
O primeiro é sobre algoritmos e estruturas de dados. Com uma caneta, em um pedaço de papel, em uma pseudo-linguagem e com a ajuda de desenhos, descobrimos como copiar uma árvore ou como remover um elemento de uma lista simplesmente conectada. Uma descoberta desagradável foi que nem todos entendem a recursão e como os links funcionam.
O segundo é a codificação ao vivo. Fomos ao
codewars.com , escolhemos coisas simples, como classificar um conjunto de palavras pela última letra e por 30 a 40 minutos, juntamente com o candidato, tentamos fazer todos os testes passarem. Parecia que não deveria haver surpresas dos caras que dominavam o jogo da velha - mas, na prática, nem todo mundo era capaz de perceber que o valor precisa ser armazenado em uma variável, e a função deve retornar algo através do retorno. Embora eu sinceramente espero que tenha sido um idiota, e os caras foram capazes de lidar com essas tarefas em um ambiente mais leve.
Finalmente, o terceiro é um pouco sobre arquitetura. Discutimos como criar uma string de pesquisa, como funciona o rebounce, como renderizar vários widgets nas dicas de pesquisa, como um front-end pode interagir com um back-end. Havia muitas soluções interessantes, incluindo sobre renderização no servidor e soquetes da web.
Realizamos 21 entrevistas dessa maneira. O público estava completamente manchado - vamos aos quadrinhos:
- "O foguete" . Ele nunca se acalma, invade todos os lugares e durante uma entrevista ele o inundará com uma corrente de pensamentos que nem sequer estão diretamente relacionados à pergunta. Se fosse uma universidade, seria uma tentativa familiar para muitos de demonstrar bem, em geral, todo o seu conhecimento, quando você se lembra do ingresso que acabou de ganhar e decidiu não ensiná-lo ontem à noite - você ainda não consegue.
- Groot . Já é difícil entrar em contato com ele, porque ele é Groot. Na entrevista, você deve balançar por um longo tempo, retirar as respostas palavra por palavra. É bom se for apenas um estupor - caso contrário, será muito difícil para você no seu trabalho diário.
- Drax . Anteriormente, eu estava envolvido no transporte de carga e, com a programação, aprendi apenas JS no Stackoverflow, então nem sempre entendo do que se trata a conversa na entrevista. Ao mesmo tempo, ele é uma boa pessoa, tem as melhores intenções e quer se tornar um front-end legal.
- Bem, provavelmente, "Senhor das Estrelas" . Em geral, um bom candidato com quem você pode negociar e construir um diálogo.
Ao final de nossa pesquisa,
sete candidatos chegaram à final, confirmando suas habilidades com uma tarefa interessante de teste e boas respostas para entrevistas.
Ajuste cultural
Para a empresa : você trabalha com ele! O candidato está exatamente pronto para trabalhar extremamente duro por seu desenvolvimento? Ele se encaixará exatamente no time?
Para junior : você trabalha com eles! A empresa está pronta para investir no crescimento de juniores, ou apenas despejará todo o trabalho duro em você?
Cada junior, além da equipe de produto, cujo líder deve concordar em aceitá-lo, chega ao mentor. A tarefa do mentor é guiá-lo pelo processo de três meses de integração e aprimoramento de habilidades. Portanto, chegamos a todos os encaixes culturais como mentores e respondemos à pergunta: "Assumirei a responsabilidade de bombear o candidato por 3 meses, de acordo com nosso plano?"
Essa etapa ocorreu sem nenhum recurso especial e, como resultado, nos trouxe
4 ofertas , 3 das quais foram aceitas, e os caras se juntaram às equipes.
Vida após a oferta
Para a empresa : Cuide de seus juniores ou outros o farão!
Para Junior : AAAAAAAAAAA !!!
Quando um novo funcionário sai, ele precisa ser abordado - colocado no curso dos processos, contar como tudo funciona na empresa e na equipe e como ele trabalha em geral. Quando um júnior sai, você precisa entender como desenvolvê-lo.
Quando pensamos sobre isso, formamos uma lista de 26 habilidades que, em nossa opinião, um júnior deveria ter até o final do período de três meses de integração. Incluía habilidades difíceis (de acordo com nossa pilha), conhecimento de nossos processos, scrum, infraestrutura e arquitetura de projeto. Nós os combinamos em um roteiro, distribuído ao longo do tempo por 3 meses.
Por exemplo, aqui está o meu roteiro júniorAnexamos um mentor a cada aluno que trabalha com ele individualmente. Dependendo do mentor e do nível atual do candidato, as reuniões podem ser realizadas de 1 a 5 vezes por semana, durante 1 hora. Os front-ends da iniciativa que desejam fazer algo mais do que apenas escrever código voluntariamente se tornam mentores.
Parte da carga dos mentores é removida pelos cursos em nossa pilha - Dart, Angular. Os cursos são realizados regularmente para pequenos grupos de 4-6 pessoas, onde os rapazes estudam no trabalho.
Ao longo de três meses, periodicamente coletamos feedback dos juniores, seus mentores e líderes e ajustamos o processo individualmente. 1-2 vezes durante todo o período, as habilidades bombeadas são verificadas, a mesma verificação é realizada no final - as recomendações são formadas com base no que exatamente deve ser reforçado.
Conclusão
Para a empresa : vale a pena investir em juniores? Sim
Para Junior : procure empresas que selecionam cuidadosamente os candidatos e sabem como cultivá-los.
Durante 3 meses, analisamos 122 questionários, 54 itens de teste e realizamos 21 entrevistas técnicas. Isso nos trouxe três juniores legais que agora completaram metade de seus roteiros de integração e aceleração. Eles já fecham tarefas reais do produto em nosso projeto, onde somente no front-end existem mais de 2.000.000 de linhas de código e mais de 400 repositórios.
Descobrimos que o funil para juniores pode e deve ser bastante complicado, mas no final apenas os caras que realmente estão prontos para trabalhar muito e investir no desenvolvimento passam por ele.
Agora, nossa principal tarefa é concluir os roteiros de três meses para o desenvolvimento de cada aluno júnior no modo de trabalho individual com um mentor e cursos gerais, para coletar métricas, feedback, líderes, mentores e os próprios rapazes. Nisso, o primeiro experimento pode ser considerado concluído, tirar conclusões, melhorar o processo e iniciar novamente para selecionar novos candidatos.