Trabalhe remotamente e ganhe em dólar com Programação – pt 6
Antes de qualquer coisa, gostaria de salientar a razão por estar escrevendo um post dedicado para entrevista técnica, uma vez que já publiquei outro sobre entrevistas em geral. O motivo é o fato de muitos desenvolvedores serem desclassificados nos primeiros 15 minutos de conversa e perder todo o tempo e esforço empregados no processo seletivo. Por isso , a devida preparação é a chave para o sucesso.
Prepare-se com antecedência
- Revise a descrição da vaga pretendida, assim como as tecnologias e habilidades necessárias. Ao fazer isso você terá um direcionamento para se preparar;
- Para cada tecnologia e habilidade, faça uma lista dos principais conceitos, ferramentas e processos que tem a maior probabilidade de serem abordados;
- Crie um documento ou anote em um caderno tudo o que você sabe sobre os tópicos listados no passo anterior;
- Pesquise em fontes confiáveis sobre os assuntos listados e compare as informações com as suas anotações.
O que você escreveu cobre os principais conceitos?
Quais assuntos você não conseguiu explicar de maneira clara e objetiva?
Você conseguiria explicar determinado conceito para alguém leigo na área? - Pratique com alguém as respostas em inglês e seguindo as dicas dos terceiro post da série, clique aqui para acessá-la.
Observação: prepare-se para falar tecnicamente sobre projetos anteriores, e tenha rodando no dia da entrevista exemplos do que foi feito, se possível.
Exemplo prático
Para uma vaga com os seguintes requisitos:
Vaga para dev front-end React
Requisitos
- JavaScript
- Saber consumir API Rest com Axios
- Saber criar e manter aplicações reativas com React
- Familiaridade com ambiente de desenvolvimento em NodeJS
- Noções básicas de GIT
- Operações básicas para versionamento
- SQL
- Saber conectar e consumir dados de um banco SQL com JS
Diferenciais
- Experiência com Gitflow
- Experiência com banco de dados PostgreSQL
- Experiência com CI/CD
- Experiência com metodologia ágil (preferencialmente SCRUM)
- Experiência com desenvolvimento de software em modelo SAAS
Quais assuntos você iria revisar 🤔?
Se fosse eu me preparando para esta vaga, focaria inicialmente nas habilidades CORE dela que são:
React
- Gerenciamento de estado/sincronização com o back-end
- Redux
- Contexto do React
- Hooks
- useState
- useEffect
- useReducer
- Ciclo de vida de apps Angular (se houvesse tempo)
Angular (contraponto ao React, se houvesse tempo)
- Técnica diferente para contraponto (se houvesse tempo)
- Gerenciamento de rotas
- Validação de formulários
- Estilização
- JSX
- Typescript
Git e Colaboração em Equipe
- Git básico
- Comandos essenciais do Git
- Colaboração em equipe
- Gerenciamento de branches
- Pull requests
- Revisão de código
Desenvolvimento Web
- Conceitos básicos sobre HTTP
- Métodos mais utilizados
- GET
- POST
- PUT
- PATH
- Básico sobre Axios e como utilizá-lo
- Autorização/autenticação
- JWT
Metodologias de Desenvolvimento
- SCRUM
- Conceitos básicos e ideia por trás do Scrum
- Como o Scrum possibilita equipes a trabalharem remotamente
- O que é uma sprint, tempo médio de duração
- O que são story points e como quantificar o tempo de uma task através deles
- Cerimônias básicas do Scrum
- SCRUM
Bancos de Dados
- SQL
- Básico de SQL
- Quando utilizar SQL ou No-SQL
- SQL
Fora os itens listados acima, ainda precisaríamos cobrir os diferenciais. Então fica claro que a preparação precisa ter bastante antecedência, caso contrário você será eliminado nas primeiras perguntas.
No dia da entrevista
É muito comum a ansiedade por conta da entrevista técnicas que nada mais é uma forma de avaliar suas capacidades e experiências prévias. Para diminuir o nervosismo, além de estudar bastante os assuntos relacionados a vaga, eu faço o seguinte:
- Traga a conversa para os seus termos: toda vez que o(a) entrevistador(a) lhe fizer uma pergunta, tente explicá-la dando exemplos de como você resolveu alguma situação em projetos anteriores utilizando tal temática. Isso lhe trará mais confiança e conforto para discorrer sobre o assunto.
- (Infelizmente aqui estou pressupondo que você é um profissional com experiência prévia)
Encare o(a) entrevistador(a) como um agente facilitador: em geral neste ponto do processo seletivo, a pessoa que irá lhe avaliar geralmente é alguém da equipe técnica da empresa, em outras palavras, o seu futuro parceiro de trabalho. Então encare essa pessoa como tal, ao invés de alguém que irá lhe impedir de conquistar a vaga almejada. - Faça perguntas sobre o projeto que você fará parte: em momentos adequados, fazer este tipo de pergunta além de mostrar interesse de sua parte, serve também para transferir a responsabilidade da conversa de você para o entrevistador.
Live coding
Conforme mencionado no início deste post, em alguns casos pode ocorrer da entrevista técnica acontecer no formato de Live coding. Apenas para contextualizar:
As organizações estão cortando custos e reduzindo o número de funcionários para manter seus negócios eficazes durante a crise, para tanto, elas mudaram a maneira como contratam novos funcionários.
Este fato está se tornando aparente pela razão de que muitas delas estão realizando live coding ao invés de projetos take-home. É assim que os empregadores estão tentando garantir uma contratação de qualidade.
Embora esta prática possa não ser um bom critério para avaliar as habilidades técnicas do candidato e entender o valor que ele pode oferecer como membro da equipe, ela diz muito sobre o candidato.
As dicas que trago para o live coding são as seguintes:
- Pratique muito! por mais simples que possa parecer, a coisa mais importante a fazer é praticar. Mesmo que você tenha muita experiência em programação, talvez não esteja acostumado a codificar com alguém observando a sua tela.
- Não vá direto para a codificação: durante a entrevista, muitos desenvolvedores tendem a pular direto para o desafio, codificando desde o início. Embora a ânsia de mostrar suas habilidades de codificação possa levá-lo nessa direção, é melhor dar um passo atrás, separar um tempo e discutir o problema em questão. Tire todas as suas dúvidas, pois isso não apenas fornecerá uma compreensão mais completa do que é esperado, mas também permitirá que você evite quaisquer armadilhas durante o desafio.
- Mantenha a simplicidade da solução: no live coding, ninguém realmente espera que você escreva um código 100% correto. O mais importante é ter um código que seja executado no final do desafio, mesmo que a solução em si esteja abaixo do ideal.
Durante o desafio, demonstre como você pensa sobre o problema, como o divide em partes e como trabalha para encontrar a solução. Torne-o eficiente e demonstre que você é capaz de produzir uma solução bem pensada e projetada. - Estabeleça uma conexão com o entrevistador: no início do live coding, certifique-se de criar uma conexão com o entrevistador. Faça o máximo de perguntas possível. Eles querem ver como você pensa e o guiarão para chegar à solução. Não tenha vergonha de perguntar se a abordagem é o que ele espera de você.
- Escreva uma solução antes de explicá-la ao entrevistador: um dos desafios do live coding é transitar entre escrever código e falar sobre código com o entrevistador. Para desenvolvedores que não são treinados, essa prática interrompe o fluxo da codificação, fazendo com que eles pulem etapas no live coding que não pulariam em um ambiente real.
Para ir além
Recomendo rever as dicas e informações sobre entrevistas em geral, elas serão de grande utilidade para a entrevista técnica também.
"componet card aqui"
Espero que estejam gostando do conteúdo disponibilizado para vocês, esperamos que os mesmos estejam agregando conhecimento e sendo úteis na sua carreira. Agradeço se puderem compartilhar este conteúdo nas suas redes sociais!
Aguardem os próximos posts com conteúdos exclusivos que estamos planejando para as próximas semanas!
Até logo!
Igor Augusto Brandão
#igorabrandaoHello, world! My name is Igor and I am a system analyst professional with degrees in Systems Analysis, Business Administration, Information Technology, a specialization of IT applied to the Legal Area, an MSc in Bioinformatics, and +10 years of experience working with systems development.