Fiquei totalmente chocado quando li isso novo artigo do IEEE por Tom DeMarco (pdf). Veja se o senhor sabe dizer por quê.
Meu primeiro livro sobre métricas, Controlling Software Projects: Management, Measurement, and Estimates (Gerenciamento, Medição e Estimativas) [1986]desempenhou um papel importante na forma como muitos engenheiros de software iniciantes quantificaram o trabalho e planejaram seus projetos. Em meu estado de espírito reflexivo, estou me perguntando se o conselho estava correto na época, se ainda é relevante e se ainda acredito que as métricas são essenciais para qualquer esforço bem-sucedido de desenvolvimento de software. Minhas respostas são não, não e não.
Estou gradualmente chegando à conclusão de que o a engenharia de software é uma ideia cujo tempo chegou e se foi.
O desenvolvimento de software é e sempre será algo experimental. A construção real do software não é necessariamente experimental, mas sua concepção sim. E é aí que nosso foco deve estar. É onde nosso foco sempre deveria ter estado.
Se sua cabeça acabou de explodir, não se assuste. A minha também explodiu. Para reduzir um pouco a enxaqueca que o senhor pode estar sentindo agora ao ler o resumo acima, eu altamente recomendamos o escaneamento o artigo completo de duas páginas em pdf.
Tom DeMarco é uma das figuras de autoridade mais respeitadas do setor de software, tendo sido coautor do livro brilhante e seminal Peopleware bem como muitos outros livros quase clássicos sobre gerenciamento de projetos de software, como Waltzing With Bears. Para um cara do calibre, da experiência e da influência de Tom, vir aqui e simplesmente dizer sem rodeios que A engenharia de software está morta …
… bem, como Keanu Reeves disse uma vez, uau.
Isso é muito importante. É assustador.
E, no entanto, é também uma libertação. É como se um peso esmagador tivesse sido retirado do meu peito. Posso reconhecer publicamente o que percebi lenta e gradualmente nos últimos 5 a 10 anos de minha carreira como desenvolvedor de software: o que fazemos é artesanato, não engenharia. E posso dizer isso com orgulho, sem pudor, sem um pingo de dúvida.
Acho que Joel Spolsky, meu parceiro de negócios, teve recentemente uma epifania semelhante. Ele escreveu sobre isso no How Hard Could It Be? The Unproven Path (O caminho não comprovado):
Tenho ideias muito profundas sobre como desenvolver software, mas na maioria das vezes as guardei para mim. Isso acabou sendo uma coisa boa, pois, à medida que a organização foi tomando forma, quase todos esses princípios foram abandonados.
Quanto ao significado de tudo isso, ainda estou tentando entender. Abandonei sete princípios de longa data sobre negócios e engenharia de software, e nada de terrível aconteceu. Será que fui muito cauteloso no passado? Talvez eu estivesse disposto a ser um pouco imprudente porque esse era apenas um projeto paralelo para mim e não meu negócio principal. A experiência é certamente um lembrete útil de que não há problema em jogar a cautela ao vento quando se está construindo algo completamente novo e não se tem ideia de onde isso o levará.
Sim, eu poderia acrescentar muitos advertências defensivas sobre engenharia de software aqui sobre as particularidades do projeto de software em que o senhor está trabalhando: seu tipo (missão crítica, é claro), seu tamanho (Escala do Google, naturalmente), o público (milhões de usuários diáriosobviamente), e assim por diante.
Mas eu não vou fazer isso.
O que DeMarco parece estar dizendo – e, pelo menos, o que eu estou definitivamente dizendo – é isso que o o controle é, em última análise, ilusório em projetos de desenvolvimento de software. Se o senhor quiser levar seu projeto adiante, a única maneira confiável de fazer isso é cultivar um profundo senso de habilidade e profissionalismo de software em torno dele.
Os rapazes e moças que aparecem todos os dias ansiosos para aprimorar sua arte, que são apaixonados por construir coisas que importa para eles e, talvez, de alguma forma, para o resto do mundo – essas são as pessoas e os projetos que terão sucesso no final.
Todo o resto é apenas ruído.