Ricardo Fernandes Luiz

Agile, desenvolvimento de software, gestão, marketing, e tecnologia em geral

Sem boas práticas de engenharia não há agilidade

with 5 comments

Saudações a todos!!!

O objetivo deste artigo é despertar alguns times que algumas práticas de engenharia (como um bom design de domínio, refactoring e TDD) são peças fundamentais para que possamos colher os benefícios das metodologias ágeis. Vamos começar voltando um pouco no tempo e explicar como era o mundo antes das práticas ágeis:

Crise do Software

A “crise do software” foi um termo cunhado para descrever as dificuldades enfrentadas no desenvolvimento de software no fim da década de 60. A complexidade dos problemas, a ausência de técnicas bem estabelecidas e a crescente demanda por novas aplicações começavam a se tornar um problema sério. Foi nessa época, mais precisamente em 1968, que ocorreu a Conferência da OTAN sobre Engenharia de Software (NATO Software Engineering Conference) em Garmisch, Alemanha. O principal objetivo dessa reunião era estabelecer práticas mais maduras para o processo de desenvolvimento, por essa razão o encontro é considerado hoje como o nascimento da disciplina de Engenharia de Software.

NATO Software Engineering Conference 1968

Duas décadas depois, em 1986, Alfred Spector, presidente da Transarc Corporation, foi co-autor de um artigo comparando a construção de pontes ao desenvolvimento de software. Sua premissa era de que as pontes normalmente eram construídas no tempo planejado, no orçamento, e nunca caiam. Na contramão, os softwares nunca ficavam prontos dentro do prazo e do orçamento, e, além disso, quase sempre apresentavam problemas.

Custo das mudanças

Uma das consequências de tentarmos igualar metodologias de desenvolvimento de software a metodologias de engenharia tradicionais (como construção civil) é a visão de que o custo de modificar o programa aumenta exponencialmente ao longo do tempo, conforme gráfico abaixo:

Acolhendo as mudanças

A partir da metade dos anos 90 começaram a surgir discussões sobre se a forma faseada acima (cascata), como ocorre na construção civil era realmente o melhor modelo para o desenvolvimento de software. As metodologias ágeis de desenvolvimento surgiram exatamente para permitir maior flexibilidade no processo de desenvolvimento de sistemas e minimizar o custo de mudanças ao longo dos projetos, fazendo com que o gráfico acima fique mais próximo do apresentado abaixo:

Mas afinal de contas, como isto é possível? Como podemos adicionar mudanças ao software sem implicar em altos custos para o mesmo? A reposta a esta pergunta é o título do artigo: Aplicando boas práticas de engenharia!

Muitos times adotam scrum, mas deixam de lado as boas práticas de engenharia que são necessárias para que seja possível acolher as mudanças ao longo do projeto como pregam as metodologias ágeis. Este tipo de problema já foi discutido por Martin Fowler e James Shore . E meu objetivo com este post é despertar estes times para o estudo de práticas de engenharia como refatoração, boas práticas de design de domínio e TDD .

Se você usa scrum (O que é scrum?) , mas não utiliza estas práticas, sugiro que comece com urgência a estudar estes assuntos.

Um bom caminho para iniciar são os 3 livros abaixo:

Extreme Programming Explained

Clean Code

Domain Driven Design

Written by Ricardo F. Luiz

18/10/2010 às 7:30 pm

Publicado em Agile, Scrum, XP

5 Respostas

Subscribe to comments with RSS.

  1. Grande Ricardo!

    Nas ultimas frases vc escreveu “Se você usa scrum, mas não utiliza estas práticas, sugiro que comece com urgência a estudar estes assuntos”. Eu diria que se vc não utiliza essas praticas de engenharia, de forma alguma vc pratica agilidade.

    Abraços!

    Leonardo Neves

    31/10/2010 at 4:36 am

  2. Exato Leo! Por isto mesmo o título do post é “Sem boas práticas de engenharia NÃO HÁ agilidade”.
    Porém muitas pessoas começam utilizando scrum sem conhecer estas práticas de engenharia (eu fui um deles, pra ser sincero), com os ciclos de inspeção e adaptação do Scrum o time iria correr atrás disto o quanto antes, mas acho que o certo é já iniciar conhecendo estes pontos, pois isso pode demorar e o time ir praticando o “Scrum flácido” citado pelo Fowler.

    ricardofluiz

    03/11/2010 at 2:07 am

  3. […] Fonte: Blog Ricardo Fernandes Luiz […]

  4. […] Blog Ricardo Fernandes Luiz Share this:TwitterFacebookGostar disso:GosteiSeja o primeiro a gostar disso. Esta entrada foi […]


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: