Lei de Conway e o trabalho remoto

Elemar Júnior


Estamos no iTunes, Spotify e no Deezer.

As implicações da lei de Conway vão muito além da forma como estruturamos as equipes e o reflexo dessa estruturação nos componentes de um software. Como bem observado por Mark Seeman, elas aparecem, também, como consequência do time trabalhar 1) compartilhando um mesmo ambiente físico; 2) de forma remota em horários combinados ou, ainda, 3) de forma remota de forma não sincronizada.

Retomando a lei:

Qualquer empresa que projeta um sistema, inevitavelmente, produz um projeto cuja a estrutura é uma cópia da estrutura de comunicação da organização. (Mel Conway)

Time compartilhando um mesmo ambiente físico

Quando um time trabalha todo em um mesmo ambiente físico, dúvidas são respondidas mais rapidamente. Entretanto, toda vez que alguém precisa esclarecer algum ponto, faz isso as custas de uma interrupção no trabalho de outras pessoas. Ou seja, trabalhando em um mesmo ambiente físico, alguém consegue respostas mais rápidas – o que favorece sua produtividade – mas, em compensação, interrompe um ou mais colegas, impactando a concentração e prejudicando a produtividade destes.

Quando as pessoas trabalham em um mesmo ambiente físico, por terem acesso mais fácil a informação, geralmente, produzem menos documentação, tomam menos cuidado com o código e deixam as definições arquiteturais mais frouxas. Afinal, é relativamente fácil consultar, diretamente, o “especialista” sempre que dúvidas surgem.

A consequência deste “afrouxamento” é o aumento na frequência das reuniões. Muitas delas, são recursos extremamente custosos para disseminar o conhecimento que poderia estar explícito em outros meios. Entretanto, são os meios mais óbvios e rotineiramente aceito de pagar a ineficiência.

Quando as pessoas trabalham juntas, é natural, e até desejável que todo desenvolvedor, ao iniciar uma tarefa, a encerre. Isso, geralmente é possível pois não ocorrem grandes pausas (espera).

Finalmente, o trabalho de times que compartilham o mesmo ambiente físico facilita o acoplamento, tanto no desenvolvimento, quanto no deploy.

Time trabalhando de forma remota em horários combinados

Em geral, times acostumados a trabalhar compartilhando um mesmo local físico, quando precisam trabalhar remotamente de uma hora para outra (como agora, com o Coronavírus), acabam adotando meios que replicam as práticas do modo antigo. Não é raro que se imponha que as pessoas trabalhem todas nos mesmos horários. Muitas vezes, inclusive, não é incomum que se indique as pessoas “deixar um canal de vídeo aberto” todo o tempo.

Eventualmente, VPNs dão lugar a repositórios de artefatos na nuvem. Entretanto, a dinâmica de interrupções costuma ser preservada. As reuniões dão lugar as “calls” de alinhamento e, com frequência, são ampliadas as práticas de code review e emergem mais documentos (quase sempre resultantes da falta de confiança e não para garantir alinhamento).

O ruído na comunicação acaba forçando a elaboração de designs menos acoplados mas, não raro, os prazos ficam mais elásticos.

Time trabalhando de forma remota de maneira assíncrona

O trabalho remoto, não sincronizado, não permite que dúvidas sejam resolvidas rapidamente. Se alguém tem uma dúvida, precisa utilizar meios de comunicação assíncronos – enviando emails, abrindo tickets de atendimento, etc – e precisa esperar horas ou até dias até obter uma resposta.

Quando o time trabalha de forma remota, de maneira assíncrona, precisa criar formas de reduzir a dependência entre seus membros, escrevendo documentações mais amplas, código limpo e arquitetura assertiva.

Eventualmente, desenvolvedores trabalhando em times distribuídos, de maneira assíncrona, vão precisar interagir com os colegas para continuar o trabalho e, por isso, vão experimentar pausas mais longas. Por causa disso, para não sacrificar demais a produtividade, vão precisar abrir outros branches no código e iniciar mais de uma atividade, contrariando práticas indicadas por metodologias ágeis. A necessidade, entretanto, de precisar trabalhar em atividades paralelas implica que a estrutura dos sistemas sejam mais coesas e com acoplamento mais baixo.

Times distribuídos, trabalhando de maneira assíncrona, são os mais preparados para desenvolver sistemas distribuídos, como microsserviços.

Concluindo

Quanto mais acoplada for a estrutura de comunicação do time, mais acoplados tendem a ser os componentes do software.

Se toda documentação só é útil se for utilizada, é natural que ela seja melhor e mais útil na proporção em que é mais difícil “perguntar ao colega”. De forma análoga, a qualidade do código tende a melhorar quando o custo para entender aumenta e o projeto da arquitetura fica mais relevante quando for mais difícil comunicar mudanças importantes para todos.

Código escrito por um time que compartilha espaço físico costuma ficar “pronto” em menos tempo, com custo de desenvolvimento menor. Já o código escrito por um time distribuído e assíncrono, costuma ser mais “difícil” de fazer mas muito mais barato de manter.

Talvez o Coronavírus nos obrigue a aprender formas diferentes de organizar nossos times e isso pode ter impacto muito positivo nos códigos que produzimos.

Em resumo

O fato
As implicações da lei de Conway vão muito além da forma como estruturamos as equipes e o reflexo dessa estruturação nos componentes de um software. A decisão de trabalhar compartilhando uma mesmo ambiente físico ou de maneira assíncrona e remota, também acaba impactando nos métodos que adotamos e no tipo de software que escrevemos.
O insight
Times assíncronos distribuídos acabam tendo que escrever código mais limpo, menos acoplado, com documentação mais eficiente e abrangente. Logo, são mais preparados para desenvolver sistemas distribuídos modernos, como aqueles com arquiteturas baseadas em microsserviços.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Gilton Nascimento
Gilton Nascimento
2 anos atrás

Gostei do áudio, boas informações!! Grato por compartilhar!! =D

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala
Arquitetura de Software

Estratégias para modernização do legado

Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas
Infraestrutura e Nuvem

Migração para a nuvem, mais do que mudança tecnológica, implica em mudança da cultura organizacional

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

1
0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Lei de Conway e o trabalho remoto

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?