prepare_for_interview-pt-BR.md
Nota: o seguinte é opinativo.
Todo Engenheiro de DevOps deve ter um profundo entendimento de pelo menos um sistema operacional e, se você tiver a opção de escolher, eu diria que definitivamente deveria ser o Linux, pois acredito que é um requisito de pelo menos 90% das vagas de DevOps por aí. Além disso, o Linux é uma parte quase integral de qualquer subárea ou domínio em DevOps, como Nuvem, Contêineres, etc.
Normalmente, a pergunta seguinte é "Quão extenso deve ser meu conhecimento?" De todas as habilidades de DevOps, eu diria que esta, juntamente com a codificação, devem ser suas habilidades mais fortes. Esteja familiarizado com processos do SO, ferramentas de depuração, sistema de arquivos, rede, ... conheça seu sistema operacional, entenda como ele funciona, como solucionar problemas, etc.
Não muito tempo atrás, criei uma lista de recursos do Linux bem aqui. Existem alguns bons sites lá que você pode usar para aprender mais sobre o Linux.
Minha crença pessoal é que todo engenheiro de DevOps deve saber programar, pelo menos até certo ponto. Tendo essa habilidade, você pode automatizar processos manuais, melhorar algumas das ferramentas de código aberto que está usando hoje ou construir novas ferramentas e projetos para fornecer uma solução para problemas existentes. Saber codificar = muito poder.
Quando se trata de entrevistas, você notará que o nível de conhecimento depende muito da empresa ou da posição para a qual você está entrevistando. Alguns exigirão que você seja capaz de escrever scripts simples, enquanto outros mergulharão em algoritmos e estruturas de dados complexos.
A melhor maneira de praticar essa habilidade é codificando de fato - scripts, desafios online, ferramentas CLI, aplicações web, ... apenas codifique :)
Além disso, o seguinte provavelmente está claro para a maioria das pessoas, mas vamos esclarecer mesmo assim: quando tiver a chance de escolher qualquer linguagem para responder a tarefas/perguntas de codificação, escolha aquela com a qual você tem experiência! Alguns candidatos preferem escolher a linguagem que acham que a empresa está usando e isso é um grande erro, pois dar a resposta certa é sempre melhor do que uma resposta errada, não importa qual linguagem você tenha usado :)
Eu recomendo os seguintes sites para praticar codificação:
Começar seu próprio projeto também é uma boa ideia. Mais sobre isso mais tarde.
Este também é um aspecto importante do DevOps. Você deve ser capaz de descrever como projetar diferentes sistemas, fluxos de trabalho e arquiteturas. Além disso, a escala é um aspecto importante disso. Um design que pode funcionar para uma dúzia de hosts ou uma quantidade X de dados, não necessariamente funcionará bem com uma escala maior.
Algumas ideias para você explorar:
Em geral, você deve ser capaz de descrever alguns designs, projetos, arquiteturas, ... que você realizou.
Algumas entrevistas se concentrarão em ferramentas ou tecnologias específicas. Quais ferramentas? isso é baseado principalmente em uma combinação do que você mencionou em seu C.V. e aquelas que são mencionadas na descrição da vaga e usadas na empresa. Aqui estão algumas perguntas que acredito que qualquer um deveria saber responder sobre as ferramentas com as quais ele/ela está familiarizado(a):
Vamos nos aprofundar nos passos práticos de preparação
Esta é uma maneira muito comum de entrevistar hoje para cargos de DevOps. O candidato recebe uma tarefa que representa uma tarefa comum de Engenheiros de DevOps ou um conhecimento comum e o candidato tem várias horas ou dias para realizar a tarefa.
Esta é uma ótima maneira de se preparar para entrevistas e eu recomendo experimentá-la antes de realmente entrevistar. Como? Pegue os requisitos das descrições de vagas e converta-os em cenários. Vamos ver um exemplo:
"Conhecimento em CI/CD" -> Cenário: crie um pipeline de CI/CD para um projeto.
Neste ponto, algumas pessoas perguntam: "mas que projeto?" e a resposta é: que tal o GitHub? ele tem apenas 9125912851285192 projetos... e uma maneira gratuita de configurar CI para qualquer um deles (também uma ótima maneira de aprender a colaborar com os outros :) )
Vamos converter outro cenário:
"Experiência com provisionamento de servidores" -> Cenário: provisione um servidor (para torná-lo mais interessante: crie um servidor web).
E o último exemplo:
"Experiência com scripting" -> Cenário: escreva um script. Não perca muito tempo pensando "que script devo escrever?". Simplesmente automatize algo que você está fazendo manualmente ou até mesmo implemente sua própria versão de pequenas utilidades comuns.
Começar um projeto de DevOps é uma boa ideia porque:
O mesmo aqui, não pense demais sobre o que seu projeto deve ser. Apenas vá e construa algo :)
Faça uma lista de exemplos de perguntas de entrevista sobre vários tópicos/áreas como técnica, empresa, cargo, ... e tente respondê-las. Veja se você consegue respondê-las de forma fluente e detalhada.
Melhor ainda, peça a um bom amigo/colega para desafiá-lo com algumas perguntas. Sua autoconsciência pode ser um obstáculo na autoavaliação objetiva do seu conhecimento :)
Para aqueles que frequentam meetups e conferências técnicas, pode ser uma ótima oportunidade para conversar com pessoas de outras empresas sobre seu processo de entrevista. Mas não comece com isso, pode ser bem estranho. Diga pelo menos olá primeiro... (:
Fazer isso pode lhe dar muitas informações sobre o que esperar de uma entrevista em algumas empresas ou como se preparar melhor.
Pode parecer trivial, mas a ideia aqui é simples: esteja pronto para responder a qualquer pergunta sobre qualquer linha que você incluiu em seu currículo. Às vezes, os candidatos ficam surpresos quando são questionados sobre uma habilidade ou linha que parece não estar relacionada à posição, mas a verdade simples é: se você mencionou algo em seu currículo, é justo perguntar sobre isso.
Esteja familiarizado com a empresa na qual você está entrevistando. Algumas ideias:
Pela minha experiência, isso não é feito por muitos candidatos, mas é uma das melhores maneiras de mergulhar em tópicos como sistema operacional, virtualização, escala, sistemas distribuídos, etc.
Na maioria dos casos, você se sairá bem sem ler livros, mas para as entrevistas AAA (nível mais difícil) você vai querer ler alguns livros e, no geral, se você aspira a ser um Engenheiro de DevOps melhor, livros (também artigos, posts de blog) são uma ótima maneira de se desenvolver :)
Embora não seja um passo de preparação, você deve saber que conseguir um emprego de DevOps como primeira posição pode ser desafiador. Não, não é impossível, mas ainda assim, como o DevOps abrange muitas práticas, ferramentas, ... diferentes, pode ser bastante desafiador e também avassalador para alguém tentar alcançá-lo como primeira posição.
Um caminho possível para se tornar um engenheiro de DevOps é começar com uma posição diferente (mas relacionada) e mudar de lá após 1-2 anos ou mais.
Algumas ideias:
As entrevistas de DevOps podem ser muito diferentes. Algumas incluirão perguntas de design, algumas se concentrarão em codificação, outras incluirão perguntas técnicas curtas e você pode até ter uma entrevista onde o entrevistador apenas repassa seu currículo e discute sua experiência passada.
Existem algumas coisas que você pode fazer sobre isso para que seja uma experiência menos avassaladora:
Algumas pessoas tendem a ver as entrevistas como um caminho de mão única de "Determinar se um candidato é qualificado", mas na realidade, um candidato também deve determinar se a empresa na qual ele/ela está entrevistando é o lugar certo para ele/ela.
Boa sorte :)