2 pontos por GN⁺ 2025-07-18 | 1 comentários | Compartilhar no WhatsApp
  • A educação formal é útil para transmitir proficiência de forma eficiente, mas tem limitações para desenvolver a intuição necessária para resolver problemas inesperados
  • Tentativa e erro repetitiva com propósito (algoritmo) é o fator que mais eleva a proficiência, por meio do processo de falhar e corrigir em situações reais
  • Nos exemplos reais, figuras como Linus Torvalds e Margaret Hamilton passaram por falhas, superaram-nas e assim desenvolveram capacidades extraordinárias
  • A mentoria é um importante acelerador, mas a experimentação autodirigida e a experiência direta são o núcleo do crescimento definitivo
  • A experimentação orientada a objetivos, de enfrentar problemas de frente, quebrar coisas e resolvê-las por conta própria, é a base do verdadeiro aprimoramento técnico

A força que cria os melhores engenheiros de software: tentativa e erro com propósito

O mito da sala de aula

  • A educação formal é valiosa para transmitir conhecimento, mas é um processo otimizado para escalar
  • Ela empacota experiências práticas complexas em procedimentos bem refinados, num formato que pode ser concluído em um semestre
  • Nesse processo, é possível aprender a proficiência básica necessária no trabalho, mas há limites para construir a capacidade de resolver intuitivamente problemas em crises inesperadas
  • Especialmente quando um problema real acontece em produção às 3 da manhã, apenas a receita aprendida na sala de aula não basta para resolvê-lo

O crescimento real ao aprender enfrentando os problemas diretamente

Casos exemplares

  • Linus Torvalds criou o Linux ao reescrever o MINIX
  • Margaret Hamilton ajudou a criar o conceito moderno de confiabilidade ao corrigir problemas de código em tempo real no projeto Apollo
  • Incontáveis mantenedores de open source também cresceram quebrando o próprio laptop e depois consertando tudo de novo
  • Eles não começaram assistindo a aulas sequenciais; foi graças às falhas e ao impacto real delas que adquiriram competência profunda

Por que a tentativa e erro supera a receita

  1. O loop de feedback é imediato. Analisar um crash nos logs proporciona um aprendizado muito mais rápido do que um quiz
  2. Casos de borda aparecem naturalmente em ambientes reais, trazendo cenários de uso que nenhum material didático consegue imaginar
  3. Problemas resolvidos com dificuldade ficam profundamente na memória. Viram memória muscular
  4. Quando não existe um guia pronto, a criatividade se manifesta de forma explosiva

Reavaliando a mentoria: complemento, não substituto

  • Um bom mentor acelera o feedback e amplia a visão, mas, no fim, quem experimenta e vive a experiência é a própria pessoa
  • O code review tem valor por compartilhar os resultados do experimento, mas não substitui a experiência direta

Cultivando hábitos de experimentação autodirigida

  • Tente um projeto paralelo que o deixe um pouco desconfortável
  • Meça tudo para garantir dados analisáveis quando algo falhar
  • Impõe restrições como limitar frameworks ou concluir algo em 48 horas para desenvolver soluções criativas
  • Publique seu código para receber validação externa
  • Faça uma retrospectiva semanal para registrar as causas das falhas e o que foi aprendido

Resumo

  • Mentoria, cursos e blogs atuam como aceleradores, mas a verdadeira habilidade é construída no atrito intenso com os problemas do mundo real
  • Os melhores engenheiros alcançam resolução prática de problemas e crescimento por meio de tentativa e erro livre e com propósito
  • A experiência adquirida nesse processo se torna o maior ativo para o seu eu do futuro

1 comentários

 
GN⁺ 2025-07-18
Comentários do Hacker News
  • Eu mesmo sou um desenvolvedor autodidata e passei a maior parte da minha carreira em grandes empresas trabalhando com colegas formados em CS
    Pela minha experiência, desenvolvedores autodidatas, se tiverem inteligência suficiente, acabam encontrando uma solução para o problema dado
    Já os formados em CS muitas vezes nem tentam quando entram em uma área totalmente desconhecida para eles (claro, isso varia conforme o perfil; eu diria que uns 85% se encaixam nisso)
    Diante de muita incerteza, eles travam
    No fim, formados em CS se encaixam melhor em ambientes de grandes empresas, trabalhando dentro de padrões como engrenagens substituíveis
    Desenvolvedores autodidatas estão sempre inovando, tentando reduzir repetições ineficientes, e essa postura original acaba deixando os outros desconfortáveis
    Mas essas pessoas autodidatas acabam produzindo resultados muito melhores
    A maioria dos desenvolvedores parece valorizar mais manter o emprego e reduzir insegurança do que escrever código realmente excelente

    • Muitos engenheiros com formação formal também gostam de atacar problemas novos com vontade
      Isso parece menos uma questão de autodidatismo vs. formação formal e mais uma questão de perfil: curiosidade, dedicação, criatividade, inteligência etc.
      Pode ser que isso apareça com mais força entre autodidatas porque, para ter sucesso assim, eles necessariamente precisam dessas características
      Quando um engenheiro com formação formal também tem essas características, ele frequentemente tende a superar qualquer um dos dois grupos

    • Acho que a maior diferença provavelmente é de personalidade
      Eu, como autodidata, sempre me apoiei muito na diligência
      Talvez eu não tivesse uma visão técnica tão boa do “quadro geral”, mas em compensação eu tentava ser quem mais entregava resultado no time
      Já cheguei a montar três protótipos em poucos dias para testar na prática
      Meus colegas formados em CS faziam o design uma vez no quadro branco e depois implementavam o código uma vez só
      Os dois métodos nunca foram aplicados ao mesmo trabalho, então é difícil dizer qual gera resultados melhores
      Na minha cabeça, o meu método parece “testado no mundo real”
      É verdade que o método de CS era visto como o ideal
      Mas também acho que aprendi muito com a mentoria de engenheiros formados em CS
      Depois de uns 10 anos de experiência, independentemente de como a pessoa começou, todo mundo acaba ficando parecido e desenvolvendo uma intuição semelhante sobre qual é a “resposta certa”
      Talvez eu esteja romantizando ou generalizando um pouco; seria bom se outras pessoas complementassem isso nas respostas

    • Concordo em parte
      A maior parte dos currículos de CS é bem distante do trabalho real, então um diploma não é um indicador imediato de habilidade
      Mas não consigo concordar de jeito nenhum com a ideia de que 85% dos formados em CS não conseguem lidar com problemas desconhecidos
      Se existe uma virtude no diploma de CS, é que a trilha de engenharia inclui disciplinas extremamente exigentes em termos intelectuais
      É difícil acreditar que alguém capaz de passar por tudo isso não consiga atuar em desenvolvimento de software no trabalho real
      Quando você entra em áreas de desenvolvimento realmente difíceis, eu diria até que uma grande parte das pessoas tem diplomas avançados em CS
      Parece que essas características surgem em quem tem interesse profundo por software, e muitos deles também vêm de CS

    • Formados em CS nem sequer tentam resolver problemas desconhecidos
      Discordo fortemente disso
      Eu mesmo fui autodidata antes de tirar um diploma em CS
      Já passei um dia inteiro penando para implementar do zero código de travessia de grafos e detecção de loops
      Depois de cursar estruturas de dados e algoritmos, eu não levaria nem 2 segundos para tomar essa decisão
      Formados em CS sabem reunir informação de forma estruturada e também têm linguagem para discutir quando é preciso cavar mais fundo
      Na prática, seus colegas realmente não fazem nada e simplesmente passam adiante como “impossível”?
      Pela minha experiência, fugir da responsabilidade pelo problema varia mais conforme o nível júnior-pleno-sênior
      Quanto mais sênior, mais a pessoa assume a responsabilidade pelo problema
      (Meu analisador de pilha em C incluía parsing de código C, geração de grafo de chamadas e cálculo do pior uso de memória de pilha)

    • Pela minha experiência, autodidatas passam por uma seleção natural
      Ou seja, um autodidata que não consegue resolver problemas desconhecidos nem chega a ser contratado
      Quem vem de formação formal costuma ser mediano ou melhor, mas não necessariamente extraordinário
      Já alguém que descobriu tudo sozinho e ainda validou isso com formação universitária costuma demonstrar uma força absurda no trabalho real

  • Acho que o ponto central não é a forma de aprendizado, e sim a “paixão”
    Se a motivação é fraca, tanto faz o método de aprendizado: o limite aparece rápido
    Esse tema também tem um lado difícil de discutir numericamente
    A formação formal pode construir muito bem conceitos fundamentais como matemática, hardware, sistemas operacionais, compiladores etc.
    O autodidatismo é orientado a objetivos, então pode acabar ignorando fundamentos
    Quando você nem sabe o que não sabe, ter um bom mentor (professor, ótimo livro) economiza um tempo enorme
    Muitos engenheiros, inclusive eu, passam tanto por aprendizado formal quanto informal
    Quando existe paixão, a pessoa continua construindo coisas por conta própria e fazendo experimentos além do aprendizado formal
    O que realmente diferencia engenheiros excepcionais não é o tipo de formação, mas uma paixão muito clara
    Casos como Linus e Margaret também eram, no fim das contas, pessoas com um apetite gigantesco por aprender

    • Eu também, como programador autodidata, concordo totalmente
      Aprendo sozinho desde a era dos computadores de 8 bits dos anos 80, e nunca fiz faculdade
      Quando consegui meu primeiro emprego formal de programação aos 19 anos, eu já programava havia 9 anos
      Quando a maioria se formou na faculdade, eu já tinha quase 15 anos de experiência escrevendo código
      Acho difícil ignorar esse nível de paixão e iniciativa
      Ainda hoje, quase 40 anos depois, continuo gostando de software do mesmo jeito
      Acho divertido criar coisas, continuo lendo artigos acadêmicos, acompanhando a área, e ainda escrevo código demais
      Mas acho meio injusta essa ideia de que autodidatas não têm fundamentos
      Na prática, muitos autodidatas também exploram bastante a parte acadêmica — isso depende muito da área
      Pode faltar tempo para estudar algo com profundidade, mas depois de décadas de experiência, às vezes os fundamentos ficam até mais sólidos do que em quem só passou pela escola
      Também já contratei e demiti bastante gente, e muitas vezes autodidatas entregaram resultados melhores
      No fim, eles simplesmente tiveram muito mais tempo de “mão na massa” — a paixão acaba empurrando o volume de aprendizado

    • Essa parte de “quando você não sabe o que não sabe, é muito útil ter alguém te guiando com eficiência” faz muito sentido para mim
      Meu caso fica no meio do caminho entre formal e informal
      Nunca cursei matemática discreta avançada nem álgebra linear, então tenho muitas lacunas de base
      Às vezes nem sei quais termos devo pesquisar
      Em certas áreas, realmente é essencial ter orientação de alguém
      Já foi muito difícil até conseguir um tutor para validar programas de matemática vetorial quando eu já estava perto dos 40 anos

    • A paixão impulsiona o autodidatismo, mas no ambiente de sala de aula talvez ela seja menos necessária porque sempre existe alguém mantendo você nos trilhos
      E também existe autodidata “orientado a objetivos”, mas há autodidatas cujo objetivo é entender como o sistema funciona por dentro

    • Mesmo que alguém te leve à força até a água, isso não quer dizer que você nunca tenha ido sozinho até lá
      A diferença consistente é que todo autodidata, pelo menos uma vez, já foi até a água com as próprias pernas

    • Eu sou um caso híbrido de formação formal + autodidata
      Fiz muitas disciplinas na faculdade, mas não tirei o diploma porque não fui bem o bastante nas provas
      Só consegui aprender o resto por conta própria porque as aulas me deram a base necessária

  • Acho as aulas da faculdade realmente excelentes
    Se eu não soubesse absolutamente nada, nunca teria ido por conta própria atrás da API de sockets de C, de projetos em bash, de sistemas distribuídos, de estruturas de dados ou de algoritmos
    Na prática, entrevistei muitos autodidatas e pessoas vindas de bootcamp, e elas tendem a cavar só nas áreas em que já se sentem confortáveis, ou desmoronam facilmente diante de perguntas mais acadêmicas
    Por outro lado, quem passa pela faculdade sem realmente ter programado acaba tendo uma habilidade muito fraca, e mesmo durante a faculdade muita gente esquece tudo que aprendeu antes
    Acho que a melhor combinação é programar um pouco antes de entrar na universidade
    Você precisa ter sentido na pele a dor de bater cabeça sozinho para realmente internalizar as soluções teóricas e elegantes apresentadas na faculdade
    Quanto mais você sofreu com erros de gerenciamento de memória como os relacionados a RAII, mais fundo esse tipo de conceito entra em você

    • Pessoas de bootcamp e autodidatas devem ser tratadas como grupos diferentes
      Pode até haver gente talentosa saindo de bootcamp, mas entre as pessoas que conheci, muitas escolheram esse caminho por não conseguirem aprender sozinhas e por estarem tentando faculdade ou outra área antes, e bootcamp era só a alternativa mais barata
      Antigamente nem existiam bootcamps, e eu também evitava cursos online ou métodos tradicionais de estudo
      Eu queria construir algo incrível, e achava muito mais empolgante resolver problemas por conta própria do que simplesmente seguir apostilas e repetir tentativas
      Aprendi C sozinho quando era jovem porque havia coisas que eu queria fazer e que o material existente ou o código disponível simplesmente não permitiam, e eu queria tanto um resultado legal que tive de fuçar fóruns, ler documentação e chegar lá por tentativa e erro
      Acho que o mais importante não é o método de estudo, mas o desejo forte de aprender

    • Antes mesmo da faculdade, eu já dominava C, a API de sockets e já tinha experiência entregando software
      Eu tinha um amigo que ganhou dinheiro no ensino médio vendendo jogos para C64
      Nós dois estávamos muito à frente de iniciantes em termos de programação prática
      O que me faltava era mais a parte teórica: cálculo, álgebra linear, matemática discreta, e às vezes também algumas lacunas em estruturas de dados e algoritmos
      O curso de CS ajudou a preencher esses buracos, mas não melhorou minha habilidade de programar em si
      As matérias de programação não eram nada difíceis para mim, o que realmente pegava eram as disciplinas de matemática e teoria
      O curso de CS me tornou um engenheiro mais equilibrado, mas não um desenvolvedor melhor

    • Na minha época de universidade, o ambiente de CS era exatamente o oposto do que hoje se fala como vantagem do ensino superior

      • disciplinas feitas de propósito para reprovar alunos
      • aulas teóricas e pouco práticas, escolhidas pelos professores por diversão deles
      • um desenho de curso que tornava a área difícil de acessar
        Eu mesmo não escolhi CS na faculdade por esse motivo (hoje sou desenvolvedor sênior em empresa de tecnologia nos EUA), e naquela época CS, apesar de ser um curso de elite numa universidade excelente, tinha os piores índices de reprovação, desemprego e clima entre professores
        Claro que muita gente tirou muito valor da universidade, mas a realidade não é assim para todo mundo
        Muitos formados em CS com quem trabalhei tinham muita dificuldade em comunicação, entendimento de negócio e priorização de trabalho
        Muitas vezes só conseguiam escrever código (e às vezes nem isso muito bem), e sair de um curso de CS realmente pronto para o trabalho é mais raro do que se imagina
        Na verdade, acho que o formato universitário é um grande exemplo de permanecer na “zona de conforto”
    • Também é preciso reconhecer que o próprio acesso e custo das aulas universitárias são uma questão de classe social e econômica
      E também existem autodidatas que aprenderam sozinhos API de sockets, projetos em bash e coisas do tipo
      Só para constar, autodidatas e pessoas vindas de bootcamp são perfis completamente diferentes
      Eu posso até travar em situações impostas, como entrevistas estilo audição, mas sozinho resolvo problemas reais muito bem

    • Pode soar meio boomer, mas eu também fui de uma geração em que a universidade era realmente muito boa
      Construí compiladores, um toy OS, interface com GPS e outras coisas
      Alguns anos atrás fui convidado para lecionar em outra instituição e fiquei muito decepcionado
      O currículo parecia um bootcamp moderno esticado por alguns anos, com um monte de matérias sem muita relação
      Quase não havia fundamentos; tirando algoritmos, era tudo React e frameworks populares nas startups locais
      (edição: olhando o currículo de fato, havia disciplinas de negócios, gestão, humanas, química, meio ambiente, empreendedorismo e e-sports)

  • Parece que muita gente gasta bastante energia tentando aceitar a própria falta de educação formal
    Existem autodidatas brilhantes e diplomados nem tão inteligentes assim, mas pela minha própria experiência acho que ter tido um diploma em CS teria ajudado no meu caminho
    CS, em essência, não é apenas programação, assim como ME (engenharia mecânica) não se resume às tarefas de um ofício específico
    Engenheiros mecânicos também não são melhores do que mecânicos em consertar vazamento de óleo ou pneu furado
    Mas ninguém desvaloriza um diploma de engenharia por causa disso
    Eu também comecei resolvendo no chão de fábrica, com a mão na graxa, problemas que técnicos não conseguiam resolver, mas isso vinha do meu gosto pessoal e da minha curiosidade

  • O motivo de autodidatas produzirem resultados excelentes é justamente que, para se tornarem autodidatas, eles já precisaram ter motivação, paixão e autonomia acima da média
    No fim, se a pessoa tem curiosidade, foco e disciplina, vai ficar acima da média com formação formal ou informal
    Também existe viés de sobrevivência — você só enxerga os autodidatas que realmente sobreviveram na prática
    Em contrapartida, talvez os autodidatas que fracassaram tivessem se saído melhor com ensino adequado
    Eu gostei tanto da formação em CS quanto da matemática, mas em termos de formato sempre senti que aprender sozinho combinava mais comigo

    • Sem nenhum dado estatístico sendo apresentado, acho exagero se preocupar demais com erro estatístico aqui
      A palavra “frequentemente” é só um jeito vago de maquiar a imprecisão
  • Eu sou desenvolvedor de software e também professor universitário de CS
    O traço comum entre engenheiros que realmente têm sucesso é, no fim, o “interesse” e a “paixão”
    Autodidatas naturalmente têm muito interesse na área, então a motivação deles já vem validada
    Já entre diplomados o grupo é mais misto — há quem só queira o diploma, e aí a pessoa conhece os termos teóricos, mas fica difícil avaliar a habilidade real

    • Esse é o ponto central
      O autodidata, por definição, é alguém com motivação e interesse fortes o suficiente para sair do sistema e estudar por conta própria
  • Dá para pensar o conhecimento como um círculo desenhado num quadro
    https://matt.might.net/articles/phd-school-in-pictures/
    O círculo que se aprende na universidade é surpreendentemente estreito e, em geral, segue um currículo quase idêntico
    Por exemplo, não há tempo para ensinar algoritmo DMC (usado no melhor algoritmo de compressão)
    Em vez disso, todo mundo repete um currículo mais genérico
    Mas existem pessoas que avançam para além desse círculo
    Essas pessoas são os melhores programadores da indústria — conhecem até algoritmos raros que você normalmente só vê em artigos, e por isso demonstram uma habilidade diferenciada
    O mesmo vale para autodidatas; como eles podem ter lacunas justamente no círculo comum que todo mundo aprende, muitas vezes partem de motivação própria e humildade
    Mas o círculo de conhecimento que eles têm foi construído de forma orgânica pela paixão
    E essa paixão é, na minha opinião, o melhor sinal de desempenho em engenharia

  • Em outras palavras, “uma pessoa que já demonstrou a capacidade de decidir sozinha o que precisa aprender de forma independente, e depois de fato aprender isso, tende a se destacar em trabalhos que exigem exatamente essa competência”

  • Linus Torvalds criou Linux reescrevendo completamente o MINIX Margaret Hamilton criou conceitos modernos de confiabilidade de software no projeto Apollo
    Ambos eram engenheiros com formação formal
    A educação formal oferece uma oportunidade de desenvolver maturidade matemática e de engenharia, incluindo capacidade “prática”

    • Torvalds, quando publicou a primeira versão do Linux em 1991, mal tinha tido educação formal em CS até então

    • Também concordo com isso
      No nosso curso de graduação também havia um projeto em que precisávamos implementar um sistema operacional multiprocessos em assembly 68K
      Esse tipo de experiência me ajudou a entender com muito mais facilidade a estrutura e o funcionamento do kernel do Linux
      Se eu nem soubesse o que era um kernel, nem conseguiria começar

  • Recentemente venho tentando aprender por conta própria um problema de análise numérica com o qual eu não tinha experiência (construir um solver LU esparso)
    O material mais útil não foi implementar diretamente nem desmontar código de solvers existentes, mas sim notas de aula sobre o tema
    Ao ver a aula inteira, passei a entender também conceitos relacionados que eu nem sabia que precisava conhecer
    Em outras áreas aconteceu o mesmo: frequentemente o melhor material vinha de aulas universitárias
    Se a tese é que aula universitária é desnecessária, então fica difícil explicar por que justamente o melhor material costuma vir da universidade
    Existe também o argumento de que construir coisas diretamente é a melhor forma de ganhar habilidade, mas os próprios projetos universitários quase sempre avaliam fortemente a parte de “construção real”

    • Concordo completamente
      Livros técnicos profundos também são excelentes, mas o valor que você tira deles muda completamente conforme a postura com que você chega
      Se você aprende só teoria sem nenhuma aplicação real, perde o interesse e esquece tudo muito rápido
      Mas quando aprende uma teoria ligada a uma necessidade concreta ou a um trabalho relacionado, aquilo vira conhecimento prático essencial quase instantaneamente
      Se alguém entra na universidade depois de já ter acumulado bastante experiência autodidata e consegue manter a paixão, pode realizar coisas impressionantes em pouco tempo

    • Em resumo, teoria obviamente importa
      Só que, se você primeiro constrói alguma coisa e depois estuda a teoria, fica muito mais claro onde está o verdadeiro insight