[quote=javamaniaco]Se o tempo estimado para desenvolver o projeto já foi lançado como fixo, temos um problema grande: faz o que o cliente vai olhando como prioritário e deixa as loucuras de lado pra dar tempo ou…, simplesmente implementa e cobra mais do cara, porque o tempo estoura.
[/quote]
O vosso problema não é com métricas ou com scrum. O vosso problema é entender gerenciamento de projetos.
Qualquer tipo de projeto de qualquer área obedece certas regras. Se vc tentar violar essas regras dá merda.
Em desenvolvimento de software tradicional essas regras sçao violadas diáriamente e é por isso que os clientes ficam insatisfeitos.
Primeiro erro :o cliente tem sempre razão.
O cliente não tem sempre razão. Ele tem razão se pede coisas no ambito do contrato. Se está fora do contrato, está fora.
Quais são as três variáveis que o cliente mexe : prazo, preço e requisitos.
Projetos tradicionais partem do principio que tem preço, prazo e requisitos fixos. Mas não é verdade. todos sabem que os requisitos não são fixos.
O triangulo de projeto relaciona 3 coisas : Preço, Tempo e Qualidade. Só dois podem ser otimizados e isso leva à desotimização do outro. Bom e Rápido é Caro. Barato e Rápido tem pouca qualidade.
Em projetos de software sérios a qualidade é otimizada. Portanto só existem dois tipos de projetos de software : Bons, Caros e Rápidos e Bons, Baratos e Lentos. Qualquer outra combinação leva a qualidade fraca.
Na prática as empresas usam : Rápido , Barato e com pouca qualidade. mas eu não posso defender isso.
Para projetos de prazo fixo , vc tem duas constantes : qualidade e tempo. Portando a variável é preço. O cliente não pode pagar o preço que exigimos ? problema nosso. Reveja os centros de custo. Diminua o custo e fará melhor preço.
Para projetos de preço fixo , vc tem constantes qualidade e preço. Portanto a variável é tempo. O cliente não pode pedir as três coisas ao mesmo tempo. quer dizer, pode pedir, mas vc não pode prometer. A razão é simples : é impossivel.
Contratos tradicionais fixam os três e isso é que leva a toda a merda dos projetos tradicionais. É isso que leva a horas extras e outras aberrações …
Se o cliente fixou um prazo isso não significa que vamos entregar todo o software possivel e imaginável até lá. Quer dizer que vamos entregar o software contratados. Classicamente isso significa :" todos os requisitos" , modernamente signfica :“tudo o que couber em X pontos”. Repare que classicamente não é necessário priorizar, porque afinal tudo será incluido. Isso leva a muitos desastres, como deixar o core dos sistema para o fim depois de ter feito todos os cadastros. Em agil é necessário priorizar porque as features que realmente importam são incluidas primeiro. Ou seja, vc começa pelo core e vai adicionando coisas.
São abordagens diferentes. E é preciso entender as diferenças. é preciso entender que o cliente não tem sempre razão, que existem limites ao que se pode prometer e que sim, o cliente tem que fazer trade-offs. Não sabe ? aprende. Não quer aprender ? paga mais caro pelos seus erros.
Se vc tem um ambiente estável, que é balizado por regras, vc consegue estimar facilmente.
Se vc tem um ambiente onde tudo é variável, não é possivel estimar. é por isso que os projetos tradicionais falham feio.
P.S.
Antes que venham com a mesma conversa esfarrapada que não coloco referencias aqui fica uma sobre o que estou falando. The Enterprise and Scrum , tb do Ken Schawber mas de 2007.
Capitulo 4 é muito interessante , não tem diretamente com scrum, mas comas idiosincrazia das empresas. uma resenha pode ser vista aqui