Veja como construir uma cultura de engenharia bem sucedida!

Você já ouviu falar do termo “cultura de engenharia”? E você sabe o que torna essa cultura bem sucedida?

Meu nome é Julia Tretel, sou engenheira de software do time de Payment Processing no EBANX e hoje vou falar um pouco sobre quais são, na minha visão, os pontos fortes de uma cultura de engenharia de sucesso. Não é spoiler dizer que ela vai bem além do código.

Vamos começar pelo conceito básico: a cultura de uma empresa e mais especificamente de um time – portanto, no nosso caso, a cultura de engenharia – é composta por valores e pelas ações das pessoas que fazem parte do grupo. A forma como lidamos com os acontecimentos no dia-a-dia, como desenvolvemos, resolvemos problemas, entregamos soluções e, principalmente, trabalhamos em equipe, constrói nossa cultura.

Dito isso, eu acredito que uma cultura bem sucedida pode se resumir em três palavras: qualidade, comunicação e responsabilidade:

  • Devemos pensar na qualidade de todos os momentos do desenvolvimento, desde a entrada de uma pessoa na empresa ou no time, até a entrega final do produto;
  • Uma boa comunicação é a chave para o sucesso em qualquer situação, principalmente no trabalho – demandas, requisitos, impedimentos, preocupações, tudo isso tem que estar devidamente visível para todos os envolvidos;
  • Lembre-se: estamos todos no mesmo barco, todos nós somos responsáveis pela nossa plataforma e pelo nosso time;

E como esses três conceitos se conectam com nossas ações do dia-a-dia? Existem diversas formas de garantir que essas premissas estão sendo consideradas no processo de desenvolvimento, fortalecendo nossa cultura de engenharia. Aqui separei situações e exemplos de algumas práticas que considero mais importantes.

Mentoria de onboarding

Desde o primeiro dia em uma empresa, a cultura se faz presente. Devemos pensar com carinho nesse momento, pois esse período pode impactar toda a experiência futura de quem está ingressando.

Uma forma de garantir uma boa primeira impressão, é através de mentorias de onboarding, designando uma pessoa para ser seu ponto focal, ou seja, alguém para passar o overview técnico e não técnico, tirar todas as possíveis dúvidas, ajudar com acessos, grupos e qualquer outra coisa que possa surgir durantes as primeiras semanas. 

Aqui no EBANX, por exemplo, quem fica encarregado como buddy de alguém tem um checklist para não esquecer de nada na hora de receber alguém. Durante a execução das tarefas desse checklist, vamos apresentando um pouco da nossa cultura de engenharia para o novo ebanker, explicando o funcionamento de diversos fluxos do nosso cotidiano.

Processos não podem consumir as pessoas

Criar processos e métodos para auxiliar a organização dos times, definição das tarefas e andamento dos projetos é extremamente importante e inclusive impactam positivamente na comunicação, mas precisamos ter em mente que esses processos não podem consumir as pessoas. Deixar que os desenvolvedores fiquem atolados, impedindo que tenham tempo de qualidade para produzir alguma coisa, pode ser desmotivador.

O que quero dizer com isso? Vou dar um exemplo: reuniões diárias, que são uma maneira fácil de deixar todo o time na mesma página, principalmente quando existem mudanças frequentes no projeto. Sem controle, essas reuniões podem começar a ficar massantes e compridas. Mas como impedir que isso esgote os participantes? Evite que essas reuniões durem muito tempo. Daily de 1h? Nem pensar! Como resolver? Pense em outras formas de ter acompanhamento diário ou periódico, podendo ser até algo assíncrono (um bot no Slack, por exemplo?).

Documentação do que desenvolvemos

Outro ponto importante relacionado à boa comunicação é a forma como documentamos o que desenvolvemos. O código que escrevemos normalmente nos diz o Como e o O que, mas precisamos também encontrar formas eficientes de documentar o Por quê. Centralizar essas informações em um só lugar é essencial para que, no futuro, qualquer pessoa encontre o que precisa. Isso vale também para a pré-implementação: ter os requisitos ou problemas que precisamos resolver bem descritos, ajuda demais a tornar o processo de desenvolvimento mais rápido e assertivo.

Aqui no EBANX, por exemplo, usamos o Trello como documentação do nosso código, por isso todo commit precisa ter um card atrelado a ele. Cada time pode se adequar para dar essa visibilidade da melhor maneira, mas existe um template básico que seguimos: antes do card estar “ready to work”, deve ser definido: O que deve ser feito, Por que e quais são as áreas afetadas e Como pode ou será feito (esse aqui normalmente é definido depois que a tarefa é designada para alguém).

Prazos e expectativas ajustáveis

Salvo exceções em que um fator externo impõe um prazo específico para ser cumprido (uma lei que passa a valer, por exemplo), devemos ser capazes de ajustar estimativas e expectativas para certificar que a entrega do produto que se espera não será comprometida. Isso vai muito de encontro com qualidade, pois ela deve sempre ser mais importante que o prazo. Às vezes precisamos fazer estimativas para termos alguma noção de quanto tempo uma tarefa vai levar, mas que isso não seja um argumento de cobrança, e sim apenas um insumo para organização das atividades e do time.

Respeitar a motivação dos processos

Algo que considero importantíssimo para o sucesso da empresa é respeitar a motivação dos processos. Se existem fluxos bem definidos de como algo deve acontecer, não tente burlar o sistema! Eles existem para resolver algum problema, e encontrar caminhos para fugir disso pode ser ruim para outras pessoas e até mesmo para você.

Um exemplo clássico de quando isso pode acontecer é quando pedimos revisão de um código. Se o processo de code review é necessário para que seu código entre em produção, não peça para que simplesmente aprovem as mudanças (sem esperar por exemplo que a pessoa revise e sugira mudanças) e não aprove o código dos seus colegas apenas por aprovar. Entenda que esse código não é seu ou de outra pessoa, mas de todos nós! Repito o que comentei no início do texto: todos somos responsáveis pela nossa plataforma. Lembrar disso é fundamental para manter forte nossa cultura de engenharia, por isso faça reviews com carinho e aceite de coração aberto possíveis sugestões!

Outro exemplo vai de encontro com a documentação das tarefas. Não adianta seguir a metodologia (ter um card atrelado ao commit) se ao consultar a documentação não existir informação nenhuma sobre as mudanças que foram realizadas, considerando que o card foi aberto só pela obrigação de existir.

Desenvolvedor não é uma máquina de escrever código

Outra característica relacionada às responsabilidades que temos é saber que nós, como engenheiros de software, não somos apenas uma máquina de escrever código. Precisamos ter discernimento para entender as demandas que chegam, se faz sentido fazer o que foi pedido da maneira como foi pedido que se faça, se isso irá resolver de fato o problema, e, no fim, se está funcionando da maneira como se espera. Vista o chapéu das outras pessoas!

Imagine que um cliente pede uma mudança específica para resolver uma dificuldade ou impedimento que está tendo. Nem sempre a solução proposta vai de fato resolver o problema. Esse ponto pode ser um desafio dependendo do contexto em que estamos, mas faz parte do trabalho entender as regras de negócio por trás do que estamos desenvolvendo, e às vezes precisamos sugerir outras maneiras de resolver o que foi apresentado.

Ter disposição para ouvir e ajudar

Muitas vezes, é necessário discutir e conversar não só com seus colegas de equipe, mas também com pessoas de outros times e projetos. Estarmos abertos para ouvir e ajudar faz com que todo mundo caminhe junto, sempre melhorando e aperfeiçoando nosso desenvolvimento.

Isso é retratado muito bem por um dos valores que mais gosto aqui no EBANX: #TamoJunto. É muito gratificante ver como todo mundo aqui está sempre disposto a colaborar, auxiliar, sentir e entender o que o outro tem para dizer.

Conclusão sobre cultura de engenharia de sucesso

Desde que entrei no EBANX, cresci imensamente, não só tecnicamente, mas também aprendi inúmeras coisas que posso levar para a vida. Isso foi possível devido a essas e outras práticas e ações que constroem e a cada dia aperfeiçoam nossa cultura.

Poderíamos dar diversos outros exemplos e entrar mais em detalhes, mas para resumir tudo isso, uma cultura de engenharia bem sucedida pra mim é, de novo, focada em três coisas: qualidade de como e do que produzimos, comunicação e visibilidade dos problemas e soluções e responsabilidade de procurar sempre fazer o melhor para seu time e sua empresa.

Bônus: para você assistir sobre a cultura de engenharia do EBANX

Você também pode participar da nossa comunidade de tecnologia nos meetups mensais do Code Your Way. Fique de olho e faça parte!

Agradeço muito por ler até aqui, e até a próxima!