Construir para um, desenhar para mil
O primeiro usuário do sistema de finanças que escrevi fui eu. O segundo não existe. Mesmo assim, cada tabela do banco tem uma coluna que diz a quem pertence a linha, cada consulta filtra por essa coluna, e há um painel de administração onde posso ver a lista de usuários. A lista tem uma pessoa. Olho para aquela tela de vez em quando e acho engraçado, e depois acho outra coisa, menos fácil de nomear.
Faço isso com tudo que construo para mim. O aplicativo de rotina, o de finanças, o que ainda não tem nome. Todos nascem com a estrutura de um produto que mil pessoas usariam, sendo que a única que usa sou eu e a única que vai usar, provavelmente, sou eu. Amigos que programam acham desperdício. Levo o dobro do tempo para chegar à mesma tela. Concordo com a conta e continuo fazendo, o que significa que a conta não captura o motivo.
O motivo que eu dava, no começo, era otimismo. Um dia alguém mais vai querer. Tem um aplicativo de corrida que começou como diário de treino de um sujeito e virou uma rede social de milhões; eu pensava nele como quem pensa num bilhete de loteria. Mas o segundo usuário nunca chega, e eu continuo desenhando para ele, e em algum momento tive que admitir que não era por ele.
“A arquitetura não é uma aposta no segundo usuário. É uma recusa a ser o caso especial.”
É por mim, e é contra mim. Quando você constrói para uma pessoa só, essa pessoa vira o caso especial de tudo. O campo que só você preenche daquele jeito. A exceção que está no código porque numa terça-feira você precisou dela. O atalho que só faz sentido para quem conhece a história. Um sistema feito para um é um sistema cheio de segredos que só o autor entende, e o autor, daqui a dois anos, não vai entender mais.
Desenhar para mil me obriga a separar o que é meu do que é o problema. A coluna de dono em cada tabela é a forma concreta de dizer: você não é o centro deste sistema, é um dos usuários dele. O painel de administração com uma pessoa é um espelho. Olho para ele e me vejo do lado de fora, como dado, como linha, e isso muda o que eu aceito escrever.
Tem uma disciplina nisso que lembra a de escrever para um leitor que não existe. Ninguém vai ler, e mesmo assim você não deixa a frase torta, porque a frase torta é um acordo entre você e a sua preguiça, e o leitor imaginário não assinou o acordo. O usuário número dois é o meu leitor imaginário. Ele não existe para me dar lucro. Existe para me impedir de fazer gambiarra em paz.
Não vou fingir que é só isso. Tem vaidade também, a de construir como quem constrói coisas sérias. E tem o risco de o rigor virar desculpa: uma pessoa pode passar um ano fazendo a arquitetura perfeita de um produto que nunca vai abrir. Eu já passei meses nesse lugar. A linha entre desenhar para mil e esconder-se de entregar para um é fina, e ninguém me avisa quando cruzo.
Mas o sistema de finanças está rodando. Tem um usuário. A coluna de dono está lá, em cada linha, apontando para a mesma pessoa. Se o segundo chegar, nada precisa mudar. Se nunca chegar, também não. A arquitetura não é uma aposta nele. É uma recusa a ser o caso especial, mesmo sendo, por enquanto, o único caso.
— MS