Na primeira parte da nossa série mostramos que o trabalho do programador é muito mais do que apenas escrever código.
Falamos sobre os primeiros dias em uma empresa de software, sobre a diferença entre a faculdade e projetos reais, e por que a experiência é adquirida principalmente através da prática.
Hoje vamos para a pergunta que quase todo Júnior se faz. O que eu realmente devo aprender?
A internet dá sugestões para tudo. Uns dizem que é essencial conhecer React. Outros afirmam que o futuro pertence ao Rust. Outros ainda garantem que sem Docker, Kubernetes e cinco certificados não vale a pena enviar o currículo.
A verdade é bem mais tranquila...
Não aprenda frameworks. Aprenda programação.
Essa frase pode soar estranha.
Afinal, as empresas anunciam vagas para Desenvolvedor React, Desenvolvedor Java ou Desenvolvedor PHP.
Por que então dizemos para não começar pelos frameworks? - Porque um framework é uma ferramenta. E ferramentas mudam muito rápido.
Há alguns anos muitas pessoas acreditavam que o AngularJS dominaria por décadas. Hoje isso é completamente diferente.
Você vai aprender frameworks durante toda a carreira. Já a forma de pensar do programador fica com você para sempre.
Por isso, primeiro aprenda a:
- resolver problemas,
- analisar requisitos,
- projetar soluções,
- ler código de terceiros,
- escrever código legível.
A tecnologia é apenas um meio para alcançar um objetivo.
Domine verdadeiramente uma linguagem
Esse é provavelmente o erro mais comum dos iniciantes.
Hoje JavaScript. Amanhã Python. Depois de amanhã Go. Semana que vem Rust. Em um mês C#...
Depois de dois meses percebe-se que nenhum deles foi dominado em um nível satisfatório. Muito melhor escolher uma linguagem e realmente aprendê-la.
Entender:
- como funciona a memória,
- o que são referências,
- como tratar exceções,
- como funcionam coleções,
- qual a diferença entre programação síncrona e assíncrona,
- como funciona o debug.
Quando você dominar bem uma linguagem, aprender as próximas será muito mais rápido.
Aprenda a ler documentação
Pouco glamouroso? Muito.
Extremamente útil? Ainda mais.
Um bom programador não lembra de tudo. Um bom programador sabe onde encontrar a resposta confiável.
A documentação do fabricante do framework ou da biblioteca quase sempre será uma fonte melhor do que uma postagem aleatória em um fórum de seis anos atrás.
Essa habilidade de pesquisar informações diferencia quem se desenvolve daqueles que ficam copiando soluções encontradas na internet sem fim.
Git não é o botão "Enviar"
Se tivéssemos que indicar uma habilidade para aprender o quanto antes, seria Git. Não porque é moda. Porque praticamente toda equipe de desenvolvimento o usa.
Git não é apenas salvar mudanças. É uma forma de colaboração. Branching. Pull Request. Merge. Resolução de conflitos. Histórico de mudanças.
Sem isso é difícil imaginar trabalhar em uma equipe profissional.
E mais um conselho. Nunca envie um projeto em um arquivo ZIP. Sério.
SQL - mesmo que você não queira ser administrador de banco de dados
Muitos Juniores evitam SQL. Isso é um erro.
A maioria das aplicações empresariais usa bancos de dados. Você não precisa se tornar um expert em otimização de queries.
Mas deve entender:
- o que é um banco de dados relacional,
- como funcionam as relações,
- o que é um índice,
- qual a diferença entre LEFT JOIN e INNER JOIN,
- por que uma query mal escrita pode deixar a aplicação inteira lenta.
Esse conhecimento será útil em quase todo projeto.
Linux não morde
Você não precisa abandonar o Windows de imediato. Mas vale a pena aprender o básico do trabalho no terminal.
A maioria dos servidores roda em sistemas Linux.
Conhecer comandos básicos:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
pode economizar muito tempo.
No começo parece estranho. Após alguns meses é difícil imaginar o trabalho sem o terminal.
Docker - por que todos falam sobre isso?
Alguns anos atrás configurar um ambiente podia levar o dia todo.
Cada um tinha uma versão diferente do PHP. Um banco diferente. Bibliotecas diferentes.
Docker simplificou muito esse problema. Permite executar aplicações em ambientes idênticos independentemente do computador.
Um Júnior deveria se tornar especialista em conteinerização imediatamente? - Não.
Mas vale a pena entender o que é um contêiner e por que praticamente todo projeto moderno usa Docker.
IA é um ótimo mentor. Não o melhor programador.
Esse é um tópico que não dá para ignorar hoje em dia.
ChatGPT, GitHub Copilot e outras ferramentas de IA podem acelerar muito o aprendizado. Com uma condição: não copie código sem entender.
É muito melhor perguntar:
- Por que essa solução é melhor?
- Como esse algoritmo funciona?
- Como isso pode ser otimizado?
- Quais são as desvantagens dessa abordagem?
IA explica muito bem.
Mas não deve substituir o pensamento próprio.
O depurador é seu amigo
No começo a maioria dos programadores faz algo assim: var_dump($variavel);
Depois: echo $variavel;
E um pouco depois: console.log(dados);
console.log(dados2);
console.log(dados3);
console.log(dados4);
Todos nós começamos assim. Mas vale aprender o quanto antes a usar o depurador.
Ele permite parar o programa em qualquer ponto, inspecionar valores de variáveis e entender o que realmente acontece durante a execução do código.
É uma das habilidades que acelera muito o desenvolvimento.
Que equipamento escolher?
Aqui muita gente espera uma lista de computadores de vários milhares de reais. Desnecessário.
No começo, mais importante do que o processador mais novo são:
- um teclado confortável,
- um disco SSD rápido,
- quantidade adequada de memória RAM,
- um ambiente de trabalho estável.
Iluminação RGB colorida não acelera compilação. Três monitores tampouco tornarão o código melhor.
Bom equipamento deve ajudar no trabalho. Não impressionar em fotos (embora, vamos admitir, a aparência também importe ;) )
Glossário
Framework
Conjunto pronto de ferramentas e bibliotecas que facilita a criação de aplicações seguindo regras específicas.
Git
Sistema de controle de versão que permite acompanhar mudanças no código e colaborar com vários desenvolvedores em um projeto.
Docker
Plataforma que permite executar aplicações em contêineres isolados, fazendo com que o ambiente funcione de forma idêntica em máquinas diferentes.
Depurador
Ferramenta usada para analisar a execução de um programa passo a passo e localizar erros.
SQL
Linguagem usada para se comunicar com bancos de dados relacionais.
Resumo
Um bom programador não conhece todas as tecnologias. Não conhece todos os frameworks. Não memorizou toda a documentação.
Um bom programador tem fundamentos sólidos.
Sabe analisar problemas.
Sabe buscar informações.
Entende os princípios de funcionamento das tecnologias.
E por isso consegue aprender novas ferramentas rapidamente.
Frameworks vão mudar.
Linguagens vão evoluir.
A forma de pensar permanecerá como a habilidade mais valiosa por toda a carreira.
Na próxima parte mostraremos como é o trabalho cotidiano de um Desenvolvedor Sênior, por que Code Review é a melhor escola de programação, o que realmente é Clean Code e por que a frase "aqui funciona" provoca um sorriso nervoso em muitos desenvolvedores.
