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.