Ideia

O comportamento real de um produto não está só no repositório: ele depende da configuração implantada

Info

Escrito originalmente em francês. Traduzido por IA — o sentido foi preservado, não a prosa.

Ideia principal

Um repositório que contém um feature flag não contém um comportamento, contém dois — e não diz qual é executado. A leitura do código estabelece então que os dois existem, nunca qual se aplica. Quando um Customer Success Manager pergunta "em que condições esse workflow trava para esse cliente?", a resposta não está nos arquivos: está no estado do flag para o ambiente em que esse cliente trabalha.

Daí decorrem dois regimes de resposta, e eles não valem a mesma coisa. Sem acesso ao ambiente, a resposta continua condicional: se o flag estiver ativado, o comportamento é este, senão é diferente. Com esse acesso, ela vira uma resposta sobre o produto tal como aquele cliente o vive, na configuração dele, nesta data.

O ponto é mais amplo que o mecanismo dos flags. Uma pergunta de suporte ou de pré-venda quase nunca trata do código abstrato; ela trata do que uma conta específica observa na tela. Designar o repositório como fonte de verdade resolve a discordância entre o código e uma documentação desatualizada, e deixa inteira a distância entre o código e uma implantação. A fonte completa do comportamento observado é um par: o repositório e o estado do ambiente que o executa.

Por que isso importa

Isso impede uma leitura apressada demais do deslocamento para o código. "A verdade é o que está rodando" designa o repositório enquanto falamos do produto em geral, e deixa de designá-lo assim que falamos de um cliente — o que é, no entanto, o caso da maioria das perguntas que chegam todo dia.

Isso também fixa o que um vendedor tem o direito de prometer. Um comportamento presente no repositório não é um comportamento disponível para o prospect que ele tem na frente, e a diferença entre os dois se lê num ajuste, não no código.

Nuances e limites

A dependência da configuração só diz respeito a uma parte do produto. No essencial do comportamento, nenhum interruptor está em jogo e o repositório decide sozinho; tratar cada resposta como condicional por princípio seria o mesmo que não afirmar mais nada.

O acesso ao ambiente, aliás, não é uma simples questão técnica. Ler a configuração de produção de um cliente envolve dados reais e regras de confidencialidade, e nem toda organização pode abri-lo para o mesmo conjunto de áreas.

Por fim, o estado de um flag tem data como tudo o resto. Uma resposta exata no momento em que é dada deixa de ser exata na primeira mudança de ajuste, sem que nenhuma modificação do código tenha sinalizado isso.

Questões em aberto

  • Quem, numa organização, autoriza um dispositivo de resposta a ler a configuração de produção de um cliente, e sob qual controle?
  • Como uma resposta condicional é transmitida a um cliente sem virar inaproveitável para quem a leva a uma reunião?