Aprende algumas técnicas gerais de resolução de problemas que te podem ajudar a programar.
Como diz o primeiro artigo desta página, resolver problemas é uma meta-competência.
Reparamos que, muitas vezes, a sintaxe ou a estrutura de uma linguagem de programação não é a parte mais difícil de resolver um desafio: o mais difícil é perceber o que programar ou por onde começar.
Desenvolver estratégias e um sistema para dividir os problemas em passos que se possam programar é uma excelente competência a cultivar.
Em baixo encontras alguns artigos, vídeos e livros sugeridos pela comunidade que te podem ajudar a desenvolver esta super-competência.
- O Free Code Camp tem um bom artigo de visão geral sobre How to Think Like a Programmer - Lessons in Problem-Solving.
- Jeremy Howard, fundador da fast.ai, tem um bom resumo das técnicas de resolução de problemas de G. Polya.
- Escrito originalmente em 1945 como guia para resolver problemas de matemática complicados, o How To Solve It, de G. Polya (livro completo) continua a dar excelentes conselhos sobre resolução de problemas em geral.
- Kurtis Pykes, a escrever para a Towards Data Science, tem um bom tutorial prático de resolução de problemas.
- Referido no artigo do Free Code Camp, o Think Like a Programmer: An Introduction to Creative Problem Solving, de V. Anton Spraul, é uma abordagem mais moderna e mais focada na programação dos mesmos métodos gerais que Polya descreve para a matemática.
- A Felienne Hermans está mais focada em como as pessoas aprendem a arte de programar e em como isso se relaciona com a aprendizagem em geral.
Escreveu The Programmer's Brian, com estratégias para ler melhor o código, pensar de forma clara sobre o código, escrever melhor código e tornar-te um melhor colaborador em código.
- O Algorithmic Thinking (Daniel Zingaro), da No Starch Press, e o How to think like a programmer (Paul Vickers) também abordam a resolução de problemas na programação.
- O Computational Thinking: A beginner's guide to problem-solving and programming (Karl Beecher) e o Computational Thinking for the Modern Problem-Solver (Riley and Hunt) oferecem também estratégias para pensar nos problemas e dividi-los em partes até chegar a soluções de código.
- O From Computing to Computational Thinking (Paul S. Wang) é um pouco mais generalista e académico, mas apresenta estratégias e estruturas de resolução de problemas que se podem aplicar a muito mais do que a programação, e não exige conhecimentos prévios de programação.
Alguns destes livros também podem ser lidos através da biblioteca da Association of Computing Machinery (ACM).
Encontras informações sobre a adesão (paga) em acm(dot)org.