Já fazia um bom tempo que eu havia prometido algo falando sobre SCRUM. Então lá vai!

O SCRUM é um processo ágil e leve que pode ser utilizado para gerenciar e controlar o desenvolvimento de software utilizando práticas iterativas e incrementais. É uma metodologia ágil. Eis alguns valores do MANIFESTO ÁGIL:
1.    Pessoas e iterações são mais importantes que processos e ferramentas;

2.    Software funcionando é mais importante que uma documentação extensa;

3.    O relacionamento com o cliente é mais importante que a negociação do contrato;

4.    Responder às mudanças é mais importante que seguir o planejamento;

Processos e ferramentas são importantes, mas muito mais que isso, pessoas e iterações são mais importantes. É importante ter uma excelente documentação, mas muito mais importante é o software funcionando. É importante a negociação do contrato, mas muito mais importante é o relacionamento com o cliente. É importante seguir o que foi planejado, mas muito mais importante é responder às mudanças.

O SCRUM aumenta significativamente a produtividade e reduz o tempo para obter resultados, pois facilita a adaptação a processos empíricos de desenvolvimento de sistemas.

Foi adotado como ferramenta padrão de gerencia de projetos nas metodologias MSF do Agile e OpenUP e atende aos padrões CMMI e PMBOK.

Mas… Porque seguir essa metodologia para gerenciar o desenvolvimento de sistemas?

Imagine a construção de uma ponte. Primeiro é feito todo o planejamento da construção, depois é feita a engenharia e depois é passado para construção definitiva da mesma. A cada passo que você avança no ciclo MENOR é a sua incerteza, pois você pode avaliar aquele passo como válido.

Embora para desenvolvimento de software tenhamos os procedimentos de análise, arquitetura, programação, testes, implantação, manutenção; não temos passos verificáveis que possam ser verificáveis como válidos durante o ciclo de vida do software. Você não sabe se aquela captura de requisitos solucionará as necessidades do negócio (o cliente não sabe qual é a sua real necessidade, os analistas são como médicos e os clientes como pacientes). A eleição da arquitetura, o código desenvolvido, os testes efetuados nos geram incertezas. A incerteza só reduz quando o usuário olha a aplicação, mas em determinadas aplicações, a incerteza só reduz depois que ela está em produção a mais de dois anos.

RESUMINDO: DESENVOLVIMENTO DE SOFTWARE = GERENCIAMENTO DE INCERTEZAS

Outro grande problema é a mal definição da palavra Retrabalho no meio do desenvolvimento de sistemas. Temos o costume de dizer se o projeto está em andamento ou não se foram implementadas várias telas ou se já foram feitas várias atividades. Mas o que determina o andamento de um projeto é o cumprimento dos objetivos.

Então, no desenvolvimento de sistemas, quando o cliente diz que quer uma nova funcionalidade ou quer mexer em algo já implementado, temos o costume de dizer que isso é um retrabalho, mas no processo ágil não existe retrabalho, pois SOFTWARE = IDÉIA. As idéias são coisas que amadurecem.

Então o SCRUM é uma das maneiras empíricas de se controlar o gerenciamento da produção de um software baseado em alta produtividade e satisfação dos envolvidos.