Pular para o conteúdo

Pilares de Estudo para Programar

Quem está começando costuma sentir que precisa aprender tudo ao mesmo tempo: uma linguagem, um framework, banco de dados, Docker e mais aquela ferramenta que apareceu na semana passada. Esta nota propõe outro ângulo: separar o que muda toda hora do que muda devagar, e dar mais tempo de estudo para o segundo grupo. Não tem código aqui, é um mapa.

Uma forma de organizar os estudos é dividir em sete pilares. É um modelo informal, comum em conteúdo para quem está entrando na área, e não um padrão oficial. Serve como checklist para perceber o que está faltando:

  1. Lógica de programação: montar uma sequência coerente de instruções para resolver um problema, em qualquer linguagem (veja Lógica de Programação e Pensamento Computacional).
  2. Algoritmos e estruturas de dados: como organizar dados e como resolver problemas sobre eles gastando pouco tempo e memória (o resto desta seção do lab).
  3. Pensamento computacional: abstrair, automatizar e analisar, o raciocínio por trás do código.
  4. Prática constante (hands-on): escrever, quebrar, consertar. Ler sobre nadar não ensina a nadar.
  5. Padrões e heurísticas: reconhecer que um problema novo se parece com outro que você já resolveu.
  6. Fundamentos de sistemas: rede, banco de dados e arquitetura, tudo que existe ao redor do seu código.
  7. Aprendizado contínuo: a tecnologia muda, então saber aprender vale mais do que saber uma ferramenta específica.

Frameworks e bibliotecas mudam rápido. Um projeto que hoje é padrão do mercado pode estar em declínio daqui a poucos anos. Já as ideias que ficam por baixo demoram muito mais para mudar: uma tabela hash funciona hoje como funcionava décadas atrás, e um banco de dados ainda precisa lidar com concorrência e consistência.

O que costuma permanecer útil, independente da moda:

  • estruturas de dados e algoritmos
  • redes e protocolos (como o HTTP)
  • banco de dados e transações
  • sistemas distribuídos
  • arquitetura de software

Quem tem essa base costuma aprender um framework novo mais rápido, porque reconhece as ideias que ele reaproveita. O caminho inverso é mais difícil: dá para usar um framework por anos sem entender o que ele faz por baixo, e o desconforto aparece quando algo quebra de um jeito que a documentação não previu.

Estudar mais horas não garante evoluir. O conceito de prática deliberada, descrito pelo psicólogo Anders Ericsson e colegas em 1993, diz que o que melhora o desempenho é uma prática desenhada para isso: com meta específica, feedback rápido e foco no que você ainda não domina. Repetir o que já sabe fazer só confirma o que você já sabe.

Aplicado a programação, algo como:

  • resolver problemas de forma constante, e não só ler soluções prontas
  • implementar você mesmo, mesmo quando a biblioteca já traz pronto
  • comparar sua solução com outras e entender o trade-off entre elas (mais rápida, mais simples, mais legível?)
  • olhar para onde você trava e treinar justamente isso
  • refazer depois de um tempo, tentando melhorar

Uma ressalva importante: a famosa regra das “10 mil horas” é uma simplificação popular desse estudo, que foi feito com estudantes de violino e pianistas. O artigo original não afirma que existe um número mágico, e observa que sessões longas demais rendem pouco. Além disso, uma replicação publicada em 2019 (Macnamara e Maitra) encontrou que a prática explicava cerca de 26% da diferença de desempenho, contra 48% no estudo original. Ou seja, a prática pesa bastante, mas não explica tudo sozinha.

Em 1973, Chase e Simon mostraram uma coisa curiosa com jogadores de xadrez: mestres lembravam posições de partidas reais muito melhor que iniciantes, mas com peças espalhadas ao acaso a vantagem sumia. A explicação proposta é que o mestre não tem memória melhor, ele agrupa as peças em blocos (chunks) que já viu milhares de vezes e enxerga cada bloco como uma unidade só.

Em programação, vale a comparação: quem já resolveu vários problemas de “janela deslizante” reconhece o formato do enunciado sem começar do zero. Isso é uma analogia, e não um resultado demonstrado para código: a pesquisa foi feita com xadrez. Ela ajuda a explicar por que estudar padrões acelera, e o reconhecimento de padrões é o assunto de Padrões de Resolução de Problemas.

PilarOnde estudar
Lógica de programaçãoLógica e Pensamento Computacional
Algoritmos e estruturas de dadosNotas 03 a 10 desta seção, começando por Estruturas de Dados e Algoritmos
Pensamento computacionalLógica e Pensamento Computacional
Prática constanteNão cabe numa nota. Use a pasta examples/ do repositório e resolva os exercícios que aparecem ao longo desta seção
Padrões e heurísticasParadigmas de Projeto e Padrões de Resolução
Fundamentos de sistemasHTTP e REST, ACID, Escalabilidade, Consistência e Replicação e o restante do lab
Aprendizado contínuoÉ um hábito, não um assunto: acompanhar a documentação oficial e revisitar os fundamentos quando uma ferramenta nova aparecer