Experiência é observar o que acontece depois
3 min de leitura #carreira
Acredito que uma das coisas mais importantes para um desenvolvedor júnior é aprender a observar o impacto das próprias decisões no código.
Não apenas se a tarefa foi entregue, se o teste passou ou se o problema foi resolvido naquele momento, mas o que aquela decisão vai representar para o projeto daqui a alguns meses ou anos.
Cada alteração que fazemos deixa uma marca no código. Uma modelagem, uma abstração, um pattern, uma escolha arquitetural ou até mesmo a decisão de utilizar uma biblioteca em vez de desenvolver algo internamente pode facilitar ou dificultar tudo o que vier depois.
Esse tipo de aprendizado é difícil de perceber quando você não acompanha o projeto por muito tempo. Por isso, acredito que permanecer tempo suficiente em um contexto para observar as consequências das próprias decisões é extremamente valioso.
Observar as consequências
Depois de alguns meses, quando aquela implementação já não está mais fresca na memória, vale voltar e se perguntar:
- A próxima manutenção foi fácil?
- O ganho de performance ou manutenabilidade realmente compensou o tempo investido?
- O problema que deveria ser corrigido foi realmente resolvido?
- Eu ainda consigo explicar por que essa decisão foi tomada?
- Eu faria algo diferente hoje?
- Eu realmente entendi o que foi feito?
Essas perguntas ajudam a transformar experiência em aprendizado.
Não estou dizendo que devam trocar de empresa ou de projeto. Pelo contrário. Conhecer contextos diferentes também é importante. Mas, quanto mais oportunidades você tiver de observar as consequências das suas próprias decisões, mais vai desenvolver a capacidade de pensar sobre software.
Com o tempo, é justamente esse entendimento que começa a fazer diferença.
Entender por que utilizar determinado pattern. Quando DDD faz sentido e quando uma estrutura mais simples resolve o problema. Quando uma arquitetura mais elaborada é necessária e quando ela apenas adiciona complexidade. Quando vale utilizar uma biblioteca existente em vez de criar algo do zero.
São decisões que raramente têm uma resposta universal. O valor está em entender o contexto, fazer uma escolha consciente e, principalmente, conseguir olhar para ela depois e avaliar o resultado.
Hoje, gerar código está cada vez menos relacionado à dificuldade de escrever código. Ferramentas de IA já fazem isso muito bem.
Por isso, acredito que a capacidade de pensar sobre as decisões, entender seus impactos e aprender com elas tende a se tornar cada vez mais importante.
No fim, talvez experiência não seja apenas ter feito muitas coisas. É também ter tido tempo para observar o que aconteceu depois que você as fez.
Bônus: não tente aplicar tudo o que você aprende.
É muito fácil começar a enxergar uma solução mais sofisticada para todo problema depois de estudar novas abordagens. Mas conhecimento também é saber quando não usar aquilo que você conhece. Evite complicar o que pode ser simples.