Como alguém que focou muito em Projetos e não em Algoritimos e Estruturas pode "correr atrás do prejuízo"
Oi gente, meu nome é luis mas pode me chamar de luisinho tenho 20 anos, sou dev flutter a 1 ano e já estou no meu segundo emprego.
Durante meu inicio na programação decidir focar mais nos aspectos práticos (como fazer um projeto e tals) do que estudar a base (algorítmos e estrutura de dados), não que eu não tenha estudado, mas estudei muito pouco.
A minha experiência com algoritmos na faculdade foi simplesmente catastrófica, peguei um professor que usou dois semestres para ensinar um For, e o outro semestre, onde supostamente veríamos coisas super importantes, como Árvores e Grafos, simplesmente decidiu não ensinar isso e fazer um projeto em BLAZOR.
Hoje com 1 ano de mercado sinto que esse conhecimento me faz bastante falta, e percebi que não faz somente falta pra mim, mas pra várias pessoas.
Agora minha dúvida é, como eu posso correr atrás desse prejuízo? Como vocês fazem pra estudar algoritmos e estrutura de dados?
Qualquer ajuda ou resposta é bem vinda, vlw.
Fique tranquilo, você ainda tem pouco tempo no mercado e não está no prejuízo. Se você sabe resolver problemas, já está muito a frente de muitos. A grande arte de programar é justamente essa, ter a capacidade de elaborar soluções.
Em todo caso, existem várias opções para você explorar esse conteúdo. Recomendo verificar a plataforma Udemy, por lá tem vários e vários cursos (bem baratos e vários muito bons, principalmente em inglês). Você encontra de todo, desde algoritmos, a estrutura de dados ou lógica aplicada. Esse aqui é muito bom.
Outra coisa que ajuda muito é ir realizando desafios, pois enquanto você programa já vai aprendendo. Esse artigo tem uma lista bem legal com 21 plataformas on-line de desafios, algumas pagas e outras gratuitas. Nessas plataformas, você tem que criar algoritmos.
Minha sugestão seria você se cadastrar no HackerRank (https://www.hackerrank.com/) e praticar lá. Eles tem muito conteúdo, em várias linguagens, validam automaticamente teu código e você ganha pontuação para cada coisa que acerta, então você estaria aprendendo na prática e ainda teria o incentivo da gamificação para manter o foco...
Há diversas fontes na qual você pode escolher para aprender e se aprofundar em algoritmos e estruturas de dados.
Posso sugerir:
PDFs de Universidades: se tu procurar "algoritmos pdf", tu consegue achar materiais gratuitos e com exercícios.
Youtube: Tem muito material gratuito de qualidade. Também há aulas de universidades.
Assim que você for aplicando os conhecimentos, a ideia de utilizar algoritmos ou estruturas de dados para resolver os problemas vai vir naturalmente.
Vou deixar essa playlist aqui, ela é sobre estruturas de dados: https://www.youtube.com/watch?v=-twvgnfOnVQ&list=PLrOyM49ctTx_AMgNGQaic10qQJpTpXfn_&index=1
Além da playlist, é legal praticar o aprendizado no haackerhank, leetcode, etc...
Por exemplo, na playlists existem auals de pilhas. Após estudar os video, vá no leetcode, por exmeplo, e busque exercícios com pilhas. E assim pode ir fazendo para as outras aulas.
Eu também sempre foquei em projetos, e na faculdade eu até fiz alguns trabalhos come estruturas de dados, mas só agora que já tenho quase 3 anos tabalhando é que sinto falta de um conhecimento mais aprofundado nessa parte.
Muito simples, estudando!!!
O livro "The Art of Computer Programming" de Donald Knuth é a referência clássica na área de algoritmos. Embora seja rigoroso e matematicamente exigente, é a melhor fonte fonte de conhecimento sobre o assunto.
O livro "Introduction to Algorithms" de Cormen et al é outra excelente escolha, conhecido por ser mais acessível do que o livro de Knuth. Ele tambêm fornece uma introdução sólida e extensiva aos algoritmos e estruturas de dados.
Ambos os livros mencionados têm muitos exercícios. Resolva-os!