Carreira em engenharia de software costuma ser discutida em termos de tempo de casa, certificação ou senioridade no título. Na operação, o que muda o patamar de alguém é o tipo de problema que essa pessoa consegue carregar sozinha. Quem só recebe tarefas bem definidas aprende a executar. Quem recebe um problema de negócio aprende a decidir, e a diferença aparece no dia em que o sistema falha fora do horário comercial e alguém precisa saber por onde começar.
Responsabilidade sobre o resultado, não sobre a tarefa
Há uma distância grande entre "adicionar o campo novo no cadastro de clientes" e "o cadastro de clientes está travando o fechamento de pedido". A primeira frase descreve uma tarefa; a segunda, um resultado. Engenheiro que responde pelo resultado consegue explicar, sem consultar ninguém:
- qual o efeito daquela mudança no fluxo de negócio e quem é afetado por ela;
- quais outros sistemas consomem aquele dado (relatórios, integração com o ERP, faturamento);
- como reverter a alteração se algo der errado em produção;
- como saber, em minutos, que a mudança quebrou alguma coisa;
- o que fazer para que a próxima alteração naquele ponto custe menos.
Essa lista não vem de curso nem de certificação. Vem de conviver com o sistema em produção e de ter alguém mais experiente apontando o que passou batido na primeira vez.
As práticas que realmente formam engenheiros
Formação em engenharia de software é um processo de feedback, não de acúmulo de conteúdo. Algumas práticas produzem esse feedback de forma consistente:
- Code review com justificativa. Aprovar sem comentário não ensina nada. Revisão boa explica por que aquele tratamento de erro está no lugar errado e o que aconteceria em produção.
- Leitura de código legado com objetivo definido. Pedir para alguém rastrear de ponta a ponta o caminho de um pedido, de um agendamento ou de uma nota fiscal ensina mais sobre arquitetura do que qualquer diagrama desatualizado.
- Plantão acompanhado. Participar de incidentes com supervisão, e não apenas observar, cria repertório de diagnóstico. Ver um log pela primeira vez ao lado de quem sabe ler o log vale mais do que uma semana de treinamento.
- Registro de decisão curto. Uma página explicando o problema, as alternativas e o motivo da escolha obriga a pessoa a defender o próprio raciocínio.
- Refatoração de algo que já está no ar. Mexer em código com usuário real, com testes que garantem o comportamento, ensina o custo da mudança de um jeito que projeto novo nunca ensina.
- Mentoria de alguém um nível abaixo. Explicar para outra pessoa expõe as lacunas de quem explica.
O que a empresa precisa montar
Nada disso acontece por iniciativa isolada. Uma distribuidora de médio porte, com sistema de pedidos integrado ao ERP e ao portal de representantes, media carreira por tempo de casa e por volume de chamados fechados. O resultado previsível: as correções mais rápidas eram as mais valorizadas, quase sempre aplicadas no mesmo ponto do código, sem teste e sem registro. Quando o fornecedor do ERP mudou o layout do arquivo de integração, ninguém no time sabia onde o processamento acontecia, e os pedidos passaram a ser rejeitados sem mensagem clara para o representante.
A virada não veio de contratação. Veio de mudanças pequenas: dono definido para cada serviço, revisão obrigatória com comentário, rodízio de plantão, tempo reservado na sprint para ler e documentar o código existente, e critérios de progressão observáveis (diagnosticar um incidente sozinho, explicar uma decisão de arquitetura, revisar código de um domínio que não é o seu).
Na prática
Para quem mantém software em produção, a consequência é direta:
- defina um responsável por serviço, mesmo que o time seja pequeno, para que exista alguém que responde pelo comportamento do sistema;
- inclua todo mundo no contato com produção, em rodízio, com acompanhamento no início;
- trate code review como formação, não como aprovação burocrática;
- reserve tempo recorrente para ler, testar e documentar código que já está no ar;
- avalie as pessoas por incidentes diagnosticados e por retrabalho evitado, não por quantidade de chamados fechados;
- escreva os critérios de progressão e revise-os com o time, porque critério implícito vira promoção por afinidade.
Carreira em engenharia de software se constrói na distância entre o que a pessoa executa e o que ela consegue garantir. Aumentar essa distância é trabalho de gestão, não apenas de vocação individual.