A tecla F5 não é um processo de compilação

Hacknot’s Se eles vierem, como irão construí-lo? é uma série angustiante de 29 e-mails enviados em um período de duas semanas.

Para: Mike Cooper
De: Ed Johnson

Mike,

Finalmente consegui acesso ao CVS hoje com o Arnold. Então, verifiquei o módulo AccountView, mas ele não compila. O projeto Eclipse tem dependências em cerca de cinco outros projetos. Tentei verificar esses projetos dependentes também, mas alguns deles não compilam de jeito nenhum? Como o senhor está conseguindo desenvolver essa coisa quando os projetos dependentes não são compilados?

Ed

De: Mike Cooper
Para: Ed Johnson

Ah, sim – esqueci de contar aos senhores sobre os projetos dependentes. Sempre me esqueço deles. Não me surpreende que alguns deles não sejam compilados para o senhor. Tenho versões em minha máquina que compilam bem, mas não as verifico há algum tempo. Dê-me cerca de 15 minutos e eu os verificarei, e então o senhor estará pronto para começar.

M.

É um conto de advertência sobre uma séria patologia de projeto de software: a dor de colocar um novo desenvolvedor em funcionamento em um projeto de software existente. Isso é surpreendentemente comum.

Isso nos leva a uma das métricas de saúde mais importantes em um projeto de desenvolvimento de software. Quanto tempo o senhor leva para fazer com que um novo membro da equipe trabalhe de forma produtiva em seu projeto? Se a resposta for mais de um dia, o senhor tem um problema. Especificamente, o senhor não tem um processo de compilação adequado em vigor.

Já falei antes sobre o a importância de um servidor de compilação como o coração de seu projeto. Um projeto de desenvolvimento de software sensato tem compilações diárias automáticas, realizadas em um servidor de compilação neutro. Se a sua equipe tem o hábito de produzir esse tipo de compilações diárias, é difícil acumular o dívida técnica profunda enumerados em todos esses e-mails. Se o servidor de compilação pode fazer isso, seus colegas de trabalho recém-contratados também podem.

Mas, com base nas práticas de desenvolvimento que tenho visto com frequência no local com os clientes, acho que configurar um servidor de compilação pode ser uma meta irrealista, pelo menos inicialmente. Talvez isso não seja feito. Para começar, deveríamos buscar uma meta mais modesta.

visual-studio-debug-menu

É assim que a maioria dos clientes com quem trabalho constrói um projeto:

  1. Abrir o IDE
  2. Carregar a solução
  3. Obtenha as últimas
  4. Pressione F5 (ou CTRL+SHIFT+B)

Se o seu “processo de compilação” for a tecla F5, o senhor tem um problema. Se o senhor acha que isso parece ridículo… quem possivelmente usaria seu IDE como substituto de um processo de compilação adequado? — então sugiro humildemente que o senhor não trabalhou muito no mundo do desenvolvimento corporativo convencional. A própria ideia de um script de compilação fora do IDE é estranha para a maioria dessas equipes.

Tire seu processo de compilação do IDE e coloque-o em um script de compilação. Esse é o primeiro passo no caminho para a iluminação da compilação.

O valor de um script de compilação é múltiplo. Quando o script de compilação estiver pronto, o senhor terá criou uma forma de documentação viva: aqui está como o senhor constrói essa coisa maluca. E, naturalmente, esse artefato é verificado no controle de origem, junto com os arquivos necessários para construí-lo (e até mesmo o banco de dados necessário para executá-lotambém). A partir daí, o senhor pode começar a pensar em ter esse script executado em um servidor de compilação neutro para evitar o “Works On My Machine” (Funciona na minha máquina). O senhor também pode considerar todas as maneiras interessantes de aprimorar o script com coisas como BATs, BVTs e testes funcionais. Seu servidor de compilação pode se tornar o coração de seu projeto. Não há limite máximo para a inteligência do senhor e para a quantidade de scripts de compilação diferentes que pode criar. Os scripts de compilação podem ser incrivelmente poderosos, mas o senhor nunca saberá até começar a usá-los.

A tecla F5 não é um processo de compilação. É um substituto rápido e sujo. Se é assim que o senhor constrói seu software, lamento ter que ser eu a lhe dizer isso, mas seu projeto não se baseia em práticas sólidas de engenharia de software.

Então, se o senhor não tem um script de compilação em seu projeto, o que está esperando?