Ontem, no primeiro meetup da PythOnRio do ano, tivemos várias conversas bacanas. Uma delas foi sobre como entrar na área. Não acho que seja a dúvida de uma pessoa em específico, mas de um monte de gente, então resolvi transformar num blog post na tentativa de tirar a dúvida de mais gente :)

Os requisitos mudam de vaga pra vaga, e é importante você saber pra qual empresa você quer aplicar e quais os requisitos mínimos da vaga, claro, mas algumas coisas são bastante comuns e se aplicam a qualquer lugar que trabalhe com tecnologia.

Conhecimento básico de programação

Saber a sintaxe de uma linguagem de programação é importante. Lembrando que não precisa saber tudo, é sempre OK errar coisas simples como esquecer um ponto e vírgula, usar chaves ao invés de indentação. Pesquisar coisas relacionadas a bibliotecas porque você não lembra também é aceitável, não é aceitável não saber fazer um fluxo simples com if/else, while. Quando eu falo de fluxo simples, eu digo uma calculadora básica, por exemplo. Você tem que saber escrever ela tranquilamente na sua linguagem de escolha, mesmo que pesquise um erro ou outro na internet.

Saber ler os erros e tentar descobrir sozinho que está acontecendo antes de jogar na internet é uma coisa que te deixa super bem treinado pra resolver problemas no seu código. Usar a internet pra tudo não vai funcionar sempre e no trabalho você não pode jogar seu código pra outra pessoa de fora da empresa ver o que está dando errado. Você vai ter colegas de time que vão te ajudar, mas é importante tentar resolver antes. O erro fala com você, tente entender o que ele diz.

Se sua praia é back-end: faça um CRUD, com banco de dados, uma API RESTful. Se for uma pessoa mais ousada, faça um front-end mesmo que feio se não for a sua praia. Se sua praia é front-end/mobile: faça um front-end com mock da API. Se estiver se sentindo ousado, faça a API também. Vai ser legal. Se sua praia é dados: suba um jupyter notebook e plote gráficos relacionados a algum dado público. Faça isso algumas vezes, em projetos pequenos, públicos no seu github.

Aprenda testes unitários. Vale a pena esquecer TDD no início pra aprender a escrever testes, você volta em TDD depois.

E versione seu código, pelo amor de tudo que te for mais sagrado.

Soft skills

Não seja uma pessoa babaca. Isso geralmente significa:

  • Aprender a trabalhar em time.
  • Tentar fazer pair-programming sempre que possível.
  • Tentar ajudar as pessoas ao seu redor, e não apenas sugar o conhecimento delas. Sempre tem alguém que sabe menos do que você.

Além disso, é importante saber pedir ajuda e se comunicar. Se a pessoa não entendeu a sua dúvida, tente refrasear ela.

Dicas pro desafio técnico

  • Escreva um README. Leia ele. Peça pra uma pessoa de confiança ler e seguir o README. Se você não teve tempo de ler, peça mais um dia pra entregar o desafio.
  • Tente utilizar Docker, sempre que possível, pra pessoa que está avaliando conseguir rodar seu projeto independente da stack.
  • Escreva testes unitários.
  • Seu código precisa rodar da forma que está descrito no README, no computador de quem for avaliar.
  • Hospede seu desafio, sempre que aplicável.
  • Faça o melhor código que você conseguir, mas deixe-o simples.

O que eu fiz quando queria um emprego na área

  • Aprendi uma linguagem de programação de forma mais focada e aprendi a resolver problemas simples e comuns com ela: ler entrada e saída, ler arquivos, percorrer listas, fazer operações com strings e números.
  • Fiz um curso que me deu todo o panorama de como as coisas se conectam na Web e me ensinou a fazer o básico em tudo: front-end, back-end (API) e banco de dados.
  • Aprendi sobre metodologias ágeis e sobre como trabalhar em time.

Leitura recomendada