Gosto De Regras Bem Definidas Porque
O problema com a ambiguidade em projetos técnicos
Quase todo mundo que trabalha com desenvolvimento de software ou gestão de projetos passou por uma situação em que uma regra mal definida causou retrabalho. Eu passei. Na verdade, passei várias vezes. A diferença entre um ciclo de desenvolvimento que flui e um que se arrasta por semanas muitas vezes não está na complexidade do sistema, mas na qualidade das regras que sustentam as decisões. Quando eu entro num projeto novo, a primeira coisa que verifico não é o código ou a arquitetura. São as regras. Específicamente, regras bem definidas porque elas eliminam margem para interpretação pessoal, que é onde a maioria dos problemas nasce.
Eu gosto de regras bem definidas porque elas eliminam a ambiguidade como fonte de erro
Vamos direto ao ponto. Regra bem definida tem três componentes: a condição de gatilho, a ação esperada e o critério de sucesso. Se algum desses três estiver ausente ou vagamente descrito, a regra não existe de fato. Ela está apenas escrita em algum documento que ninguém lê. Eu tenho um exemplo prático que ilustra isso. Havia uns dois anos atrás, num projeto de migração de banco de dados onde a regra dizia algo como "todos os campos de data devem ser convertidos para UTC". Parecia simples. Até que percebemos que "converter para UTC" significava coisas diferentes dependendo de quem estava lendo. Alguns tratavam como "armazenar em UTC", outros como "converter no momento da leitura", e um terceiro grupo entendia como "converter apenas datas históricas". O resultado foi uma semana inteira de discussão, mais quatro dias de retrabalho, e um deploy que quase quebraram a produção. A correção que eu usei foi criar uma matriz de decisão que cobria cada combinação possível de contexto de uso com o formato de data esperado. Em vez de uma frase solta, a regra passou a ter forma de tabela: contexto, entrada, transformação, saída, e comportamento em edge cases. Esse pequeno esforço reduziu o tempo de implementação em cerca de 60% e eliminou completamente as divergências na equipe.
O que poucos percebem é que regras bem definidas não são apenas sobre clareza. Elas servem como mecanismo de teste. Se você consegue escrever uma regra de forma suficientemente precisa para que outra pessoa não consiga interpretar de jeito diferente, você automaticamente criou um critério verificável. Isso significa que a regra pode ser testada automaticamente, o que é um ganho enorme em ambientes de integração contínua. Por outro lado, existem situations onde regras extremamente rígidas se tornam prejudiciais. Eu vi times que seguiram regras até o ponto de absurdo onde a exceção que não estava prevista na documentação causou mais problemas do que a flexibilidade teria causado. O caso mais claro que eu tive foi com regras de logging: a especificação pedia logging detalhado em todos os caminhos de erro, mas isso gerou tanto volume de dados que o disco encheu em produção durante um picos de tráfego, derrubando o serviço. A solução foi adicionar um parâmetro de level dinâmico baseado na carga do sistema, algo que a regra original simplesmente não contemplava. Outro ponto que as pessoas costumam perder é a distinção entre regra e recomendação. Regra é binária: ela é cumprida ou não. Recomendação é subjetiva: ela pode ser seguida ou não, dependendo do contexto. Misturar os dois é uma das causas mais comuns de confusão em equipes. Quando eu vejo uma regra escrita, eu sempre faço a pergunta: "essa regra pode ser avaliada como verdadeira ou falsa sem necessidade de opinião?". Se a resposta for não, ela provavelmente não é uma regra, e tratá-la como tal gera atrito desnecessário.
Na prática, a forma mais eficiente de criar regras bem definidas que eu conheço é escrever cada uma usando o padrão Given-When-Then. Você descreve o contexto inicial, a ação que acontece, e o resultado esperado. Isso parece básico, mas a maioria das pessoas pula a parte do contexto e vai direto para a ação, o que deixa lacunas perigosas. Por exemplo, uma regra que diz "o sistema deve rejeitar senhas fracas" não é bem definida. Uma regra bem definida seria: "Given um usuário tentando criar uma conta com senha de 6 caracteres contendo apenas números, When o sistema processa o cadastro, Then ele retorna erro 400 com mensagem 'Senha deve ter no mínimo 8 caracteres, incluindo pelo menos uma letra'". Diferença abissal. Outro detalhe importante é que regras bem definidas precisam de prazo de validade. Uma regra que era válida há três anos pode não fazer mais sentido hoje. Eu mantinha uma pasta de documentação com regras que revisávamos a cada dois sprints. O processo era simples: cada regra precisava de um owner que justificasse sua existência. Se ninguém conseguia explicar por que a regra ainda era necessária, ela era removida. Isso preventiu acúmulo de regras obsoletas que costumam aparecer em projetos maduros e que acabam sendo ignoradas justamente porque são demais para processar. Se você está começando agora e quer aplicar isso, a melhor dica que eu posso dar é não tentar definir todas as regras de uma vez. Comece pelas regras que geram mais conflito na sua equipe. Identifique onde as discussões mais frequentes acontecem e escreva regras para esses pontos específicos. Geralmente, 20% das regras cobrem 80% dos atritos. O resto vem naturalmente conforme o projeto avança.
Existe uma alternativa quando regras bem definidas não funcionam: frameworks ágeis que priorizam adaptação sobre documentação. Time que trabalha com requisitos altamente voláteis, como startups em fase early-stage, muitas vezes se beneficia mais de decisões colaborativas em tempo real do que de regras escritas. Isso não é melhor ou pior, é apenas diferente. O importante é reconhecer quando você está numa situação que exige rigidez normativa e quando exige flexibilidade. O que eu aprendi na prática é que gosto de regras bem definidas porque elas reduzem o custo cognitivo de tomada de decisão. Quando você sabe exatamente o que esperar, gasta menos energia analisando cenários e mais energia resolvendo problemas reais. O problema é que a maioria dos lugares não consegue manter esse padrão por muito tempo, seja por pressão de entrega, falta de revisões periódicas, ou simplesmente porque criar regras boas exige tempo que raramente é considerado no cronograma. Se você quer avaliar a qualidade das regras no seu ambiente atual, faz uma verificação rápida: pegue três regras qualquer e peça para alguém da equipe explicar o que elas significam na prática. Se as explicações forem consistentes, as regras estão boas. Se forem diferentes, você tem um problema de definição que precisa ser corrigido antes que vire retrabalho.
Galeria
-
Eu gosto das regras, porque só com... Jane Silva - Pensador -
KUMON - Regras dos porquês A língua portuguesa é cheia de regras e ... -
Compreender estabelecimento de regras de convivência com a turma -
kit regras de boa convivência para imprimir e usar em sala de aula ...