Desenvolvimento Ágil
Table of Contents
1 Metodologia ágil
Começou com o Manifesto Ágil (https://agilemanfesto.org), cujos valores são:
- Pessoas e interações valem mais do que processos e ferramentas.
- Software funcional vale mais do que documentacão extensa.
- Colaboração com o cliente vale mais do que negociação de contrato.
- Resposta a mudanças vale mais do que seguir um plano.
Note que vale mais não quer dizer substitui.
1.1 Princípios
Lá são definidos 12 princípios, resumidos aqui:
- Nossa maior prioridade é satisfazer o cliente pela entrega contínua e rápida de software valioso.
- Mudanças são sempre bem vindas, mesmo na parte final do desenvolvimento.
- Entregar software funcional frequentemente, em intervalos de poucas semanas a poucos meses, favorecendo intervalos mais curtos.
- Negociantes e desenvolvedores devem trabalhar juntos e diariamente durante o projeto.
- O projeto dese ser feito com indivíduos motivados.
- A melhor forma de comunicação é face a face.
- Software funcional é a principal medida de progresso.
- O ritmo de desenvolvimento deve ser constante.
- Atenção contínua à excelência técnica e bom projeto.
- Simplicidade é essencial.1
- As melhores arquiteturas, requisitos e projetos surgem de times auto-organizados.
- Reflexões e ajustes devem ocorrer em intervalos regulares.
2 Scrum
Scrum é um framework, um conjunto de diretrizes indicando como construir um projeto baseado no manifesto ágil. Embora idealizado para desenvolvimento de software, pode ser usado em outras situações também.
2.1 Sprint
A base de Scrum é o centro do ciclo de desenvolvimento, chamado de Sprint. A sprint deve ser bem curta, tipicamente de 2 semanas a um mês no máximo. Ao final de cada sprint uma nova versão do projeto deve ser entregue, mesmo que seja apenas a adição de uma característica ou correção de alguns bugs.
Cada sprint é composta pelas seguintes tarefas:
- Planejamento
- É uma reunião onde se decide o que será feito no restante do ciclo.
- Reunião diária
- Acontece todos os dias e é bem curta (15 minutos). Serve para sincronizar os trabalhos e decidir as metas do dia.
- Desenvolvimento
- Quebrado em tarefas diárias.
- Revisão
- Reunião ao final da sprint para verificar os incrementos feitos e ajustar os alvos.
- Retrospectiva
- É uma reunião entre sprints para definir melhorias e ajustes de procedimento.
2.2 Backlog
As tarefas são mantidas em uma lista, chamada backlog. Em cada sprint algumas são retiradas para serem executadas e eventualmente outras são colocadas.
2.2.1 Kanban
Uma boa forma de gerenciar as tarefas é o Kanban, criado pela Toyota. Nele, são colocadas várias listas, começando pelo backlog. As outras podem ser:
- A fazer
- Fazendo
- Concluída
- Entregue
As tarefas são movidas de uma lista para a seguinte, mostrando claramente o andamento do projeto. A lista "entregue" indica que a tarefa já passou pelo crivo do cliente.
Existem várias ferramentas online para implementar o Kanban e variações. Uma bastante popular e simples de usar é o Trello https://trello.com, gratuito para o uso básico, que já é mais do que suficiente para a maioria dos projetos.
2.3 Papéis
Existem 3 papéis (roles) fundamentais no Scrum. Estes papéis não são necessariamente fixos e podem mudar de uma sprint para a seguinte. Aliás, isso é até recomendado. Manterei alguns termos em inglês por serem padronizados:
- ScrumMaster
- É quem mantém o andamento do processo, organizando as reuniões, verificando e resolvendo impedimentos e organizando as atividades.
- Product Owner
- É quem gerencia o backlog e é responsável por deixar as tarefas bem claras.
- Team
- O time deve ser pequeno2 e deve conter todos os
especialistas necessários. No nosso caso, é o time de
desenvolvimento, composto por programadores. Poderia
incluir web-designers por exemplo.
O time se auto-organiza e as tarefas são delegadas. A programação deve ser feita aos pares, com uma pessoa codificando e a outra verificando e corrigindo em tempo real.