Charlie, arquiteto sênior em uma organização de desenvolvimento de software de médio porte, estava sentado em sua mesa analisando as especificações do mais recente projeto de desenvolvimento de sua empresa. Enquanto ele analisava de alto nível como dividir o trabalho da primeira fase do projeto, Janice, uma desenvolvedora obstinada e em início de carreira, entrou em seu escritório.
Janice não hesita. “Ei, vejo que nosso novo projeto exigirá alguma criptografia. Eu gostaria de tentar escrever a biblioteca de criptografia para o projeto. Ultimamente tenho observado vários algoritmos e gostaria de experimentar.”
Charlie, claro, admira o entusiasmo, mas sabe imediatamente que isso não vai acontecer.
“Janice, obrigado pela oferta, mas vou lhe dizer um não quanto a isso. E aqui está o porquê: a criptografia é realmente difícil. A criptografia está repleta de perigos. A criptografia atrai todos os tipos de malfeitores que tentarão descriptografar tudo o que estamos protegendo. Qualquer falha, qualquer bug, qualquer problema poderia nos expor a enormes riscos de segurança.”
“Ok, então por que não posso fazer isso? Estou à altura do desafio!”
“Bem, com todo o respeito, você não está. Droga, não estou nem perto de estar à altura disso. Na verdade, poucos desenvolvedores o são. Veja, a criptografia é uma daquelas coisas que você absolutamente, positivamente, deveria deixar para os especialistas que criaram soluções públicas, bem avaliadas, testadas em batalha e de código aberto. A criptografia é algo que precisa funcionar perfeitamente, ou pelo menos tão próximo da perfeição quanto os verdadeiros especialistas conseguem. Os bandidos são igualmente inteligentes e capazes, e soluções comprovadas são o único caminho a percorrer aqui.”
“Hmmm. Ok, acho que faz sentido. Mas ainda acho que seria divertido fazer isso”, disse Janice com um sorriso ao sair.
Mas o entusiasmo de Janice inspirou Charlie e ele teve uma ideia. Ele caminhou até o escritório de seu chefe e sentou-se. Ela olhou para ele e disse: “E aí?”
“Allison, não consigo mais fazer muita codificação greenfield, então, pessoalmente, quero construir o sistema de enfileiramento de mensagens para nosso novo projeto. Eu sei que o clássico 'construir vs. comprar' é sempre uma decisão difícil, mas eu adoraria assumir isso.” Charlie estava se sentindo muito bem com a ideia.
Allison recostou-se por um momento e olhou para ele com um leve sorriso. “Eu sei como você se sente, Charlie. Seria divertido. Mas vou te dizer um não sobre isso.”
Charlie sorriu interiormente com a ironia.
“Olha, eu sei que você é bom, mas até você terá que admitir que não é tão bom assim. O enfileiramento de mensagens é complexo. Acertar é difícil, e otimizar essa correção é ainda mais difícil. Existem inúmeras filas de mensagens totalmente funcionais, completas, funcionais e comprovadas no mundo do código aberto. Claro, você provavelmente conseguiria algo funcionando, mas não somos especialistas em fila de mensagens por aqui. Levaria muito, muito tempo para garantir que você cobrisse toda a superfície dos requisitos e, mesmo assim, não teríamos certeza absoluta.”
Charlie acenou com a cabeça com conhecimento de causa, admitindo para si mesmo que ela estava certa.
“E então, quando um bug é encontrado, temos que corrigi-lo. Isso é caro. E as incógnitas de fazer isso são, bem, desconhecidas, certo? Se optarmos por Kafka ou RabbitMQ ou uma solução comercial, sabemos que funcionará bem na primeira vez. Eles consertarão bugs e impedirão vazamentos antes mesmo de sabermos que eles estão lá. Prefiro que você gaste seu tempo trabalhando nos detalhes de nosso aplicativo. Você está aqui há 14 anos e conhece nosso negócio e nossa base de código de dentro para fora. Eu sei que você adoraria fazer isso, mas não posso deixar você perder esse tempo. E acho que até você admitiria que o risco e os custos posteriores são excessivos.”
Charlie suspirou. “Hmmm. Ok, acho que faz sentido. Mas ainda acho que seria divertido fazer isso.”
Você não pode culpar Charlie e Janice. Todo mundo quer trabalhar em projetos desafiadores que expandam seus horizontes. E é tentador pensar que eles são mais inteligentes e podem fazer um trabalho melhor do que alguma empresa com uma solução SaaS genérica. No entanto, a programação orientada pelo ego raramente termina bem.
Mesmo uma assinatura cara de uma solução escrita por uma equipe que conhece o domínio do problema por dentro e por fora e que tem a competência e a motivação essenciais para fornecer uma solução completa quase sempre custará menos no longo prazo do que o custo desconhecido de construção e mantendo sua própria solução.
A menos que haja uma razão muito convincente para construir sua própria solução, e você tenha feito a devida diligência para garantir que as soluções disponíveis realmente não atendam às suas necessidades, a decisão de construir e não comprar quase certamente se transformará em um impacto inesperado. no tanque de imersão.