Simyl
simylflow
Início do Curso
Módulo 4: Práticas da Equipe
Lição 2 de 5
11 min

Propriedade Coletiva do Código

Qualquer pessoa pode alterar qualquer código. Responsabilidade compartilhada por toda a base de código.

1Por Que Propriedade Coletiva?

Em modelos tradicionais, o código tem proprietários. "Esse é o módulo da Alice." "Fale com o Bob sobre a camada de banco de dados." Isso cria problemas:

Gargalos: Quando a Alice está de férias, o módulo dela não pode ser alterado. Quando o Bob está ocupado, o trabalho de banco de dados se acumula.

Silos: As pessoas não entendem o código que não possuem. A integração se torna dolorosa.

Fator ônibus: Se a Alice sair, o conhecimento sai com ela.

Propriedade coletiva significa que qualquer pessoa da equipe pode alterar qualquer código. Não há territórios pessoais. A equipe é proprietária da base de código em conjunto.

Isso assusta no início. As pessoas não vão quebrar coisas que não entendem? O código não vai ficar inconsistente? O caos não vai se instaurar?

Não, se você tiver as práticas de suporte.

O Trade-off

A propriedade individual protege o código de mudanças desinformadas. A propriedade coletiva permite fluxo e aprendizado compartilhado. XP usa práticas (testes, padrões, pareamento) para obter os benefícios da propriedade coletiva sem o caos.

2Fazendo a Propriedade Coletiva Funcionar

A propriedade coletiva requer práticas de suporte:

Testes abrangentes: Se você quebrar algo, os testes detectam imediatamente. Isso torna seguro para não especialistas alterarem o código.

Programação em par: Ao alterar código desconhecido, faça par com alguém que o conhece. O conhecimento é transferido e os erros são detectados.

Padrões de codificação: Estilo consistente significa que qualquer pessoa pode ler qualquer código. Sem tradução entre "o estilo da Alice" e "o estilo do Bob".

Integração contínua: As mudanças são integradas imediatamente. Se algo entrar em conflito ou quebrar, você fica sabendo rápido.

Refatoração: Todos melhoram o código enquanto trabalham. A base de código fica melhor, não pior, ao longo do tempo.

Sem essas práticas, a propriedade coletiva é caos. Com elas, é libertadora.

3O Contraste: Propriedade Individual

A propriedade individual tem seu lugar. Ela oferece:

  • Profundidade de especialização: Os proprietários se tornam verdadeiros especialistas em seu domínio
  • Responsabilidade clara: Uma pessoa é responsável
  • Decisões mais rápidas: Não é necessário consenso

Mas os custos são altos:

  • Gargalos: O proprietário é um ponto único de falha
  • Acúmulo de conhecimento: Intencional ou não, a especialização se concentra
  • Comportamento territorial: "Não mexa no meu código"
  • Mobilidade limitada: As pessoas não podem mudar de foco facilmente

XP diz que os custos superam os benefícios. Propriedade compartilhada com práticas de suporte supera a propriedade individual.

Algumas equipes usam um híbrido: proprietários primários e secundários. O primário conhece melhor o código; o secundário está aprendendo. Isso oferece especialização enquanto reduz o risco de gargalo.

Boa Propriedade Coletiva

Um desenvolvedor precisa corrigir um bug em um módulo desconhecido. Ele abre o código, lê os testes, faz par com alguém que conhece a área, faz a correção e executa todos os testes. O conhecimento se espalha.

Gargalo de Propriedade Individual

Um bug crítico é encontrado no módulo da Alice. Alice está de férias. A equipe decide esperar até ela voltar porque ninguém mais 'deveria' mexer no código dela. O bug permanece em produção por uma semana.

4Superando a Resistência

Migrar para a propriedade coletiva pode ser difícil:

"Mas eu sou o especialista!" Você ainda é o especialista. Você fará par com outros quando eles alterarem seu código. Sua especialização se espalha—ela não diminui.

"As pessoas vão bagunçar meu código." Os testes protegem contra bagunça. A revisão de código (ou pareamento) detecta problemas. E "seu" código não é realmente seu—é da equipe.

"Não consigo acompanhar todo o código." Você não precisa. Você aprende o que precisa quando precisa. Faça par com especialistas. Leia os testes. Siga os padrões.

"Nosso código é muito complexo para não especialistas." Isso é um code smell, não um argumento de propriedade. Código complexo deve ser simplificado. Até lá, a programação em par protege contra mudanças desinformadas.

A mudança é tanto cultural quanto técnica. Ela requer confiança, transparência e uma mentalidade de crescimento.

5Passos Práticos

Migrando para a propriedade coletiva gradualmente:

Semana 1-2: Faça par entre domínios. Faça especialistas fazerem par com não especialistas no código uns dos outros.

Semana 3-4: Remova rótulos explícitos de propriedade. Pare de dizer "o módulo da Alice". Comece a dizer "o módulo de pagamento".

Semana 5-6: Incentive a polinização cruzada. Ao atribuir histórias, coloque intencionalmente pessoas em código desconhecido (com suporte de pareamento).

Contínuo: Celebre o compartilhamento de conhecimento. Reconheça quando alguém aprende uma nova área ou quando um "proprietário" transfere conhecimento com sucesso.

Meça o fator ônibus: Quantas pessoas podem trabalhar significativamente em cada área da base de código? Busque pelo menos 2, idealmente 3+.

Uma verificação rápida do fator ônibus: para cada área principal do código, quem poderia corrigir um bug de produção lá às 3 da manhã? Se a resposta for uma pessoa, você tem um problema.

Principais Conclusões
  • A propriedade coletiva elimina gargalos e espalha o conhecimento
  • Ela requer práticas de suporte: testes, pareamento, padrões, CI
  • A propriedade individual oferece especialização ao custo de gargalos
  • A mudança cultural requer confiança e uma mentalidade de crescimento
  • Meça o fator ônibus: quantas pessoas podem trabalhar em cada área?
Armadilhas Comuns a Evitar
  • Propriedade coletiva sem testes (mudanças quebram coisas)
  • Propriedade coletiva sem pareamento (erros não são detectados)
  • Remoção forçada de propriedade sem adesão cultural
  • Confundir propriedade coletiva com falta de responsabilidade

Exercícios Práticos