LEAN SOFTWARE DEVELOPMENT by Samuel Crescêncio Agile Evangelist
Sumário Lean e suas origens Software  & Desenvolvimento Princ ípios do Lean Vendo o desperd ício Construa com integridade Crie conhecimento Reconheça o comprometimento Entregue rápido Respeite as pessoas Otimize o todo
Origens do Lean Supply Chain Management Just-in-Time Manufacturing Lean Software  Development Lean Operations Lean Product  Development Keiretsu (Virtual Integration) Precursor of Lean Thinking Toyota Product Development System Toyota Production System Lean Logistics
Origens do Lean Os Toyoda’s: Sakichi Toyoda  (1867 – 1930) Grande inventor: criou o conceito de automa ção para tecelagem Idéia crucial:  Stop-the-Line Kiichiro Toyoda  (1894 – 1952) Inovador e empreendedor apostou a fortuna da família na fabricação de carros Idéia crucial:  Just-In-Time Eiji Toyoda  (1913 – presente) 50 anos de liderança na Toyota Liderou o desenvolvimento do  The Toyota Production System
Origens do Lean Fluxo  Just-In-Time Foco no fluxo de trabalho, não na utilização de máquinas/pessoas Foco no fluxo de informações, não na completude delas Cultura  Stop-The-Line 1920 - Invenção: Teares elétricos detectam automaticamente quando uma linha se rompe e param a máquina imediatamente, evitando a produção de tecidos defeituosos 1950 – Invenção: Linhas de montagem de automóveis param completamente sempre que um defeito é identificado
Origens do Lean Knowledge-Based-Engineering (The Lean Development System) Operational Value Stream to Customer System Designer Entrepreneurial Leadership Expert Engineering Workforce Set-Based Concurrent Engineering Responsibility-Based Planning  & Control
Eliminate Waste Princ ípio 1: “ Eliminar absolutamente todas as formas de desperd ício” Desperd ício  é tudo o que esgota recursos financeiros, de tempo, esforços e de espaço sem adicionar valor ao cliente Valor  é visto pelos olhos de quem paga, usa e deriva valor dos sistemas que criamos Ponha os óculos do seu cliente! Taiichi Ohno:  “Tudo o que fazemos é olhar para a linha do tempo desde o momento em que o cliente nos dá uma ordem de compra, até o momento em que recebemos o dinheiro e eliminamos todo o desperdício que não gera valor”
Eliminate Waste “ Lean foca na redu ção da linha do tempo removendo todo o desperdício” Value Stream Mapping  - Desenvolvimento Tradicional Value Stream Mapping  - Desenvolvimento  Ágil
Eliminate Waste 7 Desperdícios fatais em desenvolvimento de  software : Trabalho parcialmente feito, ex.: Documentação não codificada Código não sincronizado Código não testado Código não documentado Código sem  deployment Funcionalidades extras Processos extras Troca constante de tarefas Atrasos nas entregas  Defeitos nas entregas Complexidade
Eliminate Waste Standish Group Study Reported at XP2002 A maior oportunidade para aumentar a produtividade em Desenvolvimento de  Software :  Escreva Menos Código!
Build Integrity In Princípio 2 “ Construa com Integridade” Integridade Percebida “ A totalidade do produto alcança um equilíbrio de funcionamento, usabilidade, confiabilidade e economia que dá prazer  ao cliente final.” Integridade Conceitual “ O sistema funciona de forma coesa como um todo,  alcançando um balanço efetivo entre  flexibilidade, manutenibilidade, eficiência e responsividade.”
Build Integrity In “ Integridade é alcançada com um excelente e detalhado fluxo de informações entre cliente, usuários e desenvolvedores”
Build Integrity In Verdades Se você tem ciclos de teste ao final de um ciclo de desenvolvimento você está testando muito tarde Debug  é uma boa maneira de desperdiçar tempo BugTracking Systems  são sistemas para empilhar desperdício Estratégias para Construir com Integridade Compartilhe a visão integridade percebida constantemente Inspecione antes e depois com TDD ( Test Driven Development ) O melhor  design  emerge durante o desenvolvimento Faça o trabalho e entregue em lotes pequenos (diariamente) Mantenha simples e faça  refactoring
Amplify Learning Princípio 3 “ Crie Conhecimento” A natureza do desenvolvimento de  software  exige conhecimento Ou pagamos o preço para ter o  conhecimento ou ficamos em débito Estratégias para Criar Conhecimento Proporcione  feedback  constante através de iterações curtas Execute a  suite  completa de testes diariamente Sincronize o código diariamente Utilize documentação embarcada Crie um repositório de informações dinâmico  ( knowledge-base sharing systems )
Amplify Learning Estratégias para Criar Conhecimento Sugestão Lean para resolução de problemas com o ciclo  PDCA Atividade Etapa Identifique o problema Procure a causa pela raiz Proponha uma solu ção Especifique os resultados esperados P lan Implemente a solu ção D o Verifique os resultados C heck Siga Institucionalize Pepertue o conhecimento A ct
Amplify Learning Estratégias para Criar Conhecimento Use o método científico Observe e descreva um fenômeno ou grupo de fenômenos Formule uma hipótese que explique os fenômenos Use a hipótese para prever algo como a existência de outro fenômeno ou os resultados de novas observações Execute experimentos para ver se as previsões se mantém Se os experimentos confirmarem a hipótese, então isto pode ser considerado uma teoria ou regra Se não, rejeite ou modifique
Defer Commitment Princípio 4 “ Reconheça o Comprometimento” Previsibilidade de resultados ou resultados emergentes? “ Dê à sua equipe o que eles precisam, o melhor espaço,  os melhores equipamentos e ferramentas, confie neles e eles lhe entregarão o melhor trabalho!”
Defer Commitment Estratégias com base em comprometimento Tome decisões com base em um conjunto de opções  ( option-thinking & set-based approach & concurrent development ) Decida no último momento responsável, não antes, nem depois ( The last responsible moment ) Forme equipes capazes e multi-disciplinares Delegue responsabilidade e autonomia à sua equipe Quebre dependências Deixe os resultados emergirem
Deliver as Fast as Possible Princípio 5 “ Entregue Rápido” Entregas rápidas possibilitam Maximizar o  feedback  e diminuir a incerteza Diminuir o  time-to-market   Aumentar e antecipar o ROI Desenvolver produtos mais assertivos Adicionar vantagem competitiva aos clientes Aumentar a visibilidade do processo de desenvolvimento Postergar decisões para o último momento responsável
Deliver as Fast as Possible Estratégias para entregar mais rápido Reduza o ciclo de tempo Equalize a chegada de trabalho Minimize o número de estórias em processo Minimize o tamanho das estórias em processo Estabeleça uma cadência regular Limite a quantidade de trabalho à capacidade Use o  POOL SYSTEM  (originário do  Kan Ban )
Respect People Princípio 6 “ Respeite as Pessoas” “ Use todos os princípios do Lean menos este, e você conseguirá alcançar apenas a sombra do que poderia alcançar!” Pessoas são movidas por motivação Pessoas são movidas por realizações Pessoas são movidas por amor Pessoas são movidas por desejo “ Em tratando-se de pessoas, os números não fazem a diferença,  mas sim as habilidades, o orgulho, a perícia a confiança e a cooperação!”
Respect People Institua as seguintes estratégias de Respeito para sua Equipe Compartilhe antes, compartilhe sempre Teste antes e falhe rápido Troque gerentes por líderes Treine continuamente - líderes e liderados Fora com o medo - institua segurança Quebre as barreiras - crie equipes multi-disciplinares Não meça performance de pessoas, não premie isoladamente Problemas não são criados por pessoas mas pelo “Sistema de Produção” Motive a edução e o auto-aprendizado - desenvolva pessoas Mova responsabilidade e tomada de decisão para os níveis mais baixos Faça, não dê apenas apoio
See the Whole Princípio 7  “ Veja o Todo” “ Para aprimorar o processo você precisa ver de ponta a ponta - do usuário ao desenvolvedor - do banco de dados à tela, e NENHUM detalhe pode ser esquecido nesta jornada!” Ver o todo significa Ver a equipe não o fulano Ver o problema não o culpado Ver o modelo de colaboração não as penalidades Ver a longo prazo Ver todos vendo o todo
See the Whole Estratégias para ver o todo Defina um  Value Stream Leader  que assuma responsabilidade em ver de uma ponta a outra da empresa Foque no produto como um todo não apenas no software Implemente Lean por todo o  Value Stream  da sua empresa Re-estruture as métricas, esqueça os métodos convencionais e foque no  Value Stream Reduza os pontos de desperdício e foque no valor
Lean Software Development “ Uma jornada de mil milhas começa  com um simples passo!” Samuel Crescêncio Obrigado! [email_address]

Lean Software Development

  • 1.
    LEAN SOFTWARE DEVELOPMENTby Samuel Crescêncio Agile Evangelist
  • 2.
    Sumário Lean esuas origens Software & Desenvolvimento Princ ípios do Lean Vendo o desperd ício Construa com integridade Crie conhecimento Reconheça o comprometimento Entregue rápido Respeite as pessoas Otimize o todo
  • 3.
    Origens do LeanSupply Chain Management Just-in-Time Manufacturing Lean Software Development Lean Operations Lean Product Development Keiretsu (Virtual Integration) Precursor of Lean Thinking Toyota Product Development System Toyota Production System Lean Logistics
  • 4.
    Origens do LeanOs Toyoda’s: Sakichi Toyoda (1867 – 1930) Grande inventor: criou o conceito de automa ção para tecelagem Idéia crucial: Stop-the-Line Kiichiro Toyoda (1894 – 1952) Inovador e empreendedor apostou a fortuna da família na fabricação de carros Idéia crucial: Just-In-Time Eiji Toyoda (1913 – presente) 50 anos de liderança na Toyota Liderou o desenvolvimento do The Toyota Production System
  • 5.
    Origens do LeanFluxo Just-In-Time Foco no fluxo de trabalho, não na utilização de máquinas/pessoas Foco no fluxo de informações, não na completude delas Cultura Stop-The-Line 1920 - Invenção: Teares elétricos detectam automaticamente quando uma linha se rompe e param a máquina imediatamente, evitando a produção de tecidos defeituosos 1950 – Invenção: Linhas de montagem de automóveis param completamente sempre que um defeito é identificado
  • 6.
    Origens do LeanKnowledge-Based-Engineering (The Lean Development System) Operational Value Stream to Customer System Designer Entrepreneurial Leadership Expert Engineering Workforce Set-Based Concurrent Engineering Responsibility-Based Planning & Control
  • 7.
    Eliminate Waste Princípio 1: “ Eliminar absolutamente todas as formas de desperd ício” Desperd ício é tudo o que esgota recursos financeiros, de tempo, esforços e de espaço sem adicionar valor ao cliente Valor é visto pelos olhos de quem paga, usa e deriva valor dos sistemas que criamos Ponha os óculos do seu cliente! Taiichi Ohno: “Tudo o que fazemos é olhar para a linha do tempo desde o momento em que o cliente nos dá uma ordem de compra, até o momento em que recebemos o dinheiro e eliminamos todo o desperdício que não gera valor”
  • 8.
    Eliminate Waste “Lean foca na redu ção da linha do tempo removendo todo o desperdício” Value Stream Mapping - Desenvolvimento Tradicional Value Stream Mapping - Desenvolvimento Ágil
  • 9.
    Eliminate Waste 7Desperdícios fatais em desenvolvimento de software : Trabalho parcialmente feito, ex.: Documentação não codificada Código não sincronizado Código não testado Código não documentado Código sem deployment Funcionalidades extras Processos extras Troca constante de tarefas Atrasos nas entregas Defeitos nas entregas Complexidade
  • 10.
    Eliminate Waste StandishGroup Study Reported at XP2002 A maior oportunidade para aumentar a produtividade em Desenvolvimento de Software : Escreva Menos Código!
  • 11.
    Build Integrity InPrincípio 2 “ Construa com Integridade” Integridade Percebida “ A totalidade do produto alcança um equilíbrio de funcionamento, usabilidade, confiabilidade e economia que dá prazer ao cliente final.” Integridade Conceitual “ O sistema funciona de forma coesa como um todo, alcançando um balanço efetivo entre flexibilidade, manutenibilidade, eficiência e responsividade.”
  • 12.
    Build Integrity In“ Integridade é alcançada com um excelente e detalhado fluxo de informações entre cliente, usuários e desenvolvedores”
  • 13.
    Build Integrity InVerdades Se você tem ciclos de teste ao final de um ciclo de desenvolvimento você está testando muito tarde Debug é uma boa maneira de desperdiçar tempo BugTracking Systems são sistemas para empilhar desperdício Estratégias para Construir com Integridade Compartilhe a visão integridade percebida constantemente Inspecione antes e depois com TDD ( Test Driven Development ) O melhor design emerge durante o desenvolvimento Faça o trabalho e entregue em lotes pequenos (diariamente) Mantenha simples e faça refactoring
  • 14.
    Amplify Learning Princípio3 “ Crie Conhecimento” A natureza do desenvolvimento de software exige conhecimento Ou pagamos o preço para ter o conhecimento ou ficamos em débito Estratégias para Criar Conhecimento Proporcione feedback constante através de iterações curtas Execute a suite completa de testes diariamente Sincronize o código diariamente Utilize documentação embarcada Crie um repositório de informações dinâmico ( knowledge-base sharing systems )
  • 15.
    Amplify Learning Estratégiaspara Criar Conhecimento Sugestão Lean para resolução de problemas com o ciclo PDCA Atividade Etapa Identifique o problema Procure a causa pela raiz Proponha uma solu ção Especifique os resultados esperados P lan Implemente a solu ção D o Verifique os resultados C heck Siga Institucionalize Pepertue o conhecimento A ct
  • 16.
    Amplify Learning Estratégiaspara Criar Conhecimento Use o método científico Observe e descreva um fenômeno ou grupo de fenômenos Formule uma hipótese que explique os fenômenos Use a hipótese para prever algo como a existência de outro fenômeno ou os resultados de novas observações Execute experimentos para ver se as previsões se mantém Se os experimentos confirmarem a hipótese, então isto pode ser considerado uma teoria ou regra Se não, rejeite ou modifique
  • 17.
    Defer Commitment Princípio4 “ Reconheça o Comprometimento” Previsibilidade de resultados ou resultados emergentes? “ Dê à sua equipe o que eles precisam, o melhor espaço, os melhores equipamentos e ferramentas, confie neles e eles lhe entregarão o melhor trabalho!”
  • 18.
    Defer Commitment Estratégiascom base em comprometimento Tome decisões com base em um conjunto de opções ( option-thinking & set-based approach & concurrent development ) Decida no último momento responsável, não antes, nem depois ( The last responsible moment ) Forme equipes capazes e multi-disciplinares Delegue responsabilidade e autonomia à sua equipe Quebre dependências Deixe os resultados emergirem
  • 19.
    Deliver as Fastas Possible Princípio 5 “ Entregue Rápido” Entregas rápidas possibilitam Maximizar o feedback e diminuir a incerteza Diminuir o time-to-market Aumentar e antecipar o ROI Desenvolver produtos mais assertivos Adicionar vantagem competitiva aos clientes Aumentar a visibilidade do processo de desenvolvimento Postergar decisões para o último momento responsável
  • 20.
    Deliver as Fastas Possible Estratégias para entregar mais rápido Reduza o ciclo de tempo Equalize a chegada de trabalho Minimize o número de estórias em processo Minimize o tamanho das estórias em processo Estabeleça uma cadência regular Limite a quantidade de trabalho à capacidade Use o POOL SYSTEM (originário do Kan Ban )
  • 21.
    Respect People Princípio6 “ Respeite as Pessoas” “ Use todos os princípios do Lean menos este, e você conseguirá alcançar apenas a sombra do que poderia alcançar!” Pessoas são movidas por motivação Pessoas são movidas por realizações Pessoas são movidas por amor Pessoas são movidas por desejo “ Em tratando-se de pessoas, os números não fazem a diferença, mas sim as habilidades, o orgulho, a perícia a confiança e a cooperação!”
  • 22.
    Respect People Instituaas seguintes estratégias de Respeito para sua Equipe Compartilhe antes, compartilhe sempre Teste antes e falhe rápido Troque gerentes por líderes Treine continuamente - líderes e liderados Fora com o medo - institua segurança Quebre as barreiras - crie equipes multi-disciplinares Não meça performance de pessoas, não premie isoladamente Problemas não são criados por pessoas mas pelo “Sistema de Produção” Motive a edução e o auto-aprendizado - desenvolva pessoas Mova responsabilidade e tomada de decisão para os níveis mais baixos Faça, não dê apenas apoio
  • 23.
    See the WholePrincípio 7 “ Veja o Todo” “ Para aprimorar o processo você precisa ver de ponta a ponta - do usuário ao desenvolvedor - do banco de dados à tela, e NENHUM detalhe pode ser esquecido nesta jornada!” Ver o todo significa Ver a equipe não o fulano Ver o problema não o culpado Ver o modelo de colaboração não as penalidades Ver a longo prazo Ver todos vendo o todo
  • 24.
    See the WholeEstratégias para ver o todo Defina um Value Stream Leader que assuma responsabilidade em ver de uma ponta a outra da empresa Foque no produto como um todo não apenas no software Implemente Lean por todo o Value Stream da sua empresa Re-estruture as métricas, esqueça os métodos convencionais e foque no Value Stream Reduza os pontos de desperdício e foque no valor
  • 25.
    Lean Software Development“ Uma jornada de mil milhas começa com um simples passo!” Samuel Crescêncio Obrigado! [email_address]