Segunda Linguagem
Se você iniciou seus estudos usando essa trilha de estudos, você aprendeu apenas uma linguagem de programação até agora: Javascript.
Ainda que existam desenvolvedores que dominam apenas uma única linguagem, usar mais linguagens abre um ecossistema de oportunidades para você.
Além disso, é uma oportunidade para você solidificar ou adquirir novos conceitos de programação, como por exemplo a tipagem e a orientação a objetos.
Minha recomendação é escolher uma entre as quatro: Java, C#, PHP ou Python.
- Java é muito usada em diferentes tipos de sistemas, como desenvolvimento nativo de aplicativos para Android, softwares empresariais, servidores "não-web" e outros.
- C# é muito usada para desenvolvimento de jogos com a engine Unity, mas também usada em muitos outros contextos.
- PHP é limitada a web, mas se destaca pela simplicidade de desenvolver aplicações completas.
- Python também é muito usada para automações, análise de dados e inteligência artificial.
Java e C# são as linguagens mais populares no mercado de trabalho, seguidas pelo PHP e, por último, o Python.
Em algum momento após dominar uma das linguagens, considere voltar ao Javascript, de preferência utilizando a sua versão tipada Typescript, pois o mercado do NodeJS é muito grande.
Não tenha medo de fazer uma escolha "errada". Grande parte dos conhecimentos que você vai adquirir aqui são transferíveis a uma outra tecnologia. Depois de aprender, por exemplo, Java com Spring, você vai conseguir ser produtivo com NodeJS com NestJS muito mais rápido.
Também não fique travado querendo escolher a "linguagem perfeita". Todas elas são boas e ruins ao mesmo tempo, cada uma à sua própria maneira.
Além de escolher uma linguagem, sua tarefa é:
- Aprender sua sintaxe, funcionalidades e particularidades
- Aprender tipagem e programação orientada a objetos
- Compreender suas ferramentas de build, de debugging, de gerenciamento de pacotes e o ambiente de execução
- Conhecer o ecossistema da linguagem e bibliotecas comuns
- Utilizar ferramentas como o SonarQube e linters como ESLint, PHPStan e Mypy
- Utilizar ferramentas de testes automatizados
Apesar de não te passar exercícios específicos para resolver, recomendo realizar atividades como:
- Refazer ou resolver novos exercícios do Beecrowd
- Implementar estruturas de dados como listas encadeadas, filas, pilhas
- Implementar algoritmos de interação com suas estruturas de dados, como busca e ordenação
Você pode ir mais a fundo com atividades como:
- Implementar estruturas de dados como hash tables, árvores ou grafos
- Compreender as técnicas mais comuns de solução de problemas, como recursão, programação dinâmica, divisão e conquista, algoritmos greedy, força bruta, sliding window, BFS, DFS e outros
- Implementar soluções de problemas clássicos, como o "Caminho Mínimo" e o "Problema do Caixeiro Viajante"
Depois disso, desenvolveremos uma aplicação web utilizando o framework respectivo da sua linguagem escolhida:
- Spring Boot (Java)
- .NET (C#)
- Laravel ou Slim (PHP)
- Django ou Flask (Python)
- NestJS ou Express (Typescript)
Para compreender melhor os frameworks, estude o próximo capítulo: Leitura de Códigos