flowchart LR
PB[Backlog do Produto] --> PL[Planejamento da Sprint]
PL --> SB[Backlog da Sprint]
SB --> SP[Sprint]
SP --> DA[Reunião Diária]
DA --> SP
SP --> INC[Incremento]
INC --> RV[Revisão da Sprint]
RV --> RT[Retrospectiva]
RT -. ajustes de processo .-> PL
RV -. feedback .-> PB
style PB fill:#cfe2ff,stroke:#084298
style SB fill:#d1e7dd,stroke:#0f5132
style SP fill:#fff3cd,stroke:#664d03
style INC fill:#e2d9f3,stroke:#59359a
style RT fill:#f8d7da,stroke:#842029
Módulo 04 — Prototipação e Metodologias Ágeis (Scrum, XP, Kanban)
Onde estamos. No módulo anterior percorremos os modelos de ciclo de vida e vimos como as abordagens dirigidas a plano organizam o trabalho de ponta a ponta antes de começar. Agora vamos ao outro lado da conversa. Quero que você chegue à aula entendendo dois recursos que mudaram a forma de construir software: a prototipação, que nos ajuda a enxergar antes de comprometer, e o movimento ágil, que reorganizou prioridades quando o mundo passou a mudar mais rápido do que os planos conseguiam acompanhar.
Deixe-me começar com uma pergunta que parece ingênua, mas não é. Se você não sabe direito o que precisa construir, faz sentido escrever um plano detalhado de tudo antes de começar? A resposta honesta é: quase nunca. Boa parte dos fracassos nasce de uma ilusão confortável, a de que conseguimos descrever com precisão, no papel e antecipadamente, um sistema que ninguém ainda viu funcionar. A prototipação e o pensamento ágil são respostas maduras a essa ilusão. Um propõe experimentar cedo; o outro, entregar em pequenos ciclos e ajustar o rumo com frequência. Vamos aos dois.
A prototipação como recurso
Um protótipo é uma versão inicial e deliberadamente incompleta do sistema, construída para responder perguntas que só ficam claras quando temos algo concreto diante dos olhos. A ideia central é simples e poderosa: em vez de discutir requisitos de forma abstrata, colocamos algo funcionando, mesmo que tosco, e deixamos que o usuário reaja. A reação de uma pessoa diante de uma tela real vale mais do que dez reuniões sobre uma tela imaginária. Sommerville trata a prototipação como uma técnica para reduzir risco e esclarecer requisitos, e é exatamente esse o seu papel: transformar incerteza em conhecimento antes que a incerteza vire retrabalho caro.
Há duas formas de usar um protótipo, e confundi-las é fonte comum de problemas. O protótipo descartável existe para aprender e depois ser jogado fora. Você o constrói rápido, sem se preocupar com qualidade interna, estrutura ou desempenho, porque seu único propósito é responder a uma dúvida — como o usuário reage a este fluxo, esta funcionalidade é viável, este requisito faz sentido. Respondida a pergunta, o código é abandonado, e a versão de produção é construída com o cuidado devido. Já o protótipo evolutivo nasce como um esboço, mas é refinado incrementalmente até se tornar o próprio sistema final. Aqui não há descarte; há amadurecimento sucessivo.
O perigo mais comum é construir um protótipo descartável com a pressa e a informalidade que ele permite e, diante do prazo, decidir promovê-lo a sistema de produção. Você herda toda a dívida técnica de um código que nunca foi pensado para durar. Se a intenção é descartar, descarte de fato; se a intenção é evoluir, construa desde o início com um mínimo de disciplina estrutural. A escolha entre as duas modalidades precisa ser consciente, não um acidente causado pela pressão do calendário.
A tabela a seguir contrasta as duas modalidades para que você fixe a distinção.
| Aspecto | Protótipo descartável | Protótipo evolutivo |
|---|---|---|
| Propósito | Aprender, esclarecer requisitos, reduzir risco | Entregar valor incremental até o produto final |
| Qualidade interna | Baixa e proposital; será jogado fora | Precisa ser sustentável desde cedo |
| Destino | Descartado após responder a dúvida | Refinado até virar o sistema em produção |
| Risco principal | Ser promovido a produção sem revisão | Acumular decisões precipitadas mal revisadas |
Repare que, em ambos os casos, o protótipo é um instrumento de comunicação. Ele fecha a distância entre o que o cliente pensa que quer e o que de fato precisa — uma das maiores fontes de defeitos. Prototipar é, no fundo, conversar usando artefatos em vez de palavras.
O Manifesto Ágil
No início dos anos 2000, um grupo de profissionais experientes, cansados de processos pesados que pareciam servir mais à burocracia do que ao software, reuniu-se e formulou o que ficou conhecido como o Manifesto Ágil. Não foi a invenção de uma técnica, e sim a declaração de um sistema de valores. Freeman, no seu texto sobre desenvolvimento ágil, insiste que o essencial do ágil não é um conjunto de rituais, mas uma mentalidade — e é dessa mentalidade que o manifesto trata.
O manifesto declara quatro valores, cada um na forma de uma preferência entre dois polos. Ele valoriza indivíduos e interações acima de processos e ferramentas; software em funcionamento acima de documentação abrangente; colaboração com o cliente acima de negociação de contratos; e resposta a mudanças acima de seguir um plano. Um detalhe que muita gente esquece, e que quero que você guarde: o manifesto não descarta os itens da direita. Ele reconhece que processos, documentação, contratos e planos têm valor. Apenas afirma que, quando é preciso escolher, os itens da esquerda importam mais. Ágil não é ausência de disciplina; é uma disciplina com prioridades diferentes.
Pessoas conversando resolvem mais do que ferramentas sofisticadas; software rodando prova mais do que documentos; parceria com o cliente rende mais do que blindagem contratual; e adaptar-se à mudança serve melhor ao resultado do que obedecer cegamente a um plano feito quando se sabia menos.
Além dos valores, o manifesto se desdobra em um conjunto de doze princípios que os detalham na prática. Não vou cravar a redação exata de cada um, mas quero que você absorva sua essência qualitativa. Eles giram em torno de ideias recorrentes: satisfazer o cliente pela entrega frequente e contínua de software que funciona; acolher mudanças de requisito mesmo quando chegam tarde, tratando-as como vantagem e não como incômodo; entregar em ciclos curtos e cadenciados; manter desenvolvedores e pessoas de negócio trabalhando juntos; construir projetos em torno de pessoas motivadas e confiar nelas; privilegiar a conversa direta como a comunicação mais eficiente; usar software em funcionamento como a principal medida de progresso; sustentar um ritmo de trabalho indefinidamente sustentável; cuidar continuamente da excelência técnica e do bom projeto; buscar a simplicidade como a arte de maximizar o trabalho não feito; confiar que as melhores arquiteturas emergem de equipes auto-organizadas; e refletir com regularidade sobre como melhorar, ajustando o comportamento em função dessa reflexão.
Note como esses princípios formam um todo coerente. Entrega frequente, ciclos curtos, acolhimento à mudança e reflexão periódica desenham um jeito de trabalhar que aprende com a própria prática. É esse aprendizado embutido no processo que torna o ágil poderoso sob alta incerteza.
Scrum em detalhe
O Scrum é, provavelmente, o arcabouço ágil mais adotado, e vale a pena conhecê-lo com precisão, porque muita gente o pratica de forma distorcida. Ele organiza o trabalho em ciclos de duração fixa chamados sprints, ao final dos quais deve existir um incremento de software potencialmente utilizável. Toda a mecânica do Scrum se apoia em três pilares que se sustentam mutuamente: papéis bem definidos, eventos com propósito claro e artefatos que dão visibilidade ao trabalho.
Comecemos pelos papéis. O Product Owner é a voz do valor: responde por decidir o que será construído e em que ordem, priorizando o trabalho para que a equipe ataque sempre o que mais importa para o negócio. Não é quem manda na equipe, e sim quem responde pela direção do produto. O Scrum Master é o guardião do processo e removedor de obstáculos: não comanda, serve, garantindo que o time trabalhe sem impedimentos e que os princípios do Scrum sejam respeitados, inclusive pela organização ao redor. E o time de desenvolvimento é o grupo auto-organizado que constrói o incremento; é multidisciplinar, tem autonomia sobre como fazer o trabalho e é coletivamente responsável pela entrega.
Passemos aos eventos. A sprint é o contêiner de tudo, um ciclo de duração fixa dentro do qual os demais eventos acontecem. O planejamento da sprint abre o ciclo: a equipe, com o Product Owner, decide o que será entregue e monta o plano para consegui-lo. A reunião diária é um encontro curto e regular em que o time se sincroniza, alinhando o que foi feito, o que será feito e quais obstáculos surgiram — é coordenação, não prestação de contas a um chefe. A revisão da sprint acontece ao final, quando o incremento é inspecionado junto aos interessados e o feedback realimenta o planejamento seguinte. E a retrospectiva fecha o ciclo olhando para dentro: o time examina o próprio processo e decide o que melhorar — a materialização direta do princípio ágil da reflexão regular.
Por fim, os artefatos. O backlog do produto é a lista ordenada e viva de tudo que o produto pode vir a precisar, mantida e priorizada pelo Product Owner. O backlog da sprint é o subconjunto de itens que a equipe se comprometeu a entregar no ciclo atual, com o plano para realizá-los. E o incremento é o resultado tangível: a soma do que foi concluído, em estado potencialmente utilizável. O diagrama abaixo mostra como esses elementos se articulam no fluxo do Scrum.
Observe que o Scrum é um circuito de aprendizado fechado: cada sprint produz não só software, mas informação sobre o produto (na revisão) e sobre o processo (na retrospectiva). É essa dupla realimentação que faz a equipe melhorar com o tempo, e não apenas produzir.
Extreme Programming
Se o Scrum organiza o como coordenar o trabalho, a Extreme Programming, ou XP, foca no como construir com excelência técnica. Ela leva ao extremo um conjunto de boas práticas de engenharia que, isoladamente, já eram conhecidas, e as combina de modo que se reforcem. Quero destacar as práticas que você mais encontrará.
A programação em par coloca dois desenvolvedores no mesmo código ao mesmo tempo, um digitando e outro revisando e pensando adiante, alternando os papéis. Parece caro, mas a revisão contínua reduz defeitos e espalha conhecimento pela equipe. A integração contínua pede que o código seja integrado ao repositório comum com grande frequência, cada integração validada automaticamente, impedindo que divergências se acumulem até virar um pesadelo de mesclagem. A refatoração é a melhoria constante da estrutura interna do código sem alterar seu comportamento externo, mantendo o sistema saudável à medida que cresce. A propriedade coletiva do código estabelece que qualquer pessoa pode melhorar qualquer parte do sistema, eliminando gargalos e reduzindo a dependência de heróis individuais. E os testes constantes, automatizados e escritos de perto com o código, dão a rede de segurança que torna todas as outras práticas possíveis — sem testes, ninguém refatora com coragem nem integra com frequência.
Nenhuma dessas práticas brilha sozinha. Você só refatora sem medo porque tem testes; só integra com frequência porque tem integração automatizada validando cada mudança; só sustenta propriedade coletiva porque a programação em par difundiu o conhecimento. XP é um sistema em que as peças se protegem umas às outras. Adotar metade delas costuma render menos da metade do benefício.
Um exemplo de refatoração incremental
A refatoração é uma prática que se aprende fazendo, então deixe-me mostrar o espírito dela com um pequeno exemplo em Dart. Imagine uma função que classifica o risco de um pedido com base em seu valor. A primeira versão funciona, mas comunica mal e mistura responsabilidades.
Com a rede de segurança dos testes garantindo que o comportamento não mude, damos um primeiro passo pequeno, aplainando a estrutura condicional com retornos antecipados.
Em seguida, damos outro passo pequeno, tornando os limites e as categorias explícitos, para que a regra de negócio deixe de estar escondida em números soltos no meio do código.
Repare no método: nenhum passo mudou o comportamento observável, cada um foi verificável isoladamente e o resultado é mais legível e mais fácil de estender. É assim que a refatoração acontece — não em um salto arriscado, mas numa sequência de melhorias pequenas e seguras, apoiadas em testes.
Kanban
O Kanban parte de uma filosofia diferente da do Scrum. Em vez de ciclos de duração fixa, ele propõe um fluxo contínuo: o trabalho entra, atravessa etapas e sai, sem a cadência rígida das sprints. Seu instrumento central é o quadro visual, no qual cada coluna representa um estágio e cada cartão, um item de trabalho. Ao olhar o quadro, qualquer pessoa vê onde cada tarefa está e onde o trabalho está travando.
A ideia mais característica do Kanban é o limite de trabalho em progresso, o limite de WIP. Cada coluna recebe um teto de quantos itens pode conter ao mesmo tempo. Parece restrição arbitrária, mas é o coração do método: ao impedir que a equipe comece coisas demais, o limite força a terminar o que já foi iniciado antes de puxar trabalho novo e expõe os gargalos onde os cartões se acumulam. Menos tarefas simultâneas significam menos troca de contexto, menos trabalho pela metade e um fluxo mais rápido e previsível. O diagrama a seguir ilustra um quadro simples.
flowchart LR
A["A Fazer"] --> B["Em Progresso (limite: 3)"]
B --> C["Em Revisão (limite: 2)"]
C --> D["Concluído"]
style A fill:#cfe2ff,stroke:#084298
style B fill:#fff3cd,stroke:#664d03
style C fill:#e2d9f3,stroke:#59359a
style D fill:#d1e7dd,stroke:#0f5132
Note que o Kanban impõe menos estrutura do que o Scrum: não prescreve papéis, nem eventos, nem ciclos. Por isso costuma ser mais fácil de adotar sobre um processo já existente, evoluindo-o aos poucos, em vez de substituí-lo de uma vez.
Ágil contra abordagens dirigidas a plano
Vale contrastar explicitamente as duas grandes famílias, porque a escolha entre elas não é questão de moda, e sim de contexto. As abordagens dirigidas a plano investem pesado em especificação e projeto antecipados e progridem por fases bem definidas. As abordagens ágeis intercalam especificação, projeto e implementação em ciclos curtos, produzindo software cedo e ajustando o rumo com frequência. Sommerville é cuidadoso ao tratar disso, e quero que você seja também: não existe superioridade absoluta de uma sobre a outra.
| Dimensão | Dirigida a plano | Ágil |
|---|---|---|
| Requisitos | Definidos amplamente no início | Emergem e mudam ao longo do trabalho |
| Entrega | Tende a concentrar-se ao final | Frequente, em incrementos utilizáveis |
| Documentação | Extensa e formal | Enxuta, o suficiente para o trabalho |
| Reação à mudança | Custosa, tratada como exceção | Esperada e acolhida |
| Contexto favorável | Requisitos estáveis, sistemas críticos, times grandes | Requisitos incertos, escopo evolutivo, times próximos |
A leitura madura dessa tabela é que o método deve servir ao problema. Sistemas com requisitos regulatórios rígidos podem se beneficiar de mais planejamento antecipado; produtos que exploram um mercado incerto florescem sob o ágil. Na prática, muitas equipes combinam elementos dos dois mundos. O erro é tratar a escolha como bandeira ideológica em vez de decisão de engenharia.
Um alerta contra o “ágil de fachada”: adotar os rituais do Scrum ou o quadro do Kanban sem abraçar os valores por trás deles produz um teatro caro. Reuniões diárias que viram prestação de contas a um chefe, backlogs que ninguém prioriza de verdade, quadros sem limite de WIP — tudo isso são cerimônias vazias. Freeman é enfático: o ágil vive nos valores, não nos artefatos. Sem a mentalidade, as práticas apenas encenam agilidade.
Como este módulo se conecta ao restante do curso
Neste módulo você conheceu a prototipação como forma de esclarecer requisitos e reduzir risco, e o universo ágil com seus valores, seu arcabouço mais popular, suas práticas técnicas de engenharia e sua alternativa de fluxo contínuo. Adiante, quando estudarmos testes e integração contínua com mais profundidade, você reencontrará muitas dessas práticas em seus detalhes técnicos, e quando falarmos de qualidade e manutenção, verá por que a excelência técnica que a XP defende é o que sustenta a agilidade no tempo.
Síntese
Quero que você retenha três ideias desta conversa. A primeira é que a prototipação é uma ferramenta de comunicação e de redução de risco, e que escolher entre descartar ou evoluir um protótipo precisa ser uma decisão consciente, nunca um acidente da pressa. A segunda é que o ágil é, antes de tudo, um sistema de valores que prioriza pessoas, software em funcionamento, colaboração e adaptação à mudança, e que Scrum, XP e Kanban são maneiras distintas de dar corpo a esses valores — o Scrum coordenando o trabalho em ciclos, a XP cuidando da excelência técnica, o Kanban gerindo o fluxo. A terceira é que a escolha entre ágil e abordagens dirigidas a plano é uma decisão de contexto, não de fé: cada família serve melhor a certos tipos de problema, e a boa engenharia sabe reconhecer qual é qual.
Para consolidar antes da aula: escolha um dos quatro valores do Manifesto Ágil e tente explicar, com um exemplo próprio, uma situação em que segui-lo cegamente daria errado. Se você conseguir defender tanto o valor quanto seu limite, terá entendido que ágil é julgamento, e não receita.