Pular para o conteúdo
Carreira

Por que ensinar programação do jeito errado

A cultura de complicar o simples está formando desenvolvedores despreparados e prejudicando a produtividade em empresas reais. Entenda o que está acontecendo.

Por que isso é importante

Por que ensinar programação do jeito errado. A cultura de complicar o simples está formando desenvolvedores despreparados e prejudicando a produtividade em empresas reais. Entenda o que está acontecendo.

Quando ensinar o complexo vira armadilha

Muitos cursos prometem formar desenvolvedores rápidos e prontos para o mercado ensinando
os padrões mais sofisticados existentes. O problema? Eles ensinam essas técnicas como
verdades absolutas, sem contextualizar, avaliar alternativas mais simples ou considerar
a experiência do aluno.

Refatoração sem responsabilidade

Ao colocar código em uma IA com base em comandos que viu em um vídeo, o Dev Júnior do
caso simplesmente substituiu uma solução funcional e de fácil manutenção por uma
arquitetura tão cheia de camadas que ninguém mais conseguiu dar manutenção no projeto.

Atenção

Refatorar com IA sem entender o propósito do sistema pode causar prejuízos
incalculáveis para a empresa.

O problema começa com a formação

A base de tudo isso está nos cursos que complicam conceitos simples. Ensinar strategy
pattern para decidir entre dois caminhos diferentes em vez de um simples if-else não é
elevar o nível do aprendizado, é confundir o iniciante. Isso gera desenvolvedores
emocionalmente despreparados, porém confiantes demais. Foi essa percepção sobre a
importância de uma base sólida e prática que me levou a criar o CrazyStack e, em
particular, o curso de Node e React, focado em preparar desenvolvedores para os desafios
reais do mercado, sem complexidade desnecessária.

Ambiente sem boas práticas acelera o impacto

Esse tipo de formação só vira um prejuízo real quando está aliado a empresas sem boas
práticas de desenvolvimento: sem code review, sem esteira de deploy, com commit direto
na master e com desenvolvedores sozinhos tomando decisões críticas de arquitetura em
produção.

Empresas pequenas são as mais expostas

Negócios menores têm times enxutos e geralmente confundem níveis de senioridade. Com um
contratado e um prestador, às vezes um Dev Júnior tem autonomia total sobre o deploy. A
cultura de "se tá rodando tá bom" transforma pequenos exageros técnicos em dores graves.

Atenção

Não revisar código de Dev Júnior é um risco crítico. Pode parecer que nada quebrou –
até a manutenção virar um problema.

Experiências que te preparam para o caos

Muitos devs que vêm de ambientes "raiz", com deploy via FileZilla, sem Git, versionando
código com .old e .zip, hoje enxergam valor em processos. Ter sofrido para colocar um
sistema no ar te prepara para lidar com restrições e imprevistos – algo que quem
aprendeu apenas com teoria nem imagina como resolver.

Refatoração: ganho ou perda de tempo?

Um código que antes levava dois minutos para ser alterado agora exige entendimento de
múltiplas camadas de abstração, libs desconhecidas, arquivos importados dinamicamente e
mudanças em disco. O trabalho da IA era bonito, mas trouxe complexidade desnecessária e
matou a produtividade.

Atenção

Soluções refinadas devem ser aplicadas somente quando agregam valor real ao projeto.
Não complique por vaidade técnica.

O impacto real da abstração sem critério

Abstração em código é como casa de aposta: se você não souber usar, vai perder dinheiro.
Reescrever lógica fácil em architecture patterns só por ser "clean" pode custar tempo e
esforço sem nenhum benefício prático.

Quem é o culpado?

O Dev Júnior não tem culpa. Ele foi treinado assim. O verdadeiro erro é de quem vende
complexidade como única solução e não prepara o aluno para os desafios reais de um
sistema funcionando em produção. Assim, ele aplica o que aprendeu – o errado camuflado
de certo.

Melhor prevenir do que refatorar tudo

Evitar problemas como esse exige: processos claros, revisão de código antes do merge,
deploy com responsabilidade e treinamento prático voltado para situações reais, não
apenas para seguir boas práticas superficiais.

  1. Passo 1: Estabeleça uma política de code review e mantenha-a
    obrigatória.
  2. Passo 2: Garanta que ninguém esteja fazendo commit direto na
    master/main.
  3. Passo 3: Oriente devs iniciantes sobre leitura de código legado
    e manutenção.
  4. Passo 4: Ofereça experiências reais com legado, não só pet
    projects.

Refatorar é importante, mas não sozinho

Refatoração não é mágica. Ela exige entendimento profundo do projeto, alinhamento com a
equipe e testes minuciosos. Jogar código em IA e aceitar o resultado como uma evolução
estrutural beira a irresponsabilidade técnica.

Quando a engenharia depende só do Júnior…

Se sua empresa não tem esteira de QA, staging, DevOps básico nem equipe mínima para
revisar código de dados sensíveis, então não é o Dev Júnior que está em falta – é seu
modelo de desenvolvimento que já nasceu quebrado.

Existe valor no caos

Trabalhar em empresa raiz te ensina mais do que apenas código: te ensina a fazer o
necessário com o que tem. E isso vale muito mais na prática do que saber 15 patterns que
você nunca usou num sistema que alguém precisa manter.

Evite a complexidade precoce

É hora da indústria reconhecer: ensinar o simples bem feito é mais desafiador do que
despejar design patterns sobre iniciantes. Menos glamour, mais clareza. Essa é a base
para equipes eficientes e sistemas com vida longa.

O papel da liderança técnica

Tech leads precisam olhar com cuidado para decisões em produção: se tem dev emocionado
no time, ofereça direcionamento e acompanhamento. Não é sobre reprimir, é sobre
construir maturidade técnica junto da cultura da empresa.

O que aprender com isso tudo?

As empresas precisam equilibrar autonomia com responsabilidade. Dar autonomia total sem
garantir maturidade é pedir para o sistema virar um campo minado. E se isso ainda não
aconteceu com seu projeto, agradeça – mas antecipe-se.

Checklist de sobrevivência para devs e empresas

Checklist de Implementação

  • Evite abstrações desnecessárias no início do projeto
  • Estabeleça uma esteira mínima de DEV para STG e PROD
  • Garanta code review em 100% dos MRs/PRs
  • Eduque iniciantes com base na realidade, não na complexidade
  • Treine o time para lidar com código legado com responsabilidade

Perguntas frequentes

Quando ensinar o complexo vira armadilha

Muitos cursos prometem formar desenvolvedores rápidos e prontos para o mercado ensinando os padrões mais sofisticados existentes. O problema? Eles ensinam essas técnicas como verdades absolutas, sem contextualizar, avaliar alternativas mais simples ou considerar a experiência do aluno.

Refatoração: ganho ou perda de tempo?

Um código que antes levava dois minutos para ser alterado agora exige entendimento de múltiplas camadas de abstração, libs desconhecidas, arquivos importados dinamicamente e mudanças em disco. O trabalho da IA era bonito, mas trouxe complexidade desnecessária e matou a produtividade.

Quem é o culpado?

O Dev Júnior não tem culpa. Ele foi treinado assim. O verdadeiro erro é de quem vende complexidade como única solução e não prepara o aluno para os desafios reais de um sistema funcionando em produção. Assim, ele aplica o que aprendeu – o errado camuflado de certo.

Quando a engenharia depende só do Júnior…

Se sua empresa não tem esteira de QA, staging, DevOps básico nem equipe mínima para revisar código de dados sensíveis, então não é o Dev Júnior que está em falta – é seu modelo de desenvolvimento que já nasceu quebrado.

O que aprender com isso tudo?

As empresas precisam equilibrar autonomia com responsabilidade. Dar autonomia total sem garantir maturidade é pedir para o sistema virar um campo minado. E se isso ainda não aconteceu com seu projeto, agradeça – mas antecipe-se.