Dev (Back & Front)ARTIGO

Hacking, refatoração, reescrita e débito técnico

De ESR, How To Learn Hacking:

Isso me parece o oposto da prática de refatoração de uma base de código grande e que existe há muito tempo, especialmente a última. “Scrap and rebuild” é essencialmente “reescrever do zero”, e isso é quase sempre uma proposição perdedora em termos de tempo e orçamento.

Mas, então, a descrição também diz que o hacking é “leve, exploratório, modular” – então talvez seja possível hackear os componentes dentro de um sistema maior ou crítico e, em seguida, refatorar o sistema usando esse resultado. Hacking and Refactoring, também de ESR.

II.

Eu costumava trabalhar para uma empresa de consultoria com um grande cliente (e alguns menores). Esse grande cliente gerou uma quantia surpreendente de dinheiro; seu modelo de negócios era tal que mesmo alguns minutos de tempo de inatividade resultariam em grandes perdas (tecnicamente “perda de receita”, mas o efeito é o mesmo).

O diretor de desenvolvimento de consultoria dessa grande empresa não “acreditou” no débito técnico. Ou melhor, ele pensou que o débito técnico não fosse um problema. Ele escreveu (ou melhor, exigiu a escrita de) alguns dos códigos mais horríveis, desde que fossem escritos *rapidamente*, porque as restrições de tempo para o grande cliente eram muito esmagadoras. Não houve refatoração; ele e sua equipe iriam iterar rapidamente, e então limpar toda a base de código e começar de novo em uma base regular. (Por “regular”, quero dizer a cada 3-6 meses). Qualquer débito técnico incorrido foi pequeno em comparação com os retornos monetários – embora tenha havido uma cobrança nos próprios programadores.

Dado o ESR acima, isso é claramente uma abordagem de “hacking” para uma base de código crítica. Além disso, é claro que *às vezes* uma reescrita completa pode ser a coisa certa a fazer, desde que o contexto esteja certo. Mas eu estou apostando que a grande maioria dos desenvolvedores não está operando no contexto desse “um grande cliente” e dessa consultoria particular. Estes eram “desenvolvedores qualificados conscientemente, escrevendo código de baixa qualidade” – e não devem ser confundidos com “* un * desenvolvedores qualificados * un * conscientemente escrevendo código de baixa qualidade”. (Mehdi Khalili: “On Bad Code.”).

***

Paul M. Jonses faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://paul-m-jones.com/archives/6656

É reconhecido internacionalmente como um expert em PHP, trabalhando com essa linguagem desde 1999 e com programação em geral desde 1983. Já exerceu vários tipos de cargos, desde desenvolvedor júnior a VP de engenharia, em todo tipo de empresa. Ele é um palestrante regular em conferências técnicas em todo o mundo. É autor de Modernizing Legacy Applications in PHP e Solving the N+1 Problem in PHP, e foi arquiteto do Solar Framework e criador do sistema Savant. Além disso, foi colaborador do Zend Framework.

Ver perfil