Erros de Aprendizado Para Se Evitar Como Desenvolvedor de Software
Foto de Francisco De Legarreta C. na Unsplash
Agradeço ao amigo André Gonçalves da Silva por ler e revisar esboços deste post, e sugerir melhorias.
Se você trabalha com desenvolvimento de software, com certeza já ouviu frases do tipo “Nunca pare de estudar”, “Tem que se atualizar sempre”, “A nossa área muda muito rápido”, e assim por diante.
Claro, todas essas frases estão certas, em algum nível. Mas sair por aí repetindo como um papagaio “nunca pare de estudar” não é a coisa mais útil do mundo no sentido de fornecer um direcionamento para o seu aprendizado.
O que acaba acontecendo na prática é que muita gente, por não ter aprendido a aprender da forma correta, comete muitos erros de aprendizado que comprometem seu desenvolvimento profissional. Esses erros podem levar a um progresso lento, frustração e até mesmo estagnação na carreira - algo que ninguém está a fim de passar.
Por isso, nesse post, resolvi trazer um compilado do que acredito serem os erros mais comuns de aprendizado que devs em geral cometem. Essa lista é fruto de anos de experiência pessoal, observação de colegas desenvolvedores e muitas conversas com gente da área. Eu sei na prática do que estou falando porque muitos desses erros são coisas que eu já cometi.
(Sendo sincero, alguns eu ainda cometo e tô sempre precisando me policiar para parar, mas não conta pra ninguém. ;))
Identificar e entender esses erros é o primeiro passo para superá-los. Ao evitá-los, você pode otimizar seu processo de aprendizado, acelerar seu crescimento profissional e se manter relevante em um campo que está sempre evoluindo.
Então, sem mais delongas, aqui vai a lista dos erros de aprendizado para você evitar. Para cada erro, você vai ver:
- a explicação do erro
- o problema que ele causa
- como remediá-lo
Bora lá?
Índice
- Achar Que Apenas Consumo de Conteúdo == Aprendizado
- Não Aplicar o Conteúdo dos Recursos de Aprendizado
- Falta de Foco
- Falta de Consistência
- Subestimar a Importância das Bases
- Viver Embaixo de Uma Pedra (Não se antenar com o que está acontecendo)
- Conclusão
Achar Que Apenas Consumo de Conteúdo == Aprendizado
Comecei a lista com esse que acredito ser o erro de aprendizado mais comum atualmente, pelo simples fato de que a gente vive em uma época onde se produz conteúdo pra caramba.
Por que caímos nessa armadilha?
Consumir conteúdo é fácil, conveniente e(potencialmente) divertido. Vamos entender o porquê:
- Fácil: É algo passivo, você não tem que pensar muito ou tomar decisões, e o ser humano tende a procurar o caminho do menor esforço.
- Conveniente: Você pode geralmente consumir o conteúdo enquanto faz outras coisas:
- Ouvir um podcast enquanto se exercita ou lava a louça
- Assistir um vídeo enquanto almoça
- Ler posts no Reddit enquanto espera na fila do banco
- Divertido: Muitos criadores percebem que, pra engajar o público, precisam adicionar um toque de entretenimento e transformar o conteúdo numa performance que segure a atenção.
Pronto, a armadilha está montada. Aí você vai lá, bola uma estratégia para preencher cada momento livre do dia com o consumo de podcasts, vídeos no Youtube, blog posts, Reddit, e sei lá o que mais.
As consequências desse erro
No fim, você vai ter:
- Consumido seu tempo com informações superficiais
- Retido quase nada do que consumiu
- Um vago sentimento de que “aprendeu” alguma coisa
Mas e na hora de aplicar isso de maneira significativa no seu dia-a-dia? É aí que a conta não fecha.
A longo prazo, as consequências podem ser ainda mais sérias:
- Estagnação profissional, pois você não está realmente desenvolvendo novas habilidades
- Frustração ao perceber que não está progredindo como esperava
- Possível burnout ao tentar constantemente “ficar por dentro” de tudo
Pra deixar bem claro: o erro aqui não é “consumir conteúdo.” E sim achar que apenas o consumo desenfreado de conteúdo é o suficiente para você evoluir como profissional.
Como remediar esse erro
A solução é simples em teoria, o que não necessariamente significa que é fácil. Aqui vai:
Diminua a parcela do seu tempo de aprendizado que você gasta com consumo passivo de conteúdos, e aumenta a parcela gasta com aprendizado prático, principalmente projetos pessoais.
As sugestões aqui são:
- Crie ou contribua com um projeto open-source
- Faça um site ou aplicativo para uma ONG, entidade assistencial, ou sua igreja
- Solucione algum problema que você ou algum familiar tem criando uma automação simples
- Reinvente a roda: Implemente uma tecnologia ou ferramenta conhecida (exemplos: git, Docker, um servidor HTTP) simplesmente com o objetivo de aprender.
A lista acima não é exaustiva, mas serve apenas pra começar a te inspirar. Cinco minutos de Google ou de conversa com o Chat GTP vai render muitas ideias de projetos legais para fazer.
Não Aplicar o Conteúdo dos Recursos de Aprendizado
Se você comprar um livro e não o ler, você joga dinheiro fora. Se você comprar o livro, ler, e o aprendizado daquilo não impactar a maneira como você faz seu trabalho, então você desperdiça o seu dinheiro e o seu tempo!
O mesmo se aplica a cursos, tutoriais, e outros recursos de aprendizado. Ser desenvolvedor de software é uma profissão prática; como você espera se beneficiar do que aprendeu, se não o colocar em prática?
Antes que alguém reclame: sim, é claro que existem livros, vídeos, etc., cujo conteúdo não tem uma aplicação prática direta. Talvez você tenha lido O Mítico Homem-Mês pra pegar alguns insights e aprender sobre a história do desenvolvimento de software, mas isso não muda necessariamente como você escreve código. E tá tudo bem, esses casos existem – use seu bom senso.
Como o erro #2 difere do anterior?
A gente pode resumir o primeiro erro como “gastar 100% do seu tempo de aprendizado com o consumo de conteúdo.” Ou seja, você não faz mais nada além de consumir coisas.
Este erro aqui é na linha de “não aplicar o que você aprende com o conteúdo assistido.”
Ou seja, é possível cometer o segundo erro sem cometer o primeiro. Por exemplo, você pode dedicar 60% do seu tempo de aprendizado à criação de projetos pessoais e 40% ao consumo de conteúdo. Mas se ainda sim você não aplicar de nenhuma forma o conteúdo que você aprendeu nesses 40% do tempo, você vai ter cometido o erro #2. Ficou claro?
Motivo Desse Erro
Por que tanta gente (este que vos fala incluso) comete esse erro? Provavelmente o que rola aqui é uma certa pressão psicológica que muitos sentimos, no sentido de atingir números. Quantas pessoas você conhece que criam umas metas assim?
- Ler x livros técnicos por ano
- Fazer y cursos até o segundo semestre
- etc…
Se você se sente realmente a fim de atingir esse tipo de meta, não tem jeito: precisa “gastar” o menor tempo possível com cada conteúdo. Do contrário, a conta não fecha.
Problemas Causados Por Este Erro
Uma consequência grave que você pode sofrer com este erro é a falta de motivação. Você leu todos os livros famosos da área que te indicaram, concluiu todos os cursos no seu PDI, e parece que nada mudou. Assim fica difícil ter a motivação pra insistir no aprendizado, quando a sensação é de que nada disso gera impacto real na maneira como você trabalha.
É essa a tal da frustração com a falta de evolução na carreira, que a gente citou no erro anterior. Outra consequência séria desse erro é o próprio desperdício de tempo, dinheiro e energia: o aprendizado é um investimento que precisa ter um retorno para ser justificado.
Qual a solução?
O remédio para este erro tem dois passos:
- Priorizar qualidade ao invés de quantidade
- Aplique constantemente o que aprendeu
Então, aqui fica a minha sugestão prática:: só inicie outro curso/livro/etc após ter aplicado o aprendizado do anterior.
Por exemplo, digamos que você está fazendo um curso na Udemy. Após cada aula ou seção, pare e crie um pequeno projeto no qual você exercita o que você acabou de aprender. Não precisa ser um projeto grande, nem mesmo útil. De preferência, jogue fora depois de terminar: o importante é a prática.
Aqui estão mais alguns exemplos:
- Após assistir um tutorial de programação, dedique tempo para replicar o projeto por conta própria, sem olhar o vídeo
- Leu um artigo sobre uma nova técnica de refatoração? Aplique-a em um projeto pessoal ou no trabalho
- Ouviu um podcast sobre boas práticas de código? Revise um projeto antigo e veja onde você pode aplicar essas práticas
Com relação à leitura de livros técnicos, recentemente eu criei uma regra pra mim: quando eu termino um livro, eu só posso começar outro depois que eu tiver aplicado o conteúdo do livro que acabei de ler. Essa aplicação pode ter diferentes formas:
- fazer os exercícios do livro, caso tenha
- criar um ou mais projetos para exercitar aquele conteúdo
- propor/implementar uma nova prática no meu trabalho baseado no que aprendi
No fim das contas, é isso que importa: que você dê um jeito de aplicar o conteúdo aprendido pra melhorar a sua vida profissional. Uma pilha de livros cujo conteúdo não te impactou só serve pra juntar poeira ou de suporte para monitor.
Falta de Foco
Existem muito mais coisas “aprendíveis” do que você tem tempo ou energia para aprender. Você nunca vai saber tudo, e nunca vai zerar a sua fila de coisas para aprender. Isso é um fato e você precisa aceitar e abraçar esse fato, a não ser que você esteja muito a fim de um burnout.
Infelizmente, a gente sente a pressão de “estar sempre estudando”, mesmo que essa frase em si não tenha nenhuma utilidade—não oferece nenhuma ajuda sobre o quê estudar, ou que estratégias usar.
É comum que essa pressão venha das nossas próprias empresas:
- Leia o livro x!
- Faça esse curso!
- Conclua essa trilha!
E essas pessoas são bem intencionadas, mas isso não muda o fato de que você tem uma quantidade limitada de tempo no seu dia e, mais importante, uma quantidade limitada de energia no tempo que você tem disponível
Mas aí você cede à pressão e acaba cometendo o erro desse item: ficar pulando de curso em curso, livro em livro, tutorial em tutorial, sem nunca concluir nada, ou pelo menos atingir algum progresso significativo.
Um Disclaimer
Olha só: eu sei que no dia-a-dia do trabalho, é muito comum a gente se deparar com um número enorme de problemas diferentes que precisam ser resolvidos, e o prazo é sempre pra ontem. Nestas situações, muitas vezes a coisa correta é sim aprender somente o superficial de um assunto para conseguir dar conta da demanda e gerar valor para o usuário o mais rápido possível.
A habilidade de distinguir quando é a hora de investir em um certo item de maneira mais aprofundada e quando um conhecimento superficial basta é algo que é extremamente valioso para a carreira de qualquer profissional, e a única maneira de aperfeiçoar essa habilidade é com a prática.
O erro que eu aponto neste item é uma situação diferente do cenário acima. Mais especificamente, o erro é sobre tentar aprender muitas coisas ao mesmo tempo, de maneira aprofundada, com recursos densos.
Problemas Causados Por Este Erro
O principal problema causado pela falta de foco é que você nunca se aprofunda em nada. Você fica com uma vaga impressão de conhecimento em um milhão de coisas, mas quando rola uma situação crítica no qual o conhecimento aprofundado faria falta, você não tem o que mostrar.
Como eu já disse antes, é impossível se aprofundar em tudo. Mas você deveria, sim, se aprofundar nas coisas que mais importam, aquelas que geram maior valor para sua carreira. Me refiro aos tais dos fundamentos que muita gente fala, mas vou falar mais a respeito disso em outro tópico.
Como Remediar
Este erro talvez seja o mais difícil de remediar, porque a solução envolve uma dose alta de autoconhecimento e um senso muito forte de priorização.
No geral, a dica é: defina UM ponto de evolução para sua carreira, e foque nele por um tempo considerável, até avaliar que fez progresso.
Alguns exemplos de pontos de melhoria:
- Melhorar meus conhecimentos de paralelismo, concorrência, e performance
- Aprender os principais design patterns e saber aplicá-los em projetos reais
- Adquirir habilidades avançadas em SQL
- Aprender uma nova linguagem e chegar em um nível produtivo
Não é fácil identificar este ponto de melhoria, mas aqui vão algumas dicas:
- Peça feedback dos gestores e colegas.
- Converse com algum mentor técnico em quem você confia.
- Se você está ativamente participando de processos seletivos para vagas e tem falhado, analise os pontos nos quais foi mal nas entrevistas para identificar onde melhorar.
- Se não está ativamente procurando, finja que está. Peça para algum amigo ou mentor fazer uma mock interview com você, e depois peça feedback honesto.
Falta de Consistência
O que é melhor, dedicar 30 minutos por dia pra aprender, todos os dias, ou 5 horas no final de semana, uma vez a cada três meses? A resposta é óbvia.
A nossa profissão é prática, é necessária prática deliberada e consistente para que você internalize as coisas que aprende a saiba usar quando chegar a hora.
Consequências
As consequências aqui são bem óbvias, né? Simplesmente não tem como fazer progresso se você não se esforça com consistência. Isso na verdade se aplica em praticamente qualquer coisa na vida: atividade física, aprendizado de idiomas, tocar um instrumento, e por aí vai.
Se você investe, por exemplo, 1 hora por semana para aprender algo, isso dá um total de cerca de 51 horas no ano. Agora, se você aprender 15 minutos todos os dias, isso dá um total de 5475 minutos no ano, o que dá mais de 91 horas!
Estudar só uma vez por semana tem outra desvantagem. Se surgir algum imprevisto e você precisar faltar, quando voltar já terão se passado duas semanas. Assim, fica complicado manter o ritmo; você precisa lembrar de onde parou 14 dias atrás, e retomar o contexto perdido não é nada fácil.
Como Remediar
Solucionar esse erro requer pensar em estratégias para que o aprendizado se torne uma parte natural da sua rotina diária.
Para começar, defina o tempo **que você vai dedicar diariamente, de forma realista. Não adianta se comprometer com 2 horas de aprendizado diário se a sua rotina simplesmente não permite isso.
Outra coisa essencial é escolher o horário do seu tempo de aprendizado. Pra fixar bem o hábito, o ideal seria que fosse no mesmo horário todos os dias. Ao escolher esse horário, leve em consideração como seus níveis de energia mudam durante o dia. Você é uma pessoa matinal? Coloque seu tempo de aprendizado na parte da manhã. Do contrário, à noite.
Vou dar o exemplo do que funciona pra mim. Eu sei que se for deixar meu tempo de aprendizado para depois do trabalho, vou estar muito cansado e provavelmente não vou fazer. Então, para mim, o melhor é reservar cerca de 50 minutos antes do trabalho para o aprendizado.
Pra fazer do aprendizado um hábito, a chave é integrar na rotina e diminuir o atrito. Sabe aquela galera que dorme de roupa de academia? Mesma ideia pro estudo. Deixe o PC ligado com o VS Code aberto no seu projeto, ou configure o navegador pra abrir direto no curso da Udemy. Quanto mais fácil começar, melhor.
Também é interessante que a hora de decidir o que aprender e a hora de aprender sejam momentos distintos. Se você tem 50 minutos por dia para o aprendizado, mas gasta 20 desses minutos todos os dias decidindo o que vai ler/praticar/assistir, você está desperdiçando 40% do seu tempo.
Então vai a dica: no sábado, você vai definir a sua rotina de aprendizado para a semana seguinte. Você criar uma planilha definindo os dias e o que você vai fazer, ou criar um board no Trello, ou mesmo usar papel e caneta, não importa. O importante é você já ter isso definido de antemão. Aí, nos dias da semana, você simplesmente confere e segue o planejamento feito.
Finalmente, algo que funciona para muitas pessoas é fazer algum tipo de compromisso público. Você declara, publicamente—por exemplo, no seu Linkedin—que vai estudar sem faltar durante x dias. O simples fato de ter feito esse compromisso frequentemente ajuda as pessoas a manterem a rotina sem faltar.
Uma iniciativa legal nesse sentido é o 100 Dias de Código, que incentiva pessoas a codarem durante 100 dias seguidos, sem falta, interagindo com outros participantes no processo.
Subestimar a Importância das Bases
Muita gente subestima a importância de se aprender os fundamentos da computação. Sim, estou falando daquelas coisas chatas que você não gostava de estudar na faculdade: algoritmos e estruturas de dados, teoria da computação, complexidade de algoritmos, e por aí vai.
Esse pessoal argumenta que você não precisa saber dessas coisas todas pra fazer o seu código funcionar. Sim, isso pode ser verdade boa parte do tempo, mas não sempre.
A gente pode pensar na computação como várias camadas que abstraem a camada anterior. Quando você está trabalhando em uma camada, você geralmente não precisa se preocupar com as outras. Isso é uma coisa boa, e é literalmente o motivo pelo qual a gente usa abstrações: “esconder” coisas que não são essenciais, diminuindo a complexidade do que você precisa lidar.
Consequências
Infelizmente, as abstrações não são perfeitas. Como já nos advertiu Joel Spolsky mais de 20 anos atrás, as abstrações em algum momento vazam.
Em outras palavras: só porque você usa um ORM não significa que você não tem que saber SQL. Mesmo quem usa uma linguagem gerenciada como C# ou Java pode se beneficiar de ter um entendimento sobre gerenciamento de memória: no mínimo, você vai ser capaz de escrever código que usa lifetimes de maneira correta, não cria alocações desnecessárias e coloca pressão no garbage collector.
Falta de entendimento de complexidade de algoritmos pode derrubar um sistema. Você testa localmente seu código com algumas poucas centenas de valores, mas quando aquilo vai ao ar e tem que lidar com milhões de itens, ele simplesmente não dá conta.
Em resumo: você consegue fazer algo que “funciona” sem conhecimento de fundamentos. Porém, funciona em parte dos cenários, parte do tempo, com desempenho inaceitável, e sem levar em conta edge cases.
Além dos problemas que a falta de uma base sólida pode causar nos sistemas em que você trabalha, este erro pode trazer outra consequência bem séria para sua carreira.
Sim, estou falando de você não ser capaz de passar nos processos seletivos das empresas. É muito comum que empresas, principalmente as de fora do país, utilizem desafios técnicos que requerem um bom conhecimento em tópicos como algoritmos, estrutura de dados, complexidade, concorrência e paralelismo, o modelo de memória da sua linguagem preferida, entre outros.
Não ter esse conhecimento significa ser reprovado sumariamente nos processos.
Solução
Se você não tem faculdade, recomendo fortemente que estude Ciência da Computação. Caso já tenha terminado a faculdade mas esqueceu todos aqueles tópicos, procure relembrar/reforçar esses conceitos.
Na internet você pode achar de sobra conteúdo sobre Ciência da Computação. Por exemplo, o projeto Teach Yourself Computer Science tem um roadmap de tópicos para aprender, com bibliografia e vídeos de aulas de universidades renomadas.
O NeetCode é um site que traz um roadmap de estudo de algoritmos e estruturas de dados. Também oferece cursos e a funcionalidade de praticar questões reais usadas em entrevistas de emprego.
Viver Embaixo de Uma Pedra (Não se antenar com o que está acontecendo)
Achei que seria interessante que o último erro fosse exatamente o oposto do primeiro. Enquanto o erro que abre a lista era “apenas consumir conteúdo e achar que está aprendendo”, esse aqui é “nunca consumir conteúdo nenhum.”
Por Que Isso é Um Problema?
Nós trabalhamos em uma área que muda constantemente, e cada vez mais rápido. Não se manter atualizado pode levar a:
- Obsolescência das suas habilidades
- Perda de oportunidades de carreira
- Dificuldade em resolver problemas usando abordagens mais eficientes
- Falta de inspiração para inovação no seu trabalho diário
Em outras palavras: falta de atualização prejudica seu desempenho no seu trabalho atual, e ao mesmo tempo diminui suas chances de conseguir um potencial novo emprego. Não é isso que você quer, né?
Encontrando o equilíbrio
Por um lado, utilizar cada segundo livre para consumir cada podcast/artigo/vídeo que seja possível não é uma boa estratégia. É como comer muita porcaria que não é nutritiva: você vai se sentir cheio, mas aquela comida não vai trazer os benefícios que seu corpo precisa.
Mas por outro lado, não consumir conteúdo nenhum é igualmente ruim. Como desenvolvedor, é importantíssimo que você tenha pelo menos uma noção do que está acontecendo no mundo do desenvolvimento de software.
O que manter no radar
Aqui vai uma pequena lista de coisas que seria interessante manter no seu radar:
- Lançamento de livros técnicos sobre temas que você se interessa, ou de autores que você já acompanha
- Novas funcionalidades da versão mais recente da sua linguagem ou framework principais
- Ferramentas ou técnicas que podem facilitar a sua vida
- Tendências emergentes na indústria (por exemplo, IA.)
Onde encontrar conteúdo relevante
Existem muitas fontes de informação valiosas para desenvolvedores. Aqui estão algumas sugestões:
- Reddit:
- r/programming para um apanhado geral
- Subreddits específicas como r/csharp, r/java, r/golang, etc.
- Hacker News: Excelente para notícias e discussões sobre tecnologia em geral
- YouTube:
- Pesquise por canais relacionados aos seus interesses específicos
- Assista a palestras de conferências de tecnologia
- Blogs técnicos:
- Podcasts de tecnologia: Ótimos para consumir informação enquanto faz outras atividades
Conclusão
Chegamos ao fim da lista. Espero que o compilado de erros de aprendizado que você acabou de ler seja útil para sua carreira. Com essa lista eu cobri o que não fazer, mas o que você deve fazer então?
Talvez no futuro eu escreva um post apenas sobre isso: como aprender da maneira correta, e no que focar. Deixa aí nos comentários caso você se interesse em algo assim.
Mas, por enquanto, para saber o que fazer, basta imaginar uma estratégia de aprendizado que seja o contrário dos erros acima:
- Aprenda com consistência, de preferência um pouco todos os dias;
- Tenha foco: privilegia um ponto principal de melhoria por vez;
- Prefira um aprendizado baseado em projetos, suplementado em partes por consumo de conteúdo
- Ao consumir conteúdo, sempre aplique o que aprendeu de alguma forma prática
- Aprender sobre ferramentas é importante, mas ter fundamentos sólidos é mais importante
Agora vem a dica mais importante que eu posso deixar.
Feito é melhor que perfeito.
Pulou um dia de aprendizado? Não tem importância, continue no próximo. Dedicou 30 minutos ao seu projeto ao invés dos 50 que tinha planejado? Ainda é infinitamente melhor do que não ter feito nada.
Tendências são mais importantes do que data points. Estar indo na direção certa é mais significativo do que metas arbitrárias do tipo “vou ler 6 livros técnicos em 2024”.
É difícil lidar com a pressão de desenvolvimento constante que a gente sente nessa área, eu sei bem disso. Na medida do possível, tente relaxar. Não se martirize demais. Você está indo na direção certa.
Só o fato de ter lido até o final um post de quase 4 mil palavras demonstra que você é muito mais interessado(a) em seu desenvolvimento que a maioria. Por isso, eu lhe agradeço muito. Se precisar de ajuda, não hesite em entrar em contato.
Encontrou algum erro no post? Sugira uma edição ← Erro 'Git Detached Head': O Que Significa e Como Resolver