
1. Introdução
Por dois anos, tive a sorte de assistir a mais de quarenta entrevistas como candidato ao cargo de "desenvolvedor médio de Python". Nas últimas quinze entrevistas, percebi a necessidade de fazer perguntas ao empregador para não encontrar surpresas no trabalho no futuro. Além das perguntas básicas que os candidatos geralmente fazem ao empregador, decidi formular minhas perguntas. Quando fiz essas perguntas nas entrevistas, recebi uma variedade de reações dos entrevistados. Alguém disse que eu era meticuloso, alguém considerou essas perguntas muito banais, e alguém começou a ficar nervoso (corar) e imediatamente interrompeu a entrevista com uma desculpa absurda de que ele tinha uma reunião. Neste artigo, gostaria de falar sobre as idéias gerais de participar de tais eventos e também trazer minhas 22 perguntas que faço na entrevista ao empregador.
Idéias gerais
Uma entrevista com um desenvolvedor intermediário geralmente parece a mesma que uma entrevista com um júnior.É mesmo. Isso se deve ao fato de muitos líderes de equipe / diretores técnicos não saberem exatamente o que desejam ver no desenvolvedor intermediário. Portanto, nessas entrevistas, eles geralmente são solicitados a
"escrever um decorador" ou
"escrever um tipo de bolha em qualquer idioma" .
Além disso, poucas pessoas entendem como um desenvolvedor júnior difere de um desenvolvedor intermediário. Alguém diz que o meio é um desenvolvedor com experiência de um ano e meio e alguém de três. No meu entendimento, o desenvolvedor intermediário é aquele desenvolvedor que pode dar com segurança um projeto pequeno ou qualquer parte de um projeto grande, e que ele era responsável por ele. Também um critério importante para um desenvolvedor intermediário é a capacidade de ser um mentor para alguém ou apenas a capacidade de ajudar um novo funcionário a se infiltrar em um projeto.
Uma entrevista não é um exame, mas uma oportunidade de identificar como a empresa e o candidato se encaixam.Essa regra importante geralmente não é entendida pelos próprios empregadores. Uma vez, em uma entrevista, fui forçado a puxar uma multa e responder ao entrevistado em um pedaço de papel. Além disso, ao longo desta entrevista, conversamos por dez minutos. O mesmo comportamento é frequentemente rastreado pelo candidato. Muitas vezes, o candidato quer responder a tudo e se comporta como um excelente aluno da primeira mesa. Mas aqui também é importante entender que o empregador não está particularmente interessado em saber como você conhece a
"diferença entre Python2 e Python3" . É muito mais importante para o empregador entender em geral como você se agarra a uma entrevista, como raciocina, como reage a falhas etc.
Desenvolvedor intermediário não pode ficar sem experiência.Claro que é possível, mas depois de algum tempo isso trará enormes problemas tanto para o chefe desse desenvolvedor quanto para o projeto. Para candidatos superdotados sem experiência, os especialistas em RH têm seu próprio termo - “desenvolvedor júnior forte”. Provavelmente, esses desenvolvedores receberão uma boa compensação monetária, mas terão responsabilidades como desenvolvedores juniores. Voltando aos desenvolvedores intermediários, gostaria de observar que é o meio que trabalha no desenvolvimento há algum tempo e entende em quais processos ele consiste. Middle também sabe trabalhar com várias ferramentas (monitoramento, implantação, criação de perfil, teste) que uma pessoa sem experiência dificilmente encontrará para fins de treinamento.
As habilidades sociais se tornam um fator importante na posição de desenvolvedor intermediário.Quanto maior a posição, mais pessoas precisam interagir. Portanto, muitas vezes ao contratar uma posição de desenvolvedor intermediário, entrevistas adicionais são criadas com um especialista em RH para compilar um retrato psicológico de um futuro funcionário. Esta entrevista deve ser levada tão a sério quanto a técnica. Você precisa entender que continua trabalhando com essas pessoas. E se você acha que seus futuros colegas não são muito adequados para você, é melhor recusar imediatamente mais cooperação.
É menos provável que os trabalhos de teste sejam atribuídos à posição de desenvolvedor intermediário.Esta afirmação é bastante subjetiva. Pessoalmente, eu realmente me deparei com esse fato. Associo isso ao fato de o empregador estar mais interessado em seu currículo. Se o resumo não for bem compilado, é provável que você deva esperar pela tarefa de teste.
Perguntas
Nesta seção, a lista principal de perguntas que faço ao empregador na entrevista será apresentada. Talvez depois de algum tempo essa lista seja expandida ou reduzida. Note-se que essas perguntas devem ser feitas precisamente em entrevistas técnicas e é aconselhável exatamente com quem você irá interagir mais tarde.
1. Como estão as coisas com os testes? Que testes você está escrevendo? Quais bibliotecas você usa para testar? ( fábricas , moki , etc.)O teste é uma parte muito importante de qualquer desenvolvimento. No meu entendimento, todos os desenvolvedores devem escrever testes, pelo menos de alguma forma. Os únicos que podem perdoar a falta de testes são as startups. Nas startups, o
curso do movimento geralmente muda devido a quais projetos antigos geralmente não são necessários para ninguém. Portanto, garantir a qualidade de tais projetos foi uma perda de tempo. Para todas as outras empresas, não deve haver piedade nesse assunto. Você precisa entender que a introdução de um novo funcionário no projeto a princípio levará a vários erros no código. E os testes nesse caso são o resseguro pessoal e resseguro daquele que derramará suas decisões em produção.
Quando o empregador responder à segunda parte da pergunta, você será capaz de entender o quão bem a equipe garante a qualidade do seu produto e também as possíveis responsabilidades do desenvolvedor que não foram discutidas na vaga.
Vale a pena notar que, nessa questão, os especialistas técnicos geralmente começam a se perder. Às vezes, alguém diz que a equipe começou a escrever testes e ainda não está familiarizada com todas as sutilezas deste ofício. Mas às vezes eu ouvia a resposta:
"Os testadores devem se envolver em testes, e o desenvolvedor deve criar". Isso é absolutamente falso.
O desenvolvedor deve escrever o mínimo necessário de testes, porque é ele quem sabe como o funcional que ele criou deve funcionar. Ninguém fala sobre a inutilidade dos testadores. Mas é importante entender que os desenvolvedores também devem ser responsáveis pela qualidade do seu código.
2. O que o desenvolvedor faz com o código antes de enviá-lo ao repositório?Esta pergunta refere-se à verificação local do seu código em relação a vários parâmetros. Aqui está uma pequena lista de qual código geralmente é verificado antes de enviar para o repositório:
- Flake8 - análise de código para conformidade com PEP8 ,
- Pylint - análise de código estático,
- Cobertura - análise de código para cobertura de teste,
- Tox - verificando o código quanto à compatibilidade com diferentes versões de pacotes individuais e com diferentes versões do Python.
A ausência deste caso no desenvolvimento não é crítica. Além disso, em muitas empresas, esse caso é usado diretamente no IC e o desenvolvedor não inicia nada localmente. Mesmo que isso não seja usado no desenvolvimento, seria bom que as pessoas que o entrevistassem tivessem um entendimento básico dessas ferramentas.
3. Existem projetos de CI / CD? Existe um engenheiro de DevOps ?Esta pergunta não tem armadilhas e peço que entenda melhor o dispositivo da empresa. Se não houver CI / CD nos projetos e o engenheiro do DevOps também estiver ausente, é provável que você esteja fazendo isso. Portanto, este ponto também é melhor para discutir em uma entrevista.
4. Existe uma revisão de código? Como vai?A primeira parte da pergunta pode ser deixada sem comentários, porque todos entendem a importância desse evento. Mas vale a pena notar que eu pessoalmente estava interessado exatamente em como as coisas acontecem. Muitas vezes acontece que cada equipe revisa o desenvolvedor que fez a solicitação de mesclagem. Mas às vezes acontece que existe um mentor / mentor sobre qualquer desenvolvedor, e é ele quem revisa o desenvolvedor. Considero a primeira abordagem mais correta, pois quanto mais pessoas revisam o código, melhor para o projeto e a equipe. Aqui, aspectos como trabalho em equipe, responsabilidade coletiva e um aumento no
fator de ônibus são imediatamente afetados.
5. Qual sistema de controle de versão você usa?No momento, na Rússia, existem muitas empresas que ainda usam
hg ,
svn e outros sistemas de controle de versão antigos. Isto é especialmente verdade para empresas que estão no mercado há mais de 10 anos. Essa pergunta testa mais a idade da empresa suscetível a novas tecnologias. Também é importante notar que participei do desenvolvimento usando
hg por um curto período de tempo e isso não me proporcionou muito prazer.
6. Você usa git / hg-flow ou alguma metodologia específica ao trabalhar com git / hg?Esta pergunta segue da pergunta anterior sobre sistemas de controle de versão. Portanto, se a equipe não usa
git / hg , não faz sentido perguntar. Se a empresa usa
git / hg , essa pergunta mostra como o processo de desenvolvimento é depurado.
7. Você usa metodologia de desenvolvimento (scrum, kanban, etc.)?No desenvolvimento, é importante aderir a uma abordagem específica (metodologia). A abordagem de desenvolvimento mais popular é iterativa. Essa abordagem permite determinar sua contribuição para o projeto. No meu entendimento, se uma equipe usa algum tipo de metodologia, isso é definitivamente bom. Isso permite que você determine sua eficácia. Também ajuda a entender os cronogramas alocados às tarefas. É o mesmo que as crianças em idade escolar têm quatro quartos de um ano, onde recebem notas para determinar mais tarde a nota final do ano.
8. Os sistemas de monitoramento são usados nos projetos (Sentry, NewRelic, etc.)?A presença de sistemas de monitoramento em um projeto é tão importante quanto a presença de testes. São os sistemas de monitoramento que permitem avaliar objetivamente o trabalho de todo o sistema com base nas ações que o usuário final executa. Se não houver sistemas de monitoramento, pense na qualidade do produto fabricado. É como um cozinheiro que cozinha comida, mas nunca pergunta a ninguém se é saboroso.
9. O projeto usa um sistema para armazenar logs e trabalhar com eles (tecnologia ELK, etc.)?Para mim, este também é um indicador importante. Se não houver ELK, é muito difícil determinar a causa de um erro complexo no sistema. Essa pergunta não é tão importante quanto a pergunta número 8, mas também vale a pena pedir para entender o quão rica é a experiência da equipe em criar um perfil de erros complexos.
10. Quais bancos de dados são usados no projeto? Por que exatamente esses?Esta pergunta tem como objetivo avaliar a competência do entrevistado. Muitas vezes, ao usar bancos de dados antigos, ouço algo como "aconteceu historicamente". Considero esta resposta inadequada. O técnico deve entender os contras / profissionais do banco de dados que está usando. Esta pergunta deve ser feita apenas se você for versado em vários bancos de dados e suas diferenças.
11. Qual versão do Python é usada nos projetos? Se a versão do Python2.x for usada, existe um plano para migrar para o Python3.x? E como você migrará de uma versão para outra?Esta questão, como a anterior, visa avaliar a competência do entrevistado, bem como avaliar seu raciocínio. Deve-se entender que os empregadores são muito analfabetos e tais questões já podem ser identificadas na fase da entrevista. Antes de fazer esse tipo de pergunta, eu recomendo que você vá mais fundo nelas.
12. A empresa está procurando um desenvolvedor fullstack ou desenvolvedor back-end?Só faço essa pergunta se a própria empresa não a especificou antes da entrevista. Empregos fullstack-developer no mercado de trabalho podem ser encontrados com bastante frequência. Muitas empresas acham isso benéfico para si mesmas. Minha experiência pessoal me diz que não há desenvolvedores de fullstack, pois o frontend e o backend se tornaram direções muito diferentes desde que a Web surgiu. Em outras palavras, "você não pode se sentar em duas cadeiras".
Na maioria dos casos, a empresa está convencida de que você não conhece o frontend e espera que o aprenda diretamente na batalha. Esclarecerei que a vaga de desenvolvedor fullstack é inaceitável para mim pessoalmente. Muitas pessoas acham essa uma excelente oportunidade para mergulhar no mundo rico do frontend e sem pagar um único rublo.
13. A tecnologia de conteinerização é usada em projetos?Esta pergunta é um complemento à pergunta nº 3.
14. Pergunte ao entrevistador um pouco sobre o que ele estava fazendo antes deste projeto e há quanto tempo ele estava no projeto.Esta questão é muito importante. Quanto mais rica a experiência do entrevistado, mais isso afetará suas habilidades ao longo do tempo. É especialmente bom fazer essa pergunta em uma pequena empresa onde há uma lenta rotatividade de pessoal.
15. A empresa tem uma avaliação anual / trimestral dos funcionários e como isso acontece?É útil para qualquer funcionário receber feedback de seus colegas. Se a empresa tem eventos especiais para isso, então isso é maravilhoso. Caso contrário, não há com o que se preocupar. De qualquer forma, ninguém proíbe solicitar feedback de colegas de forma gratuita.
16. A empresa possui processamento? Em caso afirmativo, eles são compensados e com que frequência ocorrem?Poucas pessoas gostam de reciclar, especialmente se você é um estudante ou um pai que amamenta. Há um grande número de empresas que colocam a reciclagem em primeiro plano. Para entender que a empresa não possui refinarias ou é rara, é necessário fazer perguntas desse tipo. Se a empresa ocasionalmente refinar, não há nada crítico. Se o refino for mais frequente, vale a pena considerar a viabilidade de uma maior permanência na empresa.
17. Quão forte é a burocracia na empresa? (Taxa de 1 a 10)Muitos desenvolvedores nem sequer estão cientes da presença de burocracia na esfera de TI, mas, infelizmente, ela existe. Isso se aplica especialmente a grandes empresas antigas ou empresas que trabalham com o estado. ordens. O grau de burocracia em uma empresa depende apenas da imaginação da administração. Normalmente, a burocracia consiste em várias aplicações formais, pontos turísticos, acessos, conflitos de interesse entre vários departamentos da empresa e na escrita de documentação bruta no Word. O principal problema dessa burocracia é a forte inibição do processo de desenvolvimento. O que é feito em uma empresa normal em um dia útil, leva semanas. Simplificando, quanto mais forte a burocracia na empresa, mais lento será o desenvolvimento do produto e o seu desenvolvimento como especialista.
18. Qual é a situação com a remoção de recursos?Os recursos são entendidos como novos computadores para funcionários, servidores, domínios, licenças, etc. Esta questão também pode ser atribuída à questão anterior da burocracia.
19. Como o entrevistador se relaciona com as novas implementações no projeto?Essa questão nos permite avaliar a democracia dentro da equipe. E também essa pergunta possibilitará entender o quanto a voz de um desenvolvedor comum tem peso para uma equipe e um mentor.
20. A empresa é participante de alguma conferência de TI e possui publicações sobre tópicos de TI?A conferência é uma grande oportunidade para o desenvolvedor e para a empresa se declarar e suas realizações. Se a empresa for publicada e for participante de conferências, em algum momento você também poderá usar esta oportunidade. Se isso não for interessante para você, perguntar sobre isso não faz sentido.
21. Existem mitaps dentro da empresa?Aqui falaremos sobre mitaps de desenvolvedores dentro de uma equipe ou entre equipes. Mitapas são muito importantes. Eles permitem que você descubra quem e o que exatamente está fazendo em um determinado momento. Se você tiver problemas de falar em público, isso também contribuirá para o desenvolvimento de suas
habilidades pessoais .
22. A empresa possui estagiários e sistema de mentoria?Os estagiários são um futuro potencial para a empresa. Se a empresa possui estagiários, talvez você possa ser um mentor para eles e compartilhar sua experiência pessoal. A tutoria também é uma das áreas em que você pode se desenvolver.
Conclusão
Todos os itens acima são meus pensamentos com base na experiência pessoal e não são 100% de informações verdadeiras. A principal moral do artigo é que é necessário verificar não apenas o candidato, mas também o empregador. Além disso, não fique nervoso antes das entrevistas ou nas entrevistas. Você precisa entender que os entrevistadores são as mesmas pessoas que você, que também estão enganados ou não sabem ou não entendem algo.