Esta notícia foi originalmente publicada em 24 de julho de 2007 e faz parte da coleção das melhores notícias de 2007 publicadas na InfoQ
Carl Lewis encontrou recentemente um antigo, mas interessante texto de Dennis Forbes sobre as implicações do reuso de código. Lewis se aprofundou em um dos conceitos mais controversos do post de Forbes: que apesar do senso comum de se tratar código como algo muito valioso, código tem pouco valor fora do contexto da organização que o criou. Forbes afirma que caso o código não tenha sido feito explicitamente para ser genérico, o seu reuso é problemático mesmo dentro de uma organização, quando se tenta fazê-lo entre múltiplos projetos.
Forbes ataca a tendência de muitas equipes de desenvolvimento internas de gastar muito tempo construindo frameworks caseiros e bibliotecas a serem utilizados em vários projetos:
Quanto maior a quantidade de código acumulado, mais você se amarra a seus desenvolvedores atuais (e mais eles ocupam suas mentes com informações aplicáveis somente a uma organização ou equipe), e o mais difícil será trazer novos desenvolvedores. Tais frameworks e bibliotecas normalmente vêm com curvas de aprendizado enormes para novos funcionários - especialmente porque documentação é algo virtualmente ignorado - e eles raramente podem ser usados para qualquer outra coisa sem refatorações significativas (porque eles não foram feitos para serem reutilizados de fato, ou o foram da maneira mais arbitrária e superficial possível…
… Assim, a pergunta que toda organização deve fazer a si mesma é por quanto ela poderia vender seu "código reutilizável" sendo realista, quanto os competidores, antigos ou novos no mercado, ofereceriam por ele? Em quase todos os casos a resposta é $0, e eles não iriam querê-lo nem por esse preço. Há uma quantidade infinitamente pequena de roubo de código nesse mercado (embora estejamos na era de DVDs graváveis e cartões USB) porque a maior parte do código – além dos frameworks e bibliotecas utilizados pela indústria - não tem valor algum fora de um projeto específico de um grupo específico de desenvolvedores. Tentar utilizá-lo para outros projetos freqüentemente é pior do que começar a partir do zero.
Forbes conclui que frameworks que são apropriadamente abstratos e genéricos são mais caros de modelar e desenvolver que soluções a serem utilizadas uma única vez, e já que o tempo e o custo para um desenvolvedor absorver a complexidade de um novo framework é raramente levada em consideração ao se fazer a análise de custo benefício do reuso de código, reuso de código faz muito menos sentido do que se pode imaginar. Vale notar que Forbes não é contra reuso de código em conjunto com frameworks; ele é muito mais positivo com relação a reutilizar código de bibliotecas que são padrão no mercado, por exemplo. Na verdade, Forbes defende a adoção de frameworks que sejam padrão de mercado (como os de código aberto), que por necessidade apresentam abstração e encapsulamento apropriados, como alternativa a frameworks complexos desenvolvidos internamente.
No post Carl Lewis destaca a estimativa de Forbes que diz que a maior parte da base de código das organizações vale $0. Lewis cita um caso em que encontrou uma organização que tinha uma noção exagerada do valor de seu código, considerando-a uma “protetora ciumenta” dele. De forma previsível, quando Lewis voou milhares de quilômetros para uma visita à organização, já que o código não podia sair de lá, ele verificou que o código sendo protegido era de fato bastante ruim. Devido a exemplos como esse Lewis acredita que "na maioria dos casos o risco de [roubo de código] acontecer é muito menor que o comumente imaginado," e dessa forma empresas não deveriam ter medo de compartilhar seu código quando isso fizer sentido.
No fim, Lewis and Forbes apresentam uma análise realista sobre o valor de nossos códigos, porque como Lewis diz:
Não é nada intuitivo que algo tão difícil e caro de criar possa valer tão pouco. Acho que é por isso que tantas organizações gostam de fingir que seu código é muito mais valioso do que é na realidade.