- Os sistemas tecnológicos modernos evoluíram para uma estrutura tão complexa que uma única pessoa não consegue compreender o todo
- Com o aumento do desenvolvimento de software e do uso de IA, crescem os casos em que desenvolvedores constroem sistemas sem entender seus mecanismos internos
- Simon Wardley alerta para o risco de criar sistemas sem compreensão, Adam Jacob aponta que a IA está mudando a forma de desenvolver, e Bruce Perens destaca que a complexidade já ultrapassou o limite
- Louis Bucciarelli, por meio do exemplo do sistema telefônico, mostra que a tecnologia está entrelaçada em várias camadas, de modo que ninguém pode alcançar uma compreensão completa
- O texto enfatiza que a IA aprofunda essa complexidade, mas que, na prática, os humanos já lidam com a tecnologia há muito tempo com entendimento apenas parcial
Complexidade tecnológica e os limites da compreensão
- Após o declínio do Twitter, discussões sobre compreensão tecnológica e complexidade passaram a ocorrer ativamente no LinkedIn
- Posts de Simon Wardley, Adam Jacob e Bruce Perens são apresentados como temas interligados
- Wardley alerta para o risco de construir sistemas sem conhecer os princípios básicos
- A expressão “Magic” é usada de forma crítica para se referir a frameworks que escondem o funcionamento interno, com Ruby on Rails citado como exemplo representativo
- Jacob destaca que a IA está transformando de forma fundamental o modo de desenvolver software
- A IA aumenta a eficiência, mas também tende a fazer com que desenvolvedores trabalhem sem entender a infraestrutura subjacente
- Perens afirma que a situação que preocupava Wardley já virou realidade
- Devido à complexidade de CPUs e sistemas operacionais modernos, muitos desenvolvedores entendem de forma equivocada como as coisas realmente funcionam
O caso do ‘telefone’ de Louis Bucciarelli
- Bucciarelli discute os limites da alfabetização tecnológica em seu livro de 1994, Designing Engineers
- A maioria das pessoas não consegue explicar como um telefone funciona no nível físico
- Elementos em múltiplas camadas estão entrelaçados, como roteamento da rede de comunicação, processamento de sinais, transmissão via satélite, operação empresarial e estruturas regulatórias
- Ele chega à conclusão de que “ninguém sabe completamente como seu telefone funciona”
- Isso simboliza que sistemas tecnológicos complexos ultrapassam a capacidade humana de compreensão total
Entrevistas técnicas e os ‘limites do conhecimento’
- O autor relembra uma conversa com Brendan Gregg na época em que trabalhava na Netflix
- Gregg disse que, em entrevistas, avaliava o limite do conhecimento dos candidatos e como reagiam a isso
- Ele conduzia as entrevistas partindo do princípio de que “ninguém compreende completamente o sistema como um todo”
- Essa abordagem mostra que a postura de admitir o que não se sabe é tão importante quanto a competência técnica
A natureza da complexidade e o impacto da IA
- As visões de Wardley, Jacob, Perens e Bucciarelli revelam, em diferentes níveis, a inevitabilidade da complexidade
- Wardley: o risco de construir sem compreender
- Jacob: a eficiência e o distanciamento trazidos pela IA
- Perens: a realidade de uma complexidade que já existe
- Bucciarelli: a impossibilidade de entender o sistema inteiro
- O texto reconhece que a IA deve agravar esse problema, mas também relembra a realidade antiga de os humanos lidarem com a tecnologia com compreensão parcial
Resumo da discussão dos leitores
- Nos comentários, muitos expressam preocupação de que a IA enfraquece o aprendizado e a compreensão
- Alguns apontam que “quando o LLM escreve o código no lugar da pessoa, a cadeia de compreensão se rompe”
- Wardley explica que “antes, a compreensão era mantida dentro de uma cadeia hierárquica, mas o LLM remove essa cadeia”
- Outros leitores rebatem dizendo que é precipitado afirmar que “os benefícios da IA são maiores que os riscos”
- De modo geral, a perda de compreensão técnica na era da IA e a ruptura no processo de aprendizado aparecem como os principais pontos do debate
1 comentários
Opiniões do Hacker News
O que preocupa na programação hoje em dia é o aumento do “desenvolvimento de camada intermediária”, em que não se conhece nem o andar de cima (o objetivo do produto) nem o de baixo (como é implementado)
Antes, mesmo sem entender o negócio, ainda se entendia o significado do código; agora, parece haver um clima em que nem é preciso saber como o código funciona
Quando uso o Claude, sinto que minha consciência de contexto vai diminuindo aos poucos. Numa cultura de desenvolvimento em que basta os testes passarem e o botão funcionar, sinto que já não sou alguém que tem algo a aprender ou a contribuir
Principalmente em grandes empresas, falta transparência. Já virei noite para cumprir prazo e depois descobri que o cronograma tinha sido adiado sem que eu soubesse
Se vão me tratar como uma ferramenta simples, então vou agir só nesse papel. Mas, se querem ownership de verdade, é preciso ter um lugar na mesa de decisões
Antes eu desperdiçava tempo com trabalho repetitivo de configuração, mas agora consigo me concentrar só nas funcionalidades principais. Com isso, consigo manter melhor a estrutura geral na cabeça
Por exemplo, selecionar algumas linhas na IDE e dizer por voz “muda esta parte assim”, e isso ser aplicado na hora
Se a velocidade for boa o bastante, controle por mouse + voz também pode ser uma ótima ferramenta de acessibilidade
Acho até que os LLMs podem acabar reduzindo essa complexidade. Eu gosto de abstrações na medida certa, mas não gosto de não saber nada do que há dentro
Este texto fala sobre o fenômeno de as pessoas usarem abstração (abstraction) sem conhecer o que há por dentro
Mas isso é um processo natural de evolução. Alguém projetou essa abstração e a tornou utilizável para a camada de cima
A lógica de “como eu não entendo driver de Wi‑Fi, então também não preciso entender código” não se sustenta
No passado, lidava-se diretamente com a “complexidade necessária” e isso desenvolvia a capacidade de raciocínio; hoje, em muitos casos, a pessoa só faz o papel de cano de passagem
A solução seria envolver a abstração com uma DSL (linguagem específica de domínio) em vez de usar linguagem de propósito geral. Se for SaaS, vejo uma abordagem DSL-first como melhor do que API-first
Não acho que a IA seja pior do que isso. O importante é entender as abstrações nas quais você se apoia
A árvore de dependências é, de fato, o que mais causa problemas
Basta olhar para projetos em Node.js: há centenas de pacotes dependentes. Na maioria das vezes tudo bem não conhecer o interior deles, mas fica perigoso quando as interfaces quebram com frequência
Muitas equipes não acompanham EOL (fim do suporte) nem vulnerabilidades. A realidade é que às vezes nem sabem responder: “isso ainda está em manutenção?”
Mas, mesmo antes da IA, já havia muitos projetos presos no inferno das dependências por causa de conflito de versões
Acho que as pessoas não precisam saber tudo, mas a ignorância que faz perder os fundamentos é perigosa
Usando culinária como exemplo: você não precisa plantar trigo, mas se nem souber fritar um ovo, aí há um problema
Se as empresas passarem a padronizar e preparar toda a comida para você, isso seria progresso ou retrocesso?
Se um dia robôs substituírem totalmente a produção de alimentos, talvez realmente não importe mais não saber cozinhar
Afinal, para evitar dependência, não seria necessário conhecer até ciência dos materiais?
Camadas inferiores, como instruções de CPU e cache, foram exaustivamente validadas e documentadas ao longo de décadas
Já o código feito por LLM não é tão confiável assim e pode precisar de refatoração amanhã mesmo
Eu posso não conhecer os detalhes de funcionamento das camadas inferiores, mas entendo como o meu código funciona
Não conhecer o andar de baixo e não conhecer a área pela qual sou responsável são coisas completamente diferentes
O verdadeiro perigo agora é surgirem trechos de código que ninguém conhece
Não concordo com a ideia de que a IA esteja piorando a situação
Pelo contrário, como os LLMs aprenderam praticamente todo tipo de conhecimento, conseguem explicar de forma sistemática perguntas como “como um telefone funciona?”
Os humanos têm a limitação de nem saber o que não sabem, mas os LLMs cobrem quase todo conhecimento que foi expresso em linguagem
Claro que eles são fracos em raciocínio e geração de código, mas sua capacidade de integrar conhecimento é superior à humana
Não pode substituir documentação de verdade. Ainda assim, é muito útil para indicar, como um humano faria, “o que vale a pena pesquisar”
Um bom design faz o sistema funcionar mesmo sem conhecer o todo
O problema não é o sistema feito por IA, e sim que ainda não conhecemos bem seus modos de falha e limitações
No fim, o essencial é como coordenar humanos e IA para criar o sistema necessário: essa capacidade de desenho organizacional é o ponto central
Eu não conheço completamente o interior do computador, mas resolvo problemas com automação prática por scripts
Sem estudar assembly x86, ainda consigo administrar infraestrutura com Python
Mas acho que desenvolvedores experientes têm a responsabilidade de compartilhar esse conhecimento. Também quero assumir esse papel um dia
É preciso não perder a curiosidade e conversar ativamente com desenvolvedores mais experientes
Mas é frustrante ver a importância da compreensão básica ser ignorada, por mais que se insista nela
Eu realmente consigo responder perguntas como “o que acontece quando você digita uma URL?”
Trabalhei como técnico de reator de submarino na Marinha dos EUA, aprendendo desde teoria eletrônica até troubleshooting de sistemas
Depois migrei para TI e continuei com a mesma postura, indo até o fundo por meio de documentação e experimentação
Graças a esse hábito, a conexão entre conhecimentos aleatórios ajuda muito na hora de resolver problemas
O artigo da Wikipédia sobre VMEbus também vale a pena
Só que eu não consigo tolerar não saber, então talvez eu seja um caso fora da curva