Picture by: Lucas Santos

O custo oculto do aperfeiçoamento técnico

Depois de uns 15 anos programando profissionalmente, desde pequenos sistemas em PHP até orquestrando clusters de Kubernetes de grandes empresas, chega um momento que parece que você tá vendo a história se repetir.

Não me interprete errado! Cada problema tem suas características singulares e sempre há espaço pro aprendizado. Entretanto, parece que os problemas começam a ser uma permutação de algo extremamente familiar:

  • Criar modelo
  • Ajustar controller
  • Refletir serviço
  • Gerar manifest files de deployment
  • Fazer um long-running process
  • Publicar evento no Message Broker
  • Implementar lógica de negócio
  • Gerar migrations de banco de dados
  • Fazer deploy
  • Acompanhar as métricas e logs
  • Recolher feedback
  • Etc…

Algumas tarefas terão mais elementos puramente de codificação, outros serão mais concentrados em regras de deploy ou banco de dados. Porém,maior parte das empresas não fogem disso. Tem até aquela brincadeira que diz que 90% de nós, no final das contas, estamos fazendo somente CRUD 😂

Piadas à parte, depois de muitos anos nessa industria, os padrões começam a ficar mais aparentes.

Progresso ineficiente

Um programador suficientemente experiente já viu uma boa quantia desses problemas e navegar em todas essas possibilidades não é tão amedrontador quanto fora outrora.

Meu ponto é que, a partir de um certo nível, independente do quanto você se esforça em ficar mais técnico, menor a quantidade de progresso. Isso é conhecido na economia como diminishing returns. Aqui tem uma ilustração que fiz:

Isso se aplica à absolutamente tudo na vida. Investimentos, motores e relações interpessoais.

Quando eu me dei conta disso, eu entendi que eu poderia estar negligenciando outras habilidades que não estavam na curva de “diminishing returns” ainda e tendo um gigatesco custo de oportunidade na minha carreira.

Reflexão

Foi aí que comecei a refletir sobre as minhas habilidades de maneira muito honesta. Também pedi feedback para algumas pessoas e a conclusão que cheguei foi algo como:

Eu consegui ir longe fazendo o mesmo que tenho feito há anos. Onde eu poderia ter chegado se tivesse melhorado o que não estava bom?

Logo tentei visualizar quais seriam as core abilities que um excelente profissional de software tem. Comecei a olhar para pessoas muito acima da média e tentei fazer um “debug” delas. Tive algumas conversas importantes com mentores e tudo clareou pra mim.

De maneira simplificada são apenas 6 áreas:

  • Software Engineering - Os hard skills
  • Comunicação - Sua habilidade de expressar suas ideias de maneira clara especialmente para pessoas não-técnicas
  • Inteligência Emocional - Saber lidar com situações tensas e não deixar isso afetar a resolução da situação
  • Empatia - Se colocar no lugar do outro. Muito valioso
  • Pitching - Vender ou convencer sobre a sua ideia
  • Entendimento do Negócio - Compreender o business que a sua empresa atua ao detalhe

Na minha experiência, o profissional médio de Engenharia de Software gravita ao redor dessa padrão:

Excelente nas hard skills mas carente em outras habilidades.

Oportunidades

Você deixar a empresa te avaliar somente pelo código que você entrega é ser medido pela menor régua. Por outro lado, uma melhora em Comunicação e Pitching, por exemplo, refletiria em uma imensa evolução na percepção que lideranças técnicas e não-técnicas tem sob você. Isso pode abrir muitas portas.

Eu encaro as empresas que trabalho como uma forma de playground. Não em um sentido pejorativo, mas eu sinto que tenho liberdade para tentar novas práticas e melhorar minhas habilidades. Te deram a oportunidade de falar em público? Fale! Entrar numa reunião com a equipe para defender um ponto de vista e vender uma solução? Tente. O pior que pode acontecer é sua reputação ser destruída. :)

Por fim, eu entendo que independente se é contexto pessoal ou de trabalho, existem aprendizados que transcendem essas barreiras e nos pode transformar como ser-humanos para melhor.