Executando verificação de segurança...
4

Existem formas no campo teórico e no campo prático. No campo teórico, recomendo estudar Estrutura de Dados e Matemática Discreta. Nesses estudos não subestime o poder da literatura. Alguns livros são caros, mas valem muito mais do que alguns cursos ainda mais caros. São eles:

  • Lógica de Programação e Estruturas de Dados - Sandra Puga e Gerson Rissetti;
  • Matemática discreta: Uma introdução - Edward Scheinerman;
  • Entendendo Algoritmos: Um Guia Ilustrado Para Programadores e Outros Curiosos - Aditya Y. Bhargava.

Quando estava na universidade fazia muitas leituras e isso simplesmente deslanchou meu estudos. Até hoje continuo lendo. Muitos dos cursos que estão pela internet tem a fundamentação teórica que estão nos livros, outros seguem vozes da minha cabeça. Por isso é importante saber escolhe-los também.

No campo prático, a melhor forma é fazendo desafios. A plataforma que eu recomendo é a BeeCrowd. Ela tem centenas de desafios para todos os níveis e você pode resolvê-los em qualquer linguagem. Ela é toda em português e extremamente fácil de utilizar. O foco dela é justamente você resolver problemas construindo algoritmos e nada melhor que a prática para melhorar sua lógica. Ao final ela dá a resposta para você.

O que eu não recomendo é subir um projeto, fazer um clone disso ou daquilo, porque embora tenha muita lógica agregada, são processos indiretos e servem para melhorar suas habilitades com a stack completa e não com algoritmos.

1

Caíque, como um grande empreendedor da área, o que você acredita que valha mais a pena priorizar o tempo? Em algoritmos, lógica forte, ou nos projetos e seus processos em si? Os dois têm suas vantagens, claro, acredito que pelo ensino da faculdade ser essencial para construir grandes projetos futuramente valha mais a pena investir nos algoritmos. Porém, às vezes bate aquele dilema "e o quanto estou priorizando o portfólio?". Enfim, não é uma terceirização de decisão, apenas uma curiosidade, como lidaria entre priorizar aprender algoritmos resolvendo leetcode ou projetos para o portfólio?

1

Depende do seu nível de experiência. No meu ciclo de vida como desenvolvedor, iniciei com foco na engenharia de software: arquitetura, paradigmas, diagramas, algoritmos, processos e afins. Quando você aprende muito bem toda essa base, os desafios se tornam mais interessantes e mais tranquilos de lidar.

A meu exemplo, já trabalhei com 13 linguagens de programação diferente e estou sempre pulando para uma nova em projetos pessoais. Como consolidei uma base muito forte sem depender de uma linguagem em específico, consigo transitar muito bem entre elas.

A questão do portfólio é muito subjetiva na verdade. Muitos acabam considerando que portfólio é sentar em criar uma stack completa (clone de sei lá o que, por exemplo). Mas, portfólio também é código, também é algoritmo. Você pode muito bem subir no seu GitHub algoritmos de busca, estruturas de dados, etc, em diferentes linguagens. Para se exercitar e mostrar como você coda.

Nas minhas últimas férias, estava fazendo no GitHub alguns desafios do florinpop17. Também é uma boa opção. Muitos dos desafios exigem algoritmos e processos para serem resolvidos. Além disso você pode resolvê-los em qualquer linguagem. A parte chata é que você não vai ter uma solução exata como o BeeCrowd que avalia o seu desempenho. Mas, de resto, vale a pena.

Em resumo, se te falta a base da engenharia de software, eu recomendaria pelo menos 50% (ou mais) do seu tempo em estudo gasto nisso. Se você já tem uma boa base, aí sim começe a desenvolver aplicações completas e os desafios que passei são uma boa oportunidade para isso.

1

Muito obrigado caique é uma grande honra receber uma resposta de vc, seus posts me ajudaram muuuuito, ansiso pelas próximas postagebs.
A leitura com certeza e algo muito importante, so de começar a ler mais postagens aqui no tabnew as suas principalmente abriram muito a minha mente, com certeza vou aplicar isso no estudo de algoritmo também. Com certeza vou começa a aplicar suas dicas.