O padrão de quem conjura
O estúdio tem seis dias. Antes que apanhe hábitos por acidente, fica aqui escrito o padrão por que se rege — agora, enquanto ser honesto ainda é barato.
Nesta página
A linha por baixo do nosso nome diz: Não nos limitamos a desenvolver — conjuramos cada linha de código e cada píxel. A primeira pessoa de fora do estúdio que a leu perguntou se conjurar não seria demasiado para um estúdio boutique de software que vai passar a maior parte da vida a escrever TypeScript e a rever pull requests. É uma pergunta justa. Fiquei com a palavra, e este texto é o argumento a favor dela.
Conjurar nomeia um efeito, não um método. Quando o software parece ligeiramente impossível — a lista que rola sem um solavanco num telemóvel de há quatro anos, o formulário que recupera a resposta meio escrita depois de a ligação cair, a atualização de que ninguém teve de avisar ninguém — não está a ver magia. Está a ver a ausência das doze pequenas falhas que foi treinado para esperar. A magia funciona escondendo o trabalho. A engenharia funciona escolhendo fazer o trabalho invisível numa terça-feira, quando ninguém chegará a ver a versão em que não o fez.
Conjurar não é um estado de espírito. É um padrão: uma lista de coisas que fazemos sempre, e muito especialmente nas semanas em que saltá-las não custaria nada hoje.
Os padrões estão fora de moda porque soam a burocracia. Não são. Um padrão é aquilo que decide por si às seis da tarde de uma quinta-feira, com o cliente contente, a demo aprovada, e a jogada certa a ser mais duas horas de trabalho que não farão diferença visível nenhuma. O gosto, sozinho, perde essa discussão todas as vezes. Um padrão escrito ganha-a metade das vezes, e é aí que está toda a margem entre estúdios.
Contratamos arquitetos, não montadores
A distinção não é de senioridade nem de títulos. Um montador pergunta o que diz o ticket. Um arquiteto pergunta o que o ticket implica no mês dezoito, quando outras três funcionalidades dependerem do atalho que ele propõe. Os dois escrevem código que funciona. Só um deles continua a sair barato no segundo ano.
Escrever código nunca foi a competência escassa, e está a ficar menos escassa a cada trimestre. O que continua escasso é o discernimento: que invariante sustenta o edifício, que abstração compensa o peso que tem, que funcionalidade pedida são afinal duas funcionalidades e um mal-entendido. Um montador acrescenta aquilo que lhe pediram. Um arquiteto pergunta o que tem de ser apagado agora que a coisa existe — e está disposto a dizer não, e é isto que eu construiria em vez disso, a mim, por escrito.
Por isso o critério de contratação é um critério de discernimento. Quero que as discussões internas deste estúdio sejam sobre o que apagar, não sobre o que acrescentar. Alongar um backlog está ao alcance de qualquer um.
Dizer aquilo que a coisa não é
Todo o sistema tem uma fronteira onde deixa de ser verdadeiro. As caches ficam obsoletas. As estimativas pressupõem um âmbito. Os modelos são confiantes acerca de coisas que nunca viram. O costume da indústria é deixar essa fronteira fora da frase e torcer para que ninguém dê com ela em produção. A nossa regra vai ao contrário: o limite pertence à interface, no mesmo corpo de letra que a promessa.
A frase que admite um limite faz parte do produto. Se não está na interface, não acabámos de lançar.
Já se vê nos dois sítios onde temos mesmo de ser honestos. A calculadora de preços põe a ressalva onde está o número, e não num rodapé: uma estimativa mantém-se até o âmbito e a descoberta dizerem o contrário. A garantia de reembolso enumera todas as condições que traz consigo no mesmo fôlego em que faz a promessa. Publicar as condições custa um pouco de conversão e compra a única coisa que vale a pena ter no primeiro dia, que é um cliente que não é apanhado de surpresa no terceiro mês.
Relacionado, e igualmente vinculativo: são os números que convencem. «Rápido» é um relatório sobre aquilo que sentimos pelo nosso próprio trabalho. «180 ms no percentil 95, num Android de gama média sobre 4G» é uma afirmação que pode ir falsificar. Os adjetivos pedem para ser acreditados; os números pedem para ser verificados. Preferimos ser verificados — e, quando ainda não temos a medição, a jogada honesta é dizer que a medição não existe, em vez de ir buscar um adjetivo maior.
Limpar ao desmontar é uma posição moral
Este é o exemplo mais pequeno do padrão que conheço, e aquele que uso para o explicar a quem acha isto tudo abstrato. Um componente interativo adquire coisas enquanto vive: temporizadores, ouvintes de eventos, sockets, observadores, frames de animação, um contexto de GPU. Nada na linguagem o obriga a devolvê-los quando o componente desaparece. Salte esse passo e a aplicação continua a funcionar — os testes passam, a demo corre bem, a funcionalidade sai.
Depois alguém navega pelo seu produto durante vinte minutos. Os temporizadores abandonados continuam todos a disparar. O telemóvel aquece, a ventoinha do portátil acelera, e o separador que estava impecável na sua secretária morre num comboio a caminho do trabalho. Ninguém regista esse defeito como esqueceste-te de uma função de limpeza; registam-no como «a app é pesada» — ou, mais frequentemente, não registam nada e deixam de a usar.
Chamo-lhe posição moral porque custa uma tarde e não compra nada que se possa pôr numa demo. Faz-se por uma máquina que nunca verá, de uma pessoa que nunca saberá que foi poupada. Esse instinto escala para tudo o que está acima dele: sessões que terminam mesmo, tarefas que param quando as cancela, caches com uma validade que alguém escolheu de propósito, funcionalidades que são removidas assim que deixam de pagar a sua manutenção. Software que não arruma atrás de si é software que não respeita a máquina onde está de visita.
Porque é que um estúdio pequeno publica os preços
A assimetria de informação é o truque preferido desta indústria e também o mais antigo. «Contacte-nos para saber o preço» não quer dizer que o preço seja complicado; quer dizer que o preço é negociável numa direção que depende do que a agência conseguir adivinhar sobre o seu orçamento. O número existe antes da chamada. A chamada é sobre quem fica a sabê-lo primeiro.
Publicámos o nosso no primeiro dia, com a aritmética no ecrã — unidades por rubrica, os multiplicadores, a faixa, as semanas. Pode chegar a um número às duas da manhã sem falar com ninguém e, se o número não lhe servir, perdeu noventa segundos em vez de duas reuniões e uma semana de cortesias.
Isto tem um custo real, e prefiro declará-lo a fingir que a escolha foi de graça. Entrega a nossa tabela à concorrência, convida à comparação por preço com quem nos vai baixar de bom grado e retira-nos a hipótese de cobrar valores diferentes a dois clientes pelo mesmo trabalho. Não quero essa hipótese. Um preço que teria vergonha de publicar é um preço que devia ter vergonha de cobrar.
A garantia de reembolso de 100% é a mesma ideia com etiqueta de preço. Se o projeto não for lançado antes do prazo contratado, não paga. Converte a nossa confiança de adjetivo em responsabilidade do nosso lado da mesa, que é a única forma de confiança sobre a qual um comprador pode agir.
Há uma versão disto tudo que se aplica antes de alguém se tornar cliente, e é a parte que a maioria dos estúdios trata como decoração. O que devemos a um visitante: páginas que carregam depressa no telemóvel que ele tem mesmo, um preço que encontra sem entregar um endereço de e-mail, nenhuma contagem decrescente que reinicia ao recarregar, nenhuma caixa de cookies desenhada para que o botão errado seja mais fácil de acertar, nenhum widget a fazer de pessoa encantada por ajudar. Os dark patterns são apenas um padrão apontado ao cliente em vez de ao código.
Nada disto é impressionante na primeira semana. Qualquer um mantém um padrão enquanto o estúdio é pequeno, a agenda está vazia e nenhum prazo mostrou ainda os dentes. A razão para o escrever agora é precisamente essa: mais tarde vai dar jeito ignorá-lo, e um padrão escrito é falsificável de uma maneira que um valor corporativo nunca é. O site entrou no ar há seis dias e os preços são públicos desde a primeira hora. As duas coisas são verificáveis. Verifiquem, por favor.