Realizei mais de cem entrevistas, por um lado e por outro. Neste artigo, gostaria de compartilhar minhas experiências, observações e pontos interessantes. Talvez isso salve alguém de erros, conclusões incorretas e perda de tempo.
Que tipo de pássaro é Senior?
Portanto, Senior Software Developer (aka Senior Developer) é um desenvolvedor com experiência significativa (a partir de 5 anos) e profundo conhecimento em desenvolvimento comercial de software. A experiência de trabalho de desenvolvimento por dinheiro é uma condição necessária, mas não suficiente. Certifique-se de participar de qualquer projeto de nível corporativo e, se também for perfeito desde o início, oferece uma experiência inesquecível e uma visão ampla. Senior difere do Middle principalmente porque ele pode levar qualquer tarefa ao estado de produção pronta. Ele sabe claramente o que pode ser feito e o que não pode. É capaz de capturar o momento em que é hora de refatorar o software ou apenas reescrevê-lo do zero. Grava um código de alta qualidade sem erros críticos e de arquitetura.
É um erro supor que Senior seja mais rápido que Middle. Na minha prática, houve muitos casos em que o Middle executou tarefas simples mais rapidamente. Porém, o Senior quase sempre trabalha melhor e mais rápido em tarefas complexas, quando você pode aplicar a experiência acumulada, evitar erros e perder tempo no estágio de desenvolvimento, manutenção e desenvolvimento.
O principal objetivo da entrevista
Curiosamente, mas às vezes os entrevistadores não seguem o objetivo principal da entrevista - determinar se o desenvolvedor será útil para a equipe e quanto esse benefício está relacionado ao custo desse desenvolvedor. Em vez disso, o entrevistador frequentemente revela o que o desenvolvedor não sabe, em vez de descobrir o que ele sabe e pode fazer. Como conseqüência disso, ele chega a conclusões erradas com todas as conseqüências resultantes.
Quem deveria entrevistar?
Aqui, a única resposta correta é o futuro chefe imediato do aka Líder da Equipe. Um erro comum é entrevistar 2-3 pessoas da parte do entrevistado, fazendo perguntas transversais e inconsistentes. Isso tudo cria estresse desnecessário para o entrevistado e impede o estabelecimento de contato psicológico.
Atmosfera
Entrevistar é sempre um estresse para o desenvolvedor, para alguém mais, para alguém menos. Muitos deles não sabem "vender" a si mesmos qualitativamente. Portanto, é extremamente importante atrair um desenvolvedor e transferir a entrevista para uma comunicação amigável entre dois colegas. De fato, é em uma conversa amigável que você pode descobrir os verdadeiros detalhes de deixar seu emprego anterior e que tipo de habilidades a pessoa entrevistada possui sem embelezamento.
Aprenda competências
Como eu já escrevi em "Metas", é importante descobrir os pontos fortes do entrevistado, com o qual ele trabalhou anteriormente, com o que ele comeu o cachorro, em quais abordagens ele usou, em quais engrenagens ele se encontrou ao longo do caminho.
Competências essenciais para um desenvolvedor sênior:
- Algoritmos
- Arquitetura, padrões de design.
- Bases de dados
- Execução paralela e sincronização de processos.
- Noções básicas de desempenho de software.
- Depuração e log.
Um papel importante para um desenvolvedor é entender como ele funciona, conhecimento de conceitos e recursos, em vez de conhecer uma ferramenta específica. Por exemplo, se ele entendeu completamente o MySQL, não seria difícil para ele lidar com o Postgres. Na maioria dos casos, não é difícil para um desenvolvedor sênior aprender rapidamente qualquer ferramenta.
Muitas vezes, os entrevistados mudam para alguns detalhes que lhes são familiares, eis os casos da prática real:
- Como usar o SQL para excluir uma linha se mais de uma se enquadrar nos critérios de seleção?
- Qual comando git reverterá o último commit?
- Quais métodos de um objeto Object em Java você conhece? Pode haver outras opções em outros idiomas - algo que o entrevistador conhece bem.
Essas perguntas também são da categoria de "jogar uma moeda no ar"; seu conhecimento ou ignorância não permite conclusões objetivas sobre a experiência do desenvolvedor.
Há também uma categoria separada de amantes “espirituosos” de perguntas e tarefas estúpidas para verificar a “inteligibilidade”, exemplos reais:
- Por que a escotilha é redonda?
- Como derramar exatamente 4 litros de água em um balde, se houver dois baldes - 3 e 5 litros?
- Resolva um quebra-cabeça, por exemplo, colete um cubo de Rubik.
O problema com essas perguntas é que não apenas as pessoas com baixo QI são filtradas, mas também uma parte significativa dos espertos que simplesmente não estão prontos para essas perguntas ou que estão sob estresse. Aqui, em vez de pessoas espertas, muitas vezes vai além daqueles que já sabem as respostas e soluções para perguntas e tarefas padrão.
Procurando motivação
Há uma pergunta tão frequente do lado do entrevistado: "Por que você quer trabalhar conosco?" Entende-se que o entrevistado revelará honestamente e abertamente sua motivação - "Quero mais dinheiro" ou "Tudo está melhor do que onde estou agora". Mas, para o entrevistado, essa pergunta pode causar um mal-entendido literal e ele raramente responde abertamente. Portanto, é melhor descobrir a motivação com perguntas indiretas.
Quais são as motivações:
- O dinheiro A motivação mais popular, mas muitas vezes não é aceito admiti-la. Funciona bem para famílias e para aqueles que estão acostumados a gastar muito ou realmente querem economizar.
- Tarefas interessantes . Quando as pessoas realmente gostam do trabalho e estão prontas para trabalhar horas extras e nos fins de semana sem exigir pagamento adicional.
- Atualize novas habilidades . O setor não fica parado e constantemente precisa bombeá-los para manter a demanda no mercado de trabalho.
- Crescimento na carreira . Uma das principais motivações para trabalhar em uma startup.
- Empresa conhecida ou exagerada . A oportunidade de fazer parte dela e colher os benefícios de sua fama.
O que você não deve perguntar ao desenvolvedor sênior
- Como o algoritmo XXX raramente necessário funciona (por exemplo, quicksort). Por que perguntar o que não é necessário no trabalho diário do desenvolvedor, mas o google é em 5 segundos?
- Você possui uma ferramenta YYY simples (por exemplo, git). Ainda não conheci um desenvolvedor que não teria dominado os recursos básicos do git necessários para o trabalho diário em um dia ou dois.
- Você sabe escrever testes? Pergunta com um asterisco. O processo de escrever testes é simples, mas aprender a entender o que precisa ser testado e até que ponto - é preciso uma longa prática. De fato, apenas um escritor de teste experiente em uma equipe que pode controlar esse processo de maneira eficaz é suficiente.
- O que é Agile / Kanban / Scrum. A metodologia, conforme o desenvolvimento será conduzido, é escolhida pelo líder da equipe; portanto, os artistas comuns não precisam conhecê-la completamente e os princípios básicos são compreendidos em questão de dias.
Tipos de desenvolvedores sênior
Para entender a motivação e as habilidades de um desenvolvedor em particular, é necessário destacar os tipos inerentes a ele. Eu identifiquei os seguintes tipos comuns:
- Criador ou apaixonado . Ele foge do próprio trabalho, tarefas não triviais, onde você precisa inventar algo. Às vezes, as bicicletas são obtidas, mas com o aumento de competências, produz produtos de alta qualidade. A principal motivação são projetos e tarefas interessantes.
- A rotina . Capaz de realizar trabalhos de rotina, sem comprometer a produtividade ao longo do tempo e sem exigir nenhuma motivação.
- Super-herói . Complete a tarefa a todo custo, mesmo se não houver competência e tempo suficientes. Muitas vezes esculpe coisas e merda, mas com o crescimento de competências, algo mais ou menos decente é obtido. Muito valioso para startups e chefes exigentes.
- Competente . Você não pode enganá-lo no joio, você não pode enganá-lo com hype, ele sempre tenta compreender a essência da tecnologia e das tarefas, ele pensa profundamente e estruturalmente. Funcionário valioso em qualquer projeto.
- Superficial . Eles pegam palavras inteligentes, abordagens, estudam (superficialmente) tecnologias e ferramentas de hype e tentam aplicar tudo isso no projeto, despejando grandes quantidades, mesmo que seja possível gerenciar pequenas. Normalmente, no início de uma carreira e simplesmente camaradas motivados e impressionáveis.
- Humor de refém . Há um clima - o trabalho está em pleno andamento, de modo que apenas traga conchas, não há humor - ele fará uma aparência pensativa e filosofará mais do que o trabalho.
- Carreira . Claramente visando o crescimento da carreira. Não há crescimento há mais de um ano - um candidato em potencial para a partida.
- Conservador . Um amante da estabilidade e das tradições, refere-se negativamente a todas essas pequenas coisas, ferramentas e abordagens novas.
- Manimen . Funciona onde pagam mais, por isso a lealdade à empresa é bastante baixa. Ele adora bônus, bônus, nishtyaki grátis e outras motivações financeiras.
Freqüentemente, um indivíduo em particular combina vários tipos em várias proporções. Com o tempo, os tipos e suas proporções em seres humanos mudam, e também existem indivíduos que podem se adaptar às tarefas (típicas dos super-heróis). Observa-se que, com a idade, a participação do Conservador cresce em muitos, o Criador pode se esgotar e o Superficial pode se tornar um Competente.
Estado psicológico
Infelizmente, às vezes os desenvolvedores seniores desenvolvem as habilidades erradas e seu caráter pode se deteriorar, o que complica muito a compreensão mútua e o trabalho em equipe eficaz.
Muitas vezes, existem tais condições:
- A vida é decadência . Às vezes, acontece que o código escrito não entra em produção por algum motivo (por exemplo, para decisões de negócios) ou não dura muito (gerenciamento inicial ou inepto). Isso é seriamente desmoralizante, com todas as consequências. Isso não deve ser confundido com cinismo comum saudável devido à experiência de trabalho.
- Zen compreendeu . Ao longo dos anos, em um projeto estático da empresa, um desenvolvedor estuda-o de cima a baixo e ele tem a sensação de que agora é um especialista raro. De fato, suas habilidades fora deste projeto custam quase nada; há uma reavaliação de suas capacidades pelo desenvolvedor.
- Subestimado e inseguro . Uma série de projetos mal-sucedidos, má administração e outros riscos fazem o desenvolvedor duvidar de suas habilidades e habilidades, embora na realidade ele possa provar ser um funcionário muito capaz e valioso. Muitas vezes subestima a si mesmo em termos de salário e / ou cargo.
- Sobrestimado . Em contraste com o subestimado e incerto, esse indivíduo capturou um projeto ou série de sucesso, que foi extremamente bem-sucedido e, nessa onda, superestima muito suas habilidades e capacidades.
Mas e a tarefa de teste?
O problema na tarefa de teste curto (2 a 3 horas) é que, de acordo com seus resultados, é impossível tirar conclusões definitivas se o autor tem experiência no desenvolvimento do nível Sênior ou não. Com o mesmo sucesso, você pode simplesmente jogar uma moeda no ar.
Conclusões
De acordo com os resultados da entrevista, uma impressão objetiva do desenvolvedor deve ser formada:
- Quais são os seus pontos fortes.
- Como ele pode fortalecer a equipe.
- Quanto tempo ele precisa para atingir a "velocidade de cruzeiro".
- Quanto o sn desejado corresponde aos pontos acima.
- Existe algum contato psicológico e compatibilidade com a equipe.
Se, por algum motivo, não for possível responder com confiança a todas essas perguntas, você poderá realizar outra rodada de entrevistas ou recusar o candidato. A próxima rodada pode consistir em qualquer tarefa específica que revele as informações ausentes, por exemplo - meio dia de codificação diretamente para empresas pagas a uma taxa média.
PS: Todos os pontos de um artigo não podem ser descritos; portanto, se você tiver dúvidas ou quiser discutir algo - escreva nos comentários ou no
e-mail .