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