SIMPLe: uma abordagem simples orientada a problemas para o desenvolvimento de software Rafael Sabbagh
Parte I!! Problemas e Soluções
Aceitar Feature Request gera desperdício! Feature Request!
Converse com a pessoa ao lado!! "Quais os principais desafios que você enfrenta em seus projetos?!! 2min
O cliente não sabe o que quer! Mudanças no escopo!
DeGrace & Stahl já diziam em 1990: Requisitos não são completamente compreendidos no início do projeto;!! s só sabem exatamente o que querem após ver uma versão inicial do produto;!! Requisitos mudam durante o processo de desenvolvimento;!! Novas ferramentas e tecnologias tornam as estratégias de desenvolvimento imprevisíveis.
Mas
"O cliente sabe o que quer, afinal o produto é para ele!"
"O que desenvolver em seguida?" Certo? "PERGUNTE PARA O CLIENTE!"
Você coleta tickets' do cliente?
Você trabalha em uma 'fábrica'? Feature Request! Feature Request! Feature Request! Feature Request!
(mas seu trabalho não é assim, é?)
O cliente pode até ACHAR que sabe o que quer.
O cliente pode até ACHAR que sabe o que quer. Mas ele não SABE o que precisa!
Então que produto é esse que seu time está criando? Done!
Eu quero um módulo de relatórios para mostrar qualquer dado da empresa!"
Doutor, você deve me receitar: dois omeprazol ao dia e um raio-x do abdômen!
Colaboração Negócios e Cliente
Feat%re Feature Feature Feature Feature Desenvolvimento Feature Feature Feature Feature Feature de Software Feature Feature Feature Feature Feature Feature Feature Feature
Feature =! Problema? Código =! Solução
FEATURE é solução,! não é problema!
Domínio de Negócios Domínio Técnico Problema de Negócios Solução de Negócios Feature =! Solução do Feature =! Solução do Feature =! Solução do Solução Técnica Código =! Solução Código Técnica =! Solução Técnica Código =! Solução Técnica
User Story = Perspectiva do Enquanto <quem>, quero <o quê>! para <por quê>
Perspectiva do = problema/necessidade do usuário Enquanto <quem>, quero <o quê>! para <por quê>
? Enquanto comprador, quero buscar um livro por título para poder escolher o que comprar
? Enquanto comprador, quero buscar um livro por título para poder escolher o que comprar FEATURE!
X? Enquanto comprador, quero buscar um livro por título para poder escolher o que comprar FEATURE!
! Enquanto comprador, quero encontrar um livro que sei o título para poder escolher comprá-lo
Possíveis Soluções: Buscar livro por título Lista de livros ordenada por título Fotos de capas ordenadas por título Diferentes soluções têm diferentes custos!
Ao entender o problema, todos podem contribuir para: Uma solução mais adequada! Uma solução que resolva o problema certo!!
Quem já entregou EXATAMENTE o que o cliente pediu, mas ele não ficou satisfeito!!
Quem já entregou DIFERENTE do que ele pediu e ele ficou satisfeito!! Você entendeu o PROBLEMA real!!
Trabalhar orientado a problemas gera mais valor! Problema!
Parte II!! Simplicidade para Evitar o Desperdício
Simplicidade e Agile Manifesto Ágil
Simplicidade e Agile extreme Programming Qual é a coisa mais simples que pode funcionar? "
Feat%re Feature Feature Feature Feature Desenvolvimento Feature Feature Feature Feature Feature de Software Feature Feature Feature Feature Feature Feature Feature Feature
Simplicidade e Agile Qual o código mais simples que pode fazer a feature funcionar?"
Simplicidade e Agile Qual o código mais simples que pode fazer a feature funcionar?" Que feature?
Simplicidade e Agile Qual o código mais simples que pode fazer a feature funcionar?" Que feature? A QUE O CLIENTE PEDIU!
Simplicidade e Agile Qual o código mais simples que pode fazer a feature funcionar?" X Que feature? A QUE O CLIENTE PEDIU!
Simplicidade - Perguntas Certas Qual a feature mais simples que pode resolver esse problema do usuário?"
Simplicidade - Perguntas Certas Qual a feature mais simples que pode resolver esse problema do usuário?" Qual conjunto mais simples de problemas do usuário pode resolver o problema de negócios?"
Simplicidade - Baby Steps mas para resolver os problemas!
A Abordagem SIMPLe the Software Incremental Minimal Problem-Led approach
Problema de Negócios Domínio de Negócios O próximo Problema de Negócios mais importante
Problema de Negócios Domínio de Negócios O próximo Problema de Negócios mais importante No Scrum, o Problema de Negócios seria o Spring Goal
Problema de Negócios Domínio de Negócios O conjunto mais simples possível de Problemas do que resolve o Problema de Negócios mais importante! PRIORIZADOS!
Problema de Negócios Domínio de Negócios No Scrum, o conjunto de Problemas do vem do Product Backlog e forma o Sprint Backlog O conjunto mais simples possível de Problemas do que resolve o Problema de Negócios mais importante! PRIORIZADOS!
Problema de Negócios Domínio de Negócios O pode ser uma User Story
Domínio de Negócios Problema de Negócios Solução de Negócios Feature =! Solução do A funcionalidade mais simples possível que resolve o
Domínio de Negócios Problema de Negócios Solução de Negócios Feature =! Solução do Feature =! Solução do Feature =! Solução do O conjunto de funcionalidades mais simples possíveis que resolve o Problema de Negócios
Domínio de Negócios Trabalho de Problema de Negócios Solução desenvolvimento Negócios do Time Feature =! Solução do Feature =! Solução do Feature =! Solução do Domínio Técnico Solução Técnica Código =! Solução Código Técnica =! Solução Técnica Código =! Solução Técnica
Domínio de Negócios Domínio Técnico Problema de Negócios Solução de Negócios do mais importante Feature =! para o menos Solução importante do Feature =! Solução do Feature =! Solução do Solução Técnica Código =! Solução Código Técnica =! Solução Técnica Código =! Solução Técnica
Domínio de Negócios Domínio Técnico Problema de Negócios Solução de Negócios e, claro, "o código mais simples Feature possível =! que Solução fará as do funcionalidades Feature =! Solução funcionarem"! do Feature =! Solução do Solução Técnica Código =! Solução Código Técnica =! Solução Técnica Código =! Solução Técnica
Feedback Domínio de Negócios Domínio Técnico Problema de Negócios Solução de Negócios Feature =! Solução do Feature =! Solução do Feature =! Solução do Solução Técnica Código =! Solução Código Técnica =! Solução Técnica Código =! Solução Técnica Feedback
Problema de Negócios Domínio de Negócios O próximo Problema de Negócios mais importante
Problema de Negócios Domínio de Negócios O próximo Problema de Negócios mais importante O próximo Problema mais importante pode ser um incremento a um problema resolvido anteriormente
As features ganham mais complexidade incremento a incremento
sempre a partir de incrementos de problema, e somente o necessário.
Resumindo the SIMPLe approach: foco em PROBLEMAS do cliente/ usuário. Não receber feature requests - geram desperdício! desenvolver as funcionalidades mais simples que resolvem o problema, incremento a incremento
Resumindo the SIMPLe approach: 1. qual o próximo problema mais importante do cliente a resolver? 2. quais os problemas do usuário para resolver esse problema de negócio? 3. quais as funcionalidades mais simples para resolver os problemas do usuário?
VANTAGENS - the SIMPLe approach 1. redução drástica do desperdício resolver os problemas certos menor complexidade nas features menor esforço melhores soluções -todos participam -evoluir a partir do feedback
VANTAGENS - the SIMPLe approach 2. motivação do time Daniel Pink: Propósito" J. R. Hackman: "impacto significativo e perceptível sobre a vida ou o trabalho de outras pessoas"
Onde usamos isso?! Ver palestra amanhã, 16hs "Cultura de Entrega Diária com EVDnC Um Estudo de Caso com Marcos Garrido
OBRIGADO! Rafael Sabbagh rsabbagh@k21.com.br