InfoQ

InfoQ

Notícias

Meus Favoritos

Faça oLogin ou Cadastre-se para ativar o recurso de favoritos por tempo ilimitado.

O conteúdo foi adicionado aos favoritos!

Houve um erro ao adicionar aos favoritos! Por favor, tente novamente.

Melhores da InfoQ em 07: Reuso de Código é Algo Superestimado?

Postado por Mark Figley , traduzido por Mauricio De Diana em 10 Nov 2008

Seções
Desenvolvimento,
Processos e Práticas,
Arquitetura e Design
Tópicos
Entregando Valor ,
Reuso ,
Arquitetura


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.
DDD por Eric Vieira Enviado
  1. Voltar ao topo

    DDD

    por Eric Vieira

    O dominio do sistema sempre será muito especifico, com isso é facil entender que reuso de codigo não faz muito sentido.
    Ficar se preocupando em componentizar o sistema só tornará o sistema menos legivel e mais dificil de alterar.
    O codigo que é reutilizável, generico o bastante para outros projetos, irá emergir dentro do proprio sistema, sem precisar componentizar o sistema. Refatorar o sistema ajuda em encontrar partes reutilizaveis muito mais do que tentar componentizar o seu modelo.

Conteúdo Educacional

Formando equipes de alto desempenho, parte 1: Início e fases de evolução

Nesta primeira parte de uma série sobre equipes de alto desempenho e gerenciamento Agile, veja uma introdução geral e uma apresentação dos estágios de formação das equipes.

Business Model Canvas, passo a passo

O Business Model Canvas é uma ferramenta estratégica para a construção visual de novos produtos ou serviços. Conheça cada um dos seus elementos e como preencher o Canvas, passo a passo.

Google Apps Script, Parte 2: Google Docs, triggers e envio de emails

Nessa segunda e última parte de uma série sobre o Google Apps Script, conheça como funciona o envio de emails, a conversão de documentos e como criar menus e triggers.

Serviços de cloud computing PaaS: um guia para desenvolvedores Java

Este artigo avalia seis dos mais importantes fornecedores de serviços de cloud computing PaaS para desenvolvedores Java, analisando critérios como desempenho, escalabilidade e tecnologias suportadas.

Canvas de Modelo de Negócios: uma contribuição para o sucesso de Startups

O Canvas de Modelo de Negócios é um novo modo de comunicar e suportar a validação iterativa, incremental e empírica de modelos de negócio de startups e novos produtos substituindo o plano de negócios.

Entrevista com Rebecca Parsons Parte 2: Agile Distribuído, Arquitetura vs. Design e SOA

Nesta segunda e última parte de uma entrevista exclusiva para InfoQ Brasil, Rebecca Parsons, CTO da ThoughtWorks, fala sobre o Agile Distribuído e técnicas para definição de arquiteturas.

Entrevista com Rebecca Parsons Parte 1: Agile nas Empresas e Arquitetura Evolucionária

Nessa primeira parte de uma entrevista com a CTO da ThoughtWorks, veja recomendações sobre formas de construir e arquitetar sistemas para obter o máximo de flexibilidade e responsividade a mudanças.

Agile das equipes à organização: o papel do gerente, estratégias e dicas para a adoção

Os gerentes de projetos podem assumir o papel crítico de liderar a introdução do Agile. Vejas conceitos, dicas e técnicas para apoiar esse processo de mudanças.