SIMPLe: uma abordagem simples
orientada a problemas para o
desenvolvimento de software
Rafael Sabbagh
Uma Abordagem Simples
Parte I
!
!
Problemas e Soluções
Uma Abordagem Simples
Aceitar Feature Request gera
desperdício!
Feature Request!
_______________
_______________
_______________
_______________
_______________
_______________
_______________
Uma Abordagem Simples
Converse com a pessoa ao lado
!
!
"Quais os principais desafios que você
enfrenta em seus projetos?”
!
!
2min
Uma Abordagem Simples
O cliente não sabe o que quer!
Mudanças no escopo!
Uma Abordagem Simples
DeGrace & Stahl já diziam em 1990:
• Requisitos não são completamente compreendidos no
início do projeto;!
!
• Usuários 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.
Uma Abordagem Simples
Mas…
Uma Abordagem Simples
"O cliente sabe o que quer,
afinal o produto é para ele!"
Uma Abordagem Simples
"O que desenvolver
em seguida?"
Certo?
"PERGUNTE
PARA O
CLIENTE!"
Uma Abordagem Simples
Você coleta ‘tickets' do cliente?
Uma Abordagem Simples
Você trabalha em uma 'fábrica'?
Feature Request!
Feature Request!
_______________
Feature Request!
_______________
Feature Request!
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
_______________
Uma Abordagem Simples
(mas seu
trabalho não é
assim, é?)
Uma Abordagem Simples
O cliente pode até
ACHAR que sabe
o que quer.
Uma Abordagem Simples
O cliente pode até
ACHAR que sabe
o que quer.
Mas ele não
SABE o que
precisa!
Uma Abordagem Simples
Então… que produto é esse que
seu time está criando?
Done!
Uma Abordagem Simples
“Eu quero um módulo de
relatórios para mostrar
qualquer dado da empresa!"
Uma Abordagem Simples
“Doutor, você deve me
receitar: dois omeprazol ao
dia e um raio-X do abdômen!”
Uma Abordagem Simples
Colaboração
Negócios e Cliente
Uma Abordagem Simples
Uma Abordagem Simples
Feature
Feature
Feature Feature
Feature
Feature
Feature
Feature
Feature Desenvolvimento
Feat%re
de Software
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Uma Abordagem Simples
Feature = !
Problema
?
Código = !
Solução
Uma Abordagem Simples
FEATURE é solução,
!
não é problema!
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
Solução de Negócios
Feature = !
Solução do
Feature
Usuário
=!
Solução do
Usuário
Feature = !
Solução do
Usuário
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
Uma Abordagem Simples
User Story =
Perspectiva do Usuário
Enquanto <quem>,
quero <o quê> !
para <por quê>
Uma Abordagem Simples
Perspectiva do Usuário =
problema/necessidade do usuário
Enquanto <quem>,
quero <o quê> !
para <por quê>
Uma Abordagem Simples
Problema do Usuário?
Enquanto comprador,
quero buscar um
livro por título para
poder escolher o que
comprar
Uma Abordagem Simples
Problema do Usuário?
Enquanto comprador,
quero buscar um
livro por título para
poder escolher o que
comprar
FEATURE!
Uma Abordagem Simples
X
Problema do Usuário?
Enquanto comprador,
quero buscar um
livro por título para
poder escolher o que
comprar
FEATURE!
Uma Abordagem Simples
Problema do Usuário
Uma Abordagem Simples
Problema do Usuário
Uma Abordagem Simples
Problema do Usuário!
Enquanto comprador,
quero encontrar um
livro que sei o título
para poder escolher
comprá-lo
Uma Abordagem Simples
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!
Uma Abordagem Simples
Ao entender o problema,
todos podem contribuir para:
!
•Uma solução mais adequada
!
•Uma solução que resolva o
problema certo!
Uma Abordagem Simples
Quem já…
!
•…entregou EXATAMENTE o
que o cliente pediu, mas
ele não ficou satisfeito!
Uma Abordagem Simples
Quem já…
!
•…entregou DIFERENTE do que ele
pediu e ele ficou satisfeito!
!
•Você entendeu o PROBLEMA real!
Uma Abordagem Simples
Trabalhar orientado a problemas
gera mais valor!
Problema!
_______________
_______________
_______________
_______________
_______________
_______________
_______________
Uma Abordagem Simples
Parte II
!
!
Simplicidade para
Evitar o Desperdício
Uma Abordagem Simples
Simplicidade e Agile
Manifesto Ágil
Uma Abordagem Simples
Simplicidade e Agile
eXtreme Programming
“Qual é a coisa mais simples
que pode funcionar? "
Uma Abordagem Simples
Feature
Feature
Feature Feature
Feature
Feature
Feature
Feature
Feature Desenvolvimento
Feat%re
de Software
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Uma Abordagem Simples
Simplicidade e Agile
“Qual o código mais simples que
pode fazer a feature funcionar?"
Uma Abordagem Simples
Simplicidade e Agile
“Qual o código mais simples que
pode fazer a feature funcionar?"
Que feature?
Uma Abordagem Simples
Simplicidade e Agile
“Qual o código mais simples que
pode fazer a feature funcionar?"
Que feature?
A QUE O CLIENTE PEDIU!
Uma Abordagem Simples
Simplicidade e Agile
“Qual o código mais simples que
pode fazer a feature funcionar?"
X
Que feature?
A QUE O CLIENTE PEDIU!
Uma Abordagem Simples
Simplicidade - Perguntas Certas
“Qual a feature mais simples que
pode resolver esse problema do
usuário?"
Uma Abordagem Simples
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?"
Uma Abordagem Simples
Simplicidade - Baby Steps
… mas para resolver os
problemas!
Uma Abordagem Simples
A Abordagem SIMPLe
the
Software
Incremental
Minimal
Problem-Led
approach
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
O próximo Problema de
Negócios mais importante
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
O próximo Problema de
Negócios mais importante
No Scrum, o
Problema de
Negócios seria
o Spring Goal
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
O conjunto mais simples
possível de Problemas do
Usuário que resolve o
Problema de Negócios
mais importante
!
PRIORIZADOS!
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
No Scrum, o conjunto de
Problemas do Usuário
vem do Product Backlog e
forma o Sprint Backlog
O conjunto mais simples
possível de Problemas do
Usuário que resolve o
Problema de Negócios
mais importante
!
PRIORIZADOS!
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
O Problema do
Problema do Usuário pode ser
Usuário
uma User Story
Problema do
Usuário
Problema do
Usuário
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
Solução de Negócios
Feature = !
Solução do
Usuário
A funcionalidade
mais simples possível
que resolve o
Problema do Usuário
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
Solução de Negócios
Feature = !
Solução do
Feature
Usuário
=!
Solução do
Usuário
Feature = !
Solução do
Usuário
O conjunto de
funcionalidades mais
simples possíveis que
resolve o Problema
de Negócios
Uma Abordagem Simples
Domínio de Negócios
Trabalho de
Problema de Negócios
Solução
de Negócios
desenvolvimento
do Time
Feature = !
Problema do
Solução do
Usuário
Feature
Usuário
=!
Problema do
Solução do
Usuário
Usuário
Feature = !
Problema do
Solução do
Usuário
Usuário
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
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
Solução de Negócios
…do mais
importante
Feature = ! para o
menos
Solução importante
do
Feature
Usuário
=!
Solução do
Usuário
Feature = !
Solução do
Usuário
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
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
Solução de Negócios
…e, claro, "o código
mais simples
Featurepossível
=!
que
fará as
Solução
do
funcionalidades
Feature
Usuário
=!
funcionarem"!
Solução
do
Usuário
Feature = !
Solução do
Usuário
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
Uma Abordagem Simples
Feedback
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
Solução de Negócios
Feature = !
Solução do
Feature
Usuário
=!
Solução do
Usuário
Feature = !
Solução do
Usuário
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
Feedback
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário
O próximo Problema de
Negócios mais importante
…
Uma Abordagem Simples
Domínio de Negócios
Problema de Negócios
O próximo Problema de
Negócios mais importante
Problema do
Usuário
Problema do
Usuário
Problema do
Usuário O próximo Problema mais
importante pode ser um
incremento a um problema
resolvido anteriormente
…
Uma Abordagem Simples
As features ganham mais
complexidade incremento a
incremento…
Uma Abordagem Simples
…sempre a partir de
incrementos de problema, e
somente o necessário.
Uma Abordagem Simples
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
Uma Abordagem Simples
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?
Uma Abordagem Simples
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
Uma Abordagem Simples
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"
Uma Abordagem Simples
Onde usamos isso?
!
Ver palestra amanhã, 16hs
"Cultura de Entrega Diária com
EVDnC – Um Estudo de Caso”
com Marcos Garrido
Uma Abordagem Simples
OBRIGADO!
Rafael Sabbagh
[email protected]
Download

SIMPLe: uma abordagem simples orientada a problemas para o