Os Sistemas Dentro de um Time de Software

Esse post foi traduzido automaticamente do inglês. Se você encontrar algum erro, por favor entre em contato.

Tenho discutido como aplicar Pensamento Sistêmico na liderança de engenharia e como entender os sistemas e processos que envolvem seu time é a melhor forma de obter bons resultados, tanto para o time quanto para as pessoas dentro dele.

No entanto, isso é relativamente abstrato. Na prática, o que significa pensar sobre os sistemas em um time? Onde você deve olhar e o que pode fazer a respeito?

Vou abordar isso falando sobre sistemas em um time de software. Embora times variem, alguns processos padrão existem na maioria deles. Mesmo que os exemplos descritos aqui não se apliquem ao seu time, o raciocínio por trás de identificá-los e entendê-los se aplica. Olhar para alguns exemplos práticos vai tornar mais fácil de visualizar.

Por que você deveria se importar?

Porque, quer entendamos ou não, sistemas sempre afetam como trabalhamos, e engenharia de software não é exceção.

Entender e iterar em sistemas e processos é a forma mais fácil de melhorar os resultados do seu time, tanto do ponto de vista de produtividade quanto de satisfação dos engenheiros. Se 90% do desempenho de um time está dentro do sistema, é aí que você pode obter o melhor resultado da sua atenção.

A visão de 10.000 pés

De um ponto de vista de alto nível, três áreas principais precisam funcionar bem para um time ter sucesso a longo prazo: Produto, Engenharia e Pessoas.

Do ponto de vista de produto, um time precisa produzir algo que valha a pena. Esse é o propósito principal da sua existência. Do ponto de vista técnico, o time também precisa entregar trabalho com qualidade suficiente para atender ao propósito do produto. E da perspectiva de pessoas, engenheiros trabalhando em um time precisam estar satisfeitos com seus papéis.

Se você é um engineering manager (EM), todas essas áreas afetam e são afetadas por como os engenheiros no seu time trabalham juntos. Seu papel como EM é então entendê-las e agir para criar o melhor ambiente de trabalho possível.

The three main areas affecting a software team As três principais áreas que afetam um time de software

Produto — Criando algo que as pessoas querem

É fácil (e às vezes conveniente) olhar para a gestão de produto como uma área que EMs não deveriam ter interesse em influenciar. No entanto, embora Product Managers sejam donos da decisão sobre o que está sendo desenvolvido, múltiplos processos dentro da gestão de produto impactarão significativamente como os engenheiros trabalham.

Como o trabalho vai da ideia à produção? O ciclo de descoberta e planejamento de produto vai definir o trabalho que os engenheiros executarão. Por exemplo, um sistema que não inclui uma perspectiva de engenharia em suas etapas de planejamento pode resultar em trabalho desnecessariamente complexo para a engenharia durante a execução.

Como os requisitos e tarefas são definidos? Um dos conselhos que dou a EMs é que o formato das tarefas é uma das coisas mais importantes a se prestar atenção. Requisitos são a entrada para 100% do trabalho que engenheiros fazem, e requisitos ineficazes podem levar a mudanças de escopo, falta de clareza no trabalho, falta de colaboração e muitos outros problemas que afetam times de engenharia.

Como o sucesso é definido? Da perspectiva de produto, como um projeto é avaliado para ser considerado bem-sucedido no seu ambiente? Isso vai, em última instância, determinar onde o time de engenharia pode sentir pressão. Por exemplo, se prazos rígidos fazem parte da sua rotina, isso afetará significativamente sua forma de trabalhar em comparação com empresas que se preocupam menos com tempo e mais com qualidade.

Engenharia — Entregando software

Podemos encontrar muitos processos que afetam os resultados do seu time e a experiência dos seus engenheiros dentro do time quando olhamos para como um time faz trabalho de engenharia. Aqui estão alguns exemplos comuns.

Como as iterações são gerenciadas? Como seu time planeja e gerencia sprints e iterações vai definir como os engenheiros trabalham no dia a dia.

Como uma tarefa vai da criação à entrega? Quem precisa trabalhar nela e como essas pessoas colaboram? Como o trabalho é testado para qualidade? Qual é a definição de pronto? Essas perguntas e outras fazem parte de entender como seu time trabalha. E isso é chave para seus resultados.

Como seus projetos e trabalho são organizados? Seu time trabalha com projetos ou iniciativas contínuas? Quem planeja e como são liderados? Como discutido no passado, a liderança de projetos impactará a experiência de todos que trabalham nele.

Pessoas — Tornando engenheiros satisfeitos

Por fim, os processos ao redor das pessoas no seu time são essenciais para como o time trabalha. Isso vai definir a experiência dos membros do time e como seu time entrega trabalho para a empresa.

Quais são os ciclos de feedback para engenheiros? Como os engenheiros recebem feedback sobre seu trabalho? Isso se aplica tanto a feedback técnico (revisões de PR, documentos de design) quanto a feedback geral (é dado com frequência ou não?). É impossível entender desempenho sem entender os ciclos de feedback.

Como um engenheiro aprende no trabalho? Como seu time e empresa colaboram e fornecem oportunidades de aprendizado afetará o crescimento individual e o desempenho do time. Embora isso sempre tenha sido importante, é ainda mais essencial no cenário atual de trabalho remoto.

Como o crescimento de carreira funciona na sua empresa? Em que os engenheiros são avaliados e promovidos? Como o plano de carreira é definido? Diga-me como você me avalia, e eu direi como me comporto. Todos estão trabalhando em direção ao crescimento, e entender como eles o alcançam na prática vai ajudá-lo a saber como os engenheiros do seu time se comportam.

É tudo uma grande sobreposição, mas ainda muito útil

Como você pode ver, a maioria desses processos se sobrepõe entre si. Como sua empresa recompensa um engenheiro vai influenciar como ele trabalha no time. Como o time trabalha junto vai afetar o quanto aprendem e são recompensados.

Essa complexidade é típica em qualquer situação real. Pensar em sistemas não significa dissecar um ambiente complexo em regras básicas. Mas sim entender os principais ciclos de feedback em um ambiente e como eles se afetam mutuamente.

E isso é muito útil. Sempre que houver uma área de melhoria, o melhor caminho é entender como aquilo funciona da perspectiva do sujeito. Por exemplo, para analisar como as pessoas crescem dentro da empresa, olhe para o processo de obter oportunidades de aprendizado/crescimento da perspectiva do engenheiro. Para melhorar como um time trabalha, é essencial entender como uma tarefa se move dos requisitos até concluída, da perspectiva daquela tarefa: quem tem que contribuir com ela? Onde ela fica bloqueada?

Como EM e líder de time, você deveria rotineiramente observar e entender os principais processos dentro dos seus times. Isso vai destacar as oportunidades que você tem para melhoria. E quando melhoria é necessária, analisar o processo em que você está focando e seus sistemas adjacentes vai destacar as melhores alavancas que você pode puxar. Também mostrará uma forma de medir os resultados e codificar suas mudanças.

Esse post faz parte de uma série sobre Liderando Times de Software com Pensamento Sistêmico.

Gostou deste post? Escrevo sobre liderança em times de engenharia de software. Assine para ficar por dentro.