Ser engenheiro de software é um trabalho incrível!
Os desenvolvedores de software se esforçam para cumprir nossa crença: resolver problemas com pessoas incríveis e seguir as práticas recomendadas para tornar o mundo (da tecnologia) um lugar melhor. Os gerentes de engenharia têm a tarefa de liderar grupos de pessoas apaixonadas e conhecedoras enquanto trabalham juntas no projeto de arquitetura e recursos. Como se pode imaginar, isso pode ser muito divertido.
No entanto, trabalhar em uma equipe unida nem sempre é o sol e as rosas. Quando você tem um grupo de pessoas de diferentes lugares, com diferentes experiências e vários conhecimentos, geralmente há discórdia sobre como desenvolver, implementar e trabalhar melhor os recursos.
Mas desacordos e discussões não são os principais problemas. Na verdade, quando as pessoas têm a mente aberta e se concentram no melhor resultado, em vez de estarem”certas”, a discordância pode criar soluções melhores.
Causas comuns de desacordos entre as equipes de desenvolvimento
Existem algumas áreas que normalmente geram discussão e levam a divergências nas equipes de desenvolvimento.
Revisão de solicitação de pull
Imagine o seguinte: um desenvolvedor da equipe passa horas escrevendo código para concluir um tíquete de sprint. Ele ou ela se esforça para criar os melhores nomes e abstrações que levam a um código legível e conciso e cria testes para garantir que tudo esteja funcionando conforme o esperado. Em seguida, o desenvolvedor envia uma solicitação pull, que requer a aprovação de outro desenvolvedor assim que o código está pronto para revisão.
Codificar é uma arte, e nosso processo de criação de obras-primas é pessoal, mas as revisões de código são uma função de força que garante códigos e aplicativos de alta qualidade.
É fácil ver como o revisor, que está criticando e pedindo mudanças, pode causar tensão com o autor. Há ego envolvido e o preconceito de”interesse próprio”que todos têm.
Por exemplo, os desenvolvedores estão interessados em ter seu código aprovado sem ter que retrabalhar grandes quantidades dele. Porque? Porque eles têm outro trabalho que deve ser concluído no final do sprint também.
Na outra extremidade do espectro está o revisor, que é responsável por manter e melhorar os padrões e garantir que esses padrões sejam seguidos, mesmo que o tíquete leve mais tempo para ser concluído. Como o revisor pode permitir código desleixado ou código sem as melhores práticas na base de código? Não é responsabilidade deles garantir projetos de alta qualidade?
É bastante evidente porque as idas e vindas entre a aprovação do código e a conclusão de todas as alterações solicitadas podem causar divergências. Na verdade, é totalmente normal. O que importa é como você se comunica e resolve isso.
Padrões da equipe
A engenharia de software tem a vantagem-e às vezes o desafio-de não ter práticas recomendadas específicas que são seguidas por todos o tempo todo. As opiniões variam e os padrões evoluem. Eles não são apenas levantados em revisões de código, mas são pontos de tensão quando surgem diferentes opiniões entre os membros da equipe (como tabulações ou espaços para recuar linhas).
A chave aqui é decidir e atualizar continuamente as convenções de código em um wiki ou arquivo centralizado. Isso fornece aos revisores a documentação que eles podem apontar e fornecer aos autores das solicitações um guia, pontos sem sentido para tensão.
Discussões de arquitetura
Conforme as equipes desenvolvem seu software com o tempo, elas devem adaptar e alterar sua arquitetura para atender a novos designs ou recursos. Estruturas de banco de dados ou novos microsserviços podem ser necessários, ou eles podem adotar novas estruturas ou bibliotecas na pilha.
A experiência nessas áreas é variada e as opiniões sobre as convenções de nomenclatura ou as pilhas de tecnologia escolhidas podem ditar muito da base de código de um projeto. Afeta todos na equipe e, por isso, os indivíduos têm motivos para preferir uma solução a outra.
Um diálogo saudável cria resultados sólidos, mas as equipes devem delinear algumas das metas básicas que estão tentando alcançar para essas discussões. Ao fazer isso, eles podem conduzir as conversas em direção a um resultado final específico contra o qual podem pesar as opções.
Diferenças de personalidade
Tornou-se evidente que os engenheiros de software precisam de proficiência em habilidades sociais. Os desenvolvedores colaboram o dia todo e a capacidade de se relacionar com outras pessoas, comunicar suas ideias e encontrar um terreno comum afeta o sucesso de seus projetos.
Desenvolver essas habilidades pode ser difícil para quem diz aos computadores o que fazer o dia todo.
No trabalho, não podemos simplesmente parar de trabalhar com alguém de quem não somos. Podemos ter verdadeiras incompatibilidades de personalidade, diferenças gritantes em pontos de vista sobre as melhores práticas ou diferenças gerais de estilo de comunicação. Essa é a vida de trabalhar em equipe.
Aprender a colocar as diferenças de lado para realizar o trabalho e cumprir as metas da equipe continua a ser uma habilidade dos grandes líderes. Você pode fazer o mesmo!
Como você pode evitar conflitos em sua equipe
Há uma verdade fundamental em todas as discussões e divergências em sua vida: você é parte delas.
Você está desafiando intencionalmente as coisas certas?
Criar autoconsciência em torno das discussões ajuda a manter o equilíbrio, deixa de lado as emoções e permite que você pense com mais clareza. Como colega de equipe, você deve entender que nem sempre pode conseguir o que quer, e desafiar tudo resultará em uma enorme perda de tempo e produtividade.
Em outras palavras, desafiar e pressionar por uma opção específica só deve ser feito quando o impacto e o benefício valerem a pena. Aqui estão algumas perguntas a serem feitas:
- O resultado desta decisão afeta a mim, nossa base de código ou nosso futuro dependendo da resolução?
- Tenho conhecimento, experiência ou dados para apresentar razões a favor ou contra as opções na discussão?
- Estou ouvindo e entendendo ativamente todos os pontos de vista antes de defender minha própria opinião?
- Existem soluções alternativas que incorporam partes de todas as opções que levam a um resultado mais forte?
- Estou deixando minhas emoções comandarem a discussão ou meus pensamentos? Algumas respirações profundas podem ser necessárias
Se depois de responder a essas perguntas, você ainda tem uma opinião forte sobre uma solução específica, determine como você pode comunicar melhor as diferenças de cada opção e por que você acredita que uma obtém melhores resultados do que as outras.
Você está mantendo a mente aberta?
Uma das minhas pessoas favoritas que fala sobre mente aberta é Ray Dalio. Em Principles , seu livro recente, ele descreve o que realmente significa ter a mente aberta (confira meu artigo completo sobre isso se estiver interessado) .
O ponto principal é o seguinte: Se alguém discordar de você, o primeiro instinto não deve ser mostrar por que ele está errado, mas entender por que ele discorda… porque adivinhe? Eles podem realmente estar certos!
Compreender e incorporar o raciocínio deles pode criar uma solução melhor ou pode ajudá-lo a ver suas preocupações e comunicar melhor como sua solução as facilita.
Ter uma mente aberta em sua equipe de desenvolvimento cria um ambiente seguro onde as ideias podem ser desafiadas, discutidas e aprimoradas.
Resolvendo divergências em sua equipe de engenharia
É definitivamente possível que, mesmo depois de ambos os lados fazerem sua parte, não seja possível chegar a um acordo. Acontece e tudo bem! A questão então é esta: para onde vamos a partir daí?
É aí que entram essas etapas para resolver desacordos!
Etapa 1: fale em vez de digitar
Se o desacordo e a discussão iniciais começaram em um meio não verbal e não foi possível chegar a um acordo, a próxima etapa seria uma chamada de zoom ou um bate-papo pessoal.
É bastante comum que desentendimentos sejam mal-entendidos fundamentais, em que as ideias e diferenças sendo comunicadas são, na verdade, duas pessoas na mesma página. É muito mais fácil descobrir onde e como um acordo pode ser feito em um meio de comunicação melhor.
Se a conversa terminar em um impasse, não há problema. Vamos passar para a segunda etapa.
Etapa 2: pergunte à equipe
Levar o debate e as diferentes ideias para uma discussão mais ampla pode transformar um impasse em uma solução. Ao definir as diferentes opções e vantagens ou desvantagens de cada visualização, você dá uma visão completa das ideias e permite a entrada contextual de todos os colegas de equipe (até mesmo os gerentes podem avaliar suas ideias aqui).
Normalmente, a maioria começa a se formar e uma resolução é apresentada. Acho que a maioria das divergências pode ser resolvida durante esta etapa.
Se você notar que um nível mais alto de conflito está se formando, esta é a próxima etapa.
Etapa 3: envolva seu gerente
Se você está vendo que o conflito, desacordo ou tensão ocorre frequentemente entre você e um colega de equipe que se sente hostil, a próxima etapa seria envolver seu gerente.
Você pode pedir conselhos sobre como abordar a situação ou como eles podem ajudar a mitigar os conflitos. Esperançosamente, isso resolve o ambiente de trabalho hostil, caso contrário, você pode precisar levar as coisas ao RH.
Etapa 4: Envolva a liderança e/ou RH
É possível que mesmo depois de envolver seu gerente, a tensão continue. Neste ponto, é melhor trazer altos níveis de liderança ou RH.
Você não deve se sentir ameaçado ou desconfortável no trabalho e esses são os recursos que podem ajudar a resolver isso.
Etapa 5: encontre uma nova equipe ou, na pior das hipóteses, saia da empresa
Obviamente, esta etapa é a mais drástica e geralmente é a gota d’água. Mas passamos muito tempo trabalhando todas as semanas e, com a colaboração necessária das equipes de desenvolvimento de software, isso significa que você deseja estar em um ambiente em que se sinta confortável e se divirta.
Se depois de tentar todos os níveis anteriores e o conflito continuar, as últimas opções são encontrar outra equipe dentro da organização que o afaste da hostilidade ou comece a procurar trabalho em uma nova empresa.
Ambas as opções podem realmente fazer uma grande diferença na sua vida! O segredo é escolher com sabedoria, fazer muitas perguntas durante as entrevistas e encontrar uma cultura na qual você se enquadre.
Conclusão
A profissão de engenheiro de software é rara em sua capacidade de desafiar e aumentar constantemente seus membros ao longo de suas carreiras. A tecnologia realmente segue o mantra de: “A única constante na vida é a mudança.”
É uma escolha de carreira extremamente gratificante, com a oportunidade de realizar grandes coisas no mundo com ótimas pessoas. Como qualquer equipe que trabalha em qualquer setor, é provável que você se depare com conflitos e desentendimentos com colegas, mas quando o faz, agora está equipado para lidar com isso de forma eficaz.
A postagem Lidando com conflito em uma equipe de engenharia de software apareceu primeiro no LogRocket Blog .