🚀 Capítulo 17: Estimativas e Prazos (Tema: Doutor Estranho)
NOTE
Este capítulo utiliza a temática de Doutor Estranho para explicar as Estimativas. Nós não temos a Joia do Tempo para prever o futuro exato; por isso, usamos técnicas ágeis para estimar o esforço!
1. 🎯 Objetivo da Aula
Compreender a dificuldade de estimar prazos na Engenharia de Software, entendendo a diferença entre estimar tempo e estimar esforço, e conhecendo a técnica do Planning Poker.
2. 🏢 O Cenário Prático (Seu Desafio)
No filme Vingadores: Guerra Infinita, o Doutor Estranho usa a Joia do Tempo para olhar futuros possíveis e ver em quantos eles vencem o vilão Thanos. Ele consegue prever exatamente o tempo e o esforço que cada caminho vai exigir.
No desenvolvimento de software, os clientes e gerentes sempre fazem a mesma pergunta: “Quanto tempo vai demorar para fazer essa nova tela?“. Nós não temos a Joia do Tempo!
- Se dissermos que demora 2 dias, pode ser que encontremos um bug bizarro e demore 2 semanas.
- Estimar tempo em software é uma das tarefas mais difíceis que existem porque cada problema é novo e único.
Para resolver isso, as equipes ágeis pararam de tentar adivinhar as horas e começaram a medir o esforço e a complexidade das tarefas. Seu desafio é olhar para o futuro do projeto sem a joia do tempo!
🧠 Fundamentos: A Teoria Traduzida
⏳ 1. Por que é difícil estimar tempo?
Se você pedir para um pedreiro construir um muro de 10 metros, ele consegue estimar o tempo com precisão porque ele já construiu milhares de muros iguais. No software, nós raramente fazemos a mesma coisa duas vezes. Se já existisse um código pronto que resolvesse o problema, nós apenas o copiaríamos! Cada tarefa é uma descoberta científica em miniatura.
🃏 2. Estimando Esforço (Story Points):
Em vez de dizer que uma tarefa leva “8 horas”, a equipe dá uma pontuação de esforço para ela (Ex: 1, 2, 3, 5, 8, 13…).
- Uma tarefa nota 1 é muito simples e rápida.
- Uma tarefa nota 8 é complexa, envolve riscos e exige muita pesquisa.
🃏 3. O Planning Poker:
É um jogo sério usado pelas equipes Scrum para chegar a um consenso sobre o esforço de uma tarefa:
- O Product Owner explica a tarefa.
- Cada programador escolhe uma carta com um número (da sequência de Fibonacci) sem mostrar para os outros.
- Todos revelam as cartas ao mesmo tempo.
- Se alguém deu nota 1 e outro deu nota 13, eles conversam para entender por que um achou tão fácil e o outro achou tão difícil! Eles entram em acordo e dão a nota final.
4. 📖 Exemplo Guiado: A Sequência de Fibonacci
Por que usamos os números 1, 2, 3, 5, 8, 13 e não 1, 2, 3, 4, 5, 6? Porque quanto maior a tarefa, maior a nossa incerteza!
- Entre uma tarefa de nota 1 e nota 2, a diferença é pequena.
- Mas se uma tarefa passa de 5, nós não damos nota 6 ou 7. Pulamos direto para o 8 ou 13! Isso deixa claro para o cliente que aquela tarefa é grande, complexa e incerta.
5. 🛠️ Prática Obrigatória 1: Jogando o Planning Poker
Imagine que a equipe está estimando o esforço para criar uma “Tela de Login com integração com o Google”.
- O programador A deu nota 3.
- O programador B deu nota 13.
- O que a equipe deve fazer agora segundo as regras do Planning Poker?
- Qual costuma ser o motivo mais comum para uma diferença tão grande de notas entre dois programadores sobre a mesma tarefa?
6. 🛠️ Prática Obrigatória 2: Tempo vs. Esforço
- Se a equipe estimou que uma tarefa tem esforço nota 8, isso significa que ela vai demorar exatamente 8 horas para ficar pronta? Explique.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 17 EngSoftware) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
extra_engenharia_de_software/
├── capitulos/
│ ├── capitulo_17_prazos.md
│ └── codigos/
│ └── cap17/
│ └── estimativas.txt💡 Checkpoint de Lógica
Estimar esforço ajuda a equipe a saber quanto trabalho cabe dentro de uma Sprint de 2 semanas. Se a equipe costuma entregar 30 pontos por Sprint, eles não devem colocar 50 pontos de trabalho no planejamento!
10. 🔥 Desafio de Fixação
Pesquise o que significa o termo Velocity (Velocidade) no contexto do Scrum.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Eles devem conversar. O programador A deve explicar por que achou a tarefa simples (talvez ele já tenha um código pronto de outro projeto) e o programador B deve explicar por que achou tão complexa (talvez ele saiba de alguma restrição de segurança do Google que o outro não sabe).
- Falta de conhecimento compartilhado ou visões diferentes sobre a complexidade técnica da tarefa. Gabarito da Prática 2:
- Não. Nota 8 significa que a tarefa é complexa e trabalhosa. O tempo real que ela vai demorar depende de quem vai fazê-la, se haverá interrupções ou se surgirão problemas no caminho. Story Points medem esforço, não tempo de relógio!