16 novembro 2007

Enterremos o termo "Engenharia de Software"

Saudações!

Desculpem a demora em escrever... estou um pouco ocupado escrevendo o novo artigo para a revista Visão Ágil...
Mas vamos lá...

Dica quente: Agile Journal de novembro

Sou muito fã das publicações desta revista, e desta vez devo admitir que eles foram muito bem na escolha dos temas, recomendo imensamente...
Me chamou atenção um texto entitulado:
Let's Bury the Term Software Engineering, que gostaria de dividir com vocês, fazendo uma pequena introdução em português.
Continuo não acreditando que Desenvolvimento de software não deve ser comparado em engenharia (na verdade gosto mais do termo criado dave Thomas: Jardinagem de software), e o texto me trouxe maiores embasamento sobre minha convicção. E vale muito a pena ser comentado.

"In software, if we discourage changes, we can expect failure. Our constraints come packaged with change. Our constraints are the expectations, needs, wants, and feelings of people."


O texto inicia com uma comparação bastante interessante:

Engenheiros ao trabalharem possuem as restrições principais relacionadas às leis da física, bastante conhecidas, documentadas e estáticas (em termos gerais: leis de newton, mecânica dos sólidos, leis da aceleração, peso, momento, etc). Obviamente que espectativas de clientes são restrições a serem consideradas... entretanto a base do pensamento na construção de uma ponte está focada em axiomas matemáticos e físicos...
Em desenvolvimento de software isso não ocorre!! As maiores restrições que possuimos estão relacionadas a expectativas de stakeholders, mal documentadas, mal compreendidas (se é que um stakeholder sabe realmente o que quer). E como o resultado de nosso trabalho é um produto intengível, leis da física não são prioridade... e pior, as "leis" que regem o desenvolvimento podem mudar a qualquer momento! Inclusive na leitura deste blog...

A principal forma de trabalhar de forma eficiente e produtiva num ambiente mutável como o de criação de software é estar preparado para a mudança, não tentando evitar que ela ocorra, mas incorporando-a. E como resolvemos este problema? Criatividade! Não processos de engenharia...

Daryl Kulak propõe inclusive a abolição do termo Engenharia de Software, na tentativa de mudar nossas convicções que nos prendem a um modelo estático e mecanizado, que não corresponde a nossa realidade. Vou apoiar a iniciativa e não falarei mais em engenharia de software! =)

Leia o artigo completo

3 comentários:

  1. Desculpem o Enganharia!!! hahahahaha

    que malz...

    Engenharia!!!

    ResponderExcluir
  2. Excelente post, Victor.

    Concordo com a ideia de que a comparacao de desenvolver software com construir casas ou pontes nao faz nenhum sentido.. : )

    Eu acho que o problema eh que estamos comparando software com os tipos errados de engenharia.

    Escrevi sobre isso nesse post
    http://franktrindade.wordpress.com/2008/04/06/software-engineering-or-development/

    Um abraco,
    Francisco Trindade
    http://franktrindade.wordpress.com

    ResponderExcluir
  3. Anônimo5:54 PM

    Victor,

    na minha opinião a Engenharia de Software serve para restringir a abrangência de linguagens de alto nível. Vc concorda que qto mais restrir a linguagem, menor a probabilidade de desenvolver um software orientado a gambiarra? O desenvolvimento de software se baseia nos aximas matemáticos e da teoria da computação. Além de tudo isso, qdo se trabalha com equipes grandes pode haver pessoas com menos imaginação que podem se basear na E.S para resolver o problema e pode também haver pessoas com imaginação tão fértil que quando outro desenvolvedor for mexer no código não entenderá, pois este não segue um padrão. Gostaria muito de saber sua opinião! Abraço,

    danielbribeiro@gmail.com

    ResponderExcluir