Além do .NET

domingo, março 04, 2012

O que é Software?

No final do livro ‘Princípios, Padrões e Práticas Ágeis em C#’, mais precisamente no apêndice B, tem um longo artigo de Jack Reeves. Antes do artigo tem um texto introdutório muito interessante que vou trascrevê-lo aqui.

Ainda lembro onde estava quando tive a ideia que resultou no artigo a seguir. No verão de 1986, trabalhava como consultor temporário no China Lake Naval Weapons Center na Califórnia. Lá, tive a oportunidade de participar de uma mesa-redonda sobre Ada. Em um dado momento, alguém do público fez a pergunta típica: “Os desenvolvedores de software são engenheiros?”. Não lembro a resposta, mas recordo que ela não parecia tratar da questão de fato. Assim, comecei a pensar sobre como eu responderia a essa pergunta.

Não sei exatamente como, mas algo na discussão decorrente me trouxe à lembrança de um artigo que havia lido na revista Datamation, quase 10 anos antes. Aquele texto apresentava um fundamento lógico para o motivo pelo qual os engenheiros precisavam ser bons redatores (acho que era sobre isso – foi há muito tempo), mas a conclusão mais importante a que cheguei com sua leitura foi a alegação do autor de que o resultado final de um processo de engenharia era um documento. Em outras palavras, os engenheiros produziam documentos e não coisas. Outras pessoas pegavam esses documentos e produziam coisas.

Então, minha mente errante fez a pergunta: “De toda a documentação que os projetos de software normalmente geram, haveria algo que poderia ser realmente considerado um documento de engenharia?”.

A resposta que me ocorreu era “SIM, havia tal documento, e apenas um – o código-fonte”.

Olhar o código-fonte como um documento de engenharia – um projeto – virou de cabeça pra baixo minha visão sobre a profissão que escolhi. Isso mudou o modo como eu via tudo. Além disso, quanto mais eu pensava a respeito, mais achava que isso explicava uma grande quantidade de problemas que os projetos de software normalmente encontravam. Ou, mais exatamente, achava que o fato de a maioria das pessoas não entender essa distinção ou rejeitá-la vivamente explicavam muitas coisas…

Eu penso exatamente assim, e não é de hoje. Na verdade desde 2009 quando eu vi esse excelente screencast do Akita, onde ele fala justamente dessa outra forma de encarar o desenvolvimento de software, que eu entendi o porque de ainda estarmos na famosa crise do software.

Esse espanto relatado pelo autor também senti, foi um verdadeiro “momento Eureka”. Percebi que tudo o que haviam me ensinado em parte não fazia sentido nenhum no mundo do Software, e daquele dia em diante eu mergulhei de cabeça no mundo Agile.

Parece mentira, mas estamos em 2012, o Manifesto Ágil já tem mais de uma década bem como o texto que eu transcrevi de Jack Reeves. A tecnologia avança de uma forma alucinante, mas ainda continuamos a desenvolver software como fazíamos no século XX.

Claro que as empresas que lideram o mercado como Google, Facebook, Microsoft e Apple, já entenderam isso faz tempo, encaram desenvolvedores como Engenheiros de fato, e é justamente por esse motivo que são o que são.

Então, que tal começar a entender o que realmente é e como deve ser feito um Software?! Acho que já está mais do que na hora, né? O mercado e a sociedade agradecem…

Marcadores: