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]