Lean e Agile
TIAGO JARA - QUICKTECH
For every complex problem there is an answer that is clear,
simple, and wrong.
Projetos de software são complexos?
O que é desenvolvimento de software?
“[…] é o ato de elaborar e implementar um sistema
computacional, isto é, transformar a necessidade de um
utilizador ou de um mercado em um produto
de software.” – Wikipedia (S2)
Como se proteger da complexidade de
desenvolver software?
Solução: Tratar software como
qualquer outro projeto
Modelo tradicional
 PMBOK
 Alta burocracia
 Equipes fechadas para mudanças de escopo
 Produto só faz sentido quando entregue em sua totalidade
 Figuras comuns: Gerente de projeto, líder técnico, encarregados.
 Termos comuns: Escopo, tempo, custos, riscos.
Mudança de escopo
O pesadelo do modelo tradicional
Agile
Manifesto ágil
Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda
Assinado por: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn,
Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew
Hunt Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken
Schwaber, Jeff Sutherland, Dave Thomas
2001
Os 12 princípios do agile
 Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com
valor agregado.
 Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram
vantagem das mudanças visando vantagem competitiva para o cliente.
 Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à
menor escala de tempo.
 Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
 Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie
neles para fazer o trabalho.
 O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é
através de conversa face a face.
 Software funcionando é a medida primária de progresso.
 Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e
usuários devem ser capazes de manter um ritmo constante indefinidamente.
 Contínua atenção à excelência técnica e bom design aumenta a agilidade.
 Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.
 As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.
 Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu
comportamento de acordo.
Agilidade != Velocidade
Frameworks agile
 SCRUM
 XP
 Kanban
 RUP
“Agile não é apenas um método de
gestão, mas uma forma de pensar”
JARA, 2017
“Para praticar o agile é necessário uma
mudança de pensamento”
JARA, 2017
Lean Thinking
“Lean Thinking baseia-se em práticas e conceitos inspirados no Sistema
Toyota de Produção, cujos princípios visam a eliminação dos desperdícios.
Através do pensamento lean, organizações do mundo todo tem transformado
suas operações, tornando-se muito mais produtivas, lucrativas e eficientes”
“Lean thinking é um passo gigante
para o pensamento ágil”
JARA, 2017
Princípios do Lean Thinking
 Valor - premissa básica para começar a desenvolver algo: deixar o cliente definir o que é valor em seu
produto.
 Fluxo de Valor - Identificar quais etapas agrega valor ao produto Aquelas que não agregam valor
(desperdício) devem ser eliminadas, reduzindo automaticamente os custos de máquinas, energia, tempo,
etc.
 Fluxo contínuo - Depois de identificadas apenas as tarefas que criam valor ao produto, nessa etapa
deverá ser criado o fluxo contínuo, ou seja, produzir sem interrupções.
 Produção Puxada - Nessa etapa a empresa passa a trabalhar produzindo apenas o que o cliente quer,
reduzindo ao máximo o estoque.
 Perfeição - É a busca pela melhoria contínua dos processos, pessoas e produtos.
Lean Thinking para software
 Elimine Desperdícios
 Inclua a Qualidade no Processo
 Crie Conhecimento
 Adie Decisões e Comprometimentos
 Entregue o quanto antes
 Respeite as Pessoas e "Empower" a equipe
 Otimize o Todo
Desperdícios no processo de
desenvolvimento de software
 Requisitos
 Processos/Passos a mais
 Funcionalidades a mais
 Troca de tarefas (Task switching, Handoffs)
 Atrasos
 Movimento (tempo gasto para encontrar informações)
 TDD - Test Driven Development
 Refactoring
 Integração contínua
 Code review
 Testes contínuos e automatizados
Qualidade no processo de
desenvolvimento de software
“Em desenvolvimento de software,
pensamento ágil é peça fundamental
para sucesso do produto”
JARA, 2017

Lean Thinking e Agile para desenvolvimento de software

  • 1.
    Lean e Agile TIAGOJARA - QUICKTECH
  • 2.
    For every complexproblem there is an answer that is clear, simple, and wrong.
  • 3.
    Projetos de softwaresão complexos?
  • 4.
    O que édesenvolvimento de software? “[…] é o ato de elaborar e implementar um sistema computacional, isto é, transformar a necessidade de um utilizador ou de um mercado em um produto de software.” – Wikipedia (S2)
  • 6.
    Como se protegerda complexidade de desenvolver software?
  • 7.
    Solução: Tratar softwarecomo qualquer outro projeto
  • 8.
    Modelo tradicional  PMBOK Alta burocracia  Equipes fechadas para mudanças de escopo  Produto só faz sentido quando entregue em sua totalidade  Figuras comuns: Gerente de projeto, líder técnico, encarregados.  Termos comuns: Escopo, tempo, custos, riscos.
  • 9.
    Mudança de escopo Opesadelo do modelo tradicional
  • 10.
  • 11.
    Manifesto ágil Indivíduos einterações mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda Assinado por: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas 2001
  • 12.
    Os 12 princípiosdo agile  Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado.  Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das mudanças visando vantagem competitiva para o cliente.  Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo.  Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.  Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho.  O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.  Software funcionando é a medida primária de progresso.  Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.  Contínua atenção à excelência técnica e bom design aumenta a agilidade.  Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.  As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.  Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.
  • 13.
  • 14.
    Frameworks agile  SCRUM XP  Kanban  RUP
  • 15.
    “Agile não éapenas um método de gestão, mas uma forma de pensar” JARA, 2017
  • 16.
    “Para praticar oagile é necessário uma mudança de pensamento” JARA, 2017
  • 17.
  • 18.
    “Lean Thinking baseia-seem práticas e conceitos inspirados no Sistema Toyota de Produção, cujos princípios visam a eliminação dos desperdícios. Através do pensamento lean, organizações do mundo todo tem transformado suas operações, tornando-se muito mais produtivas, lucrativas e eficientes”
  • 20.
    “Lean thinking éum passo gigante para o pensamento ágil” JARA, 2017
  • 21.
    Princípios do LeanThinking  Valor - premissa básica para começar a desenvolver algo: deixar o cliente definir o que é valor em seu produto.  Fluxo de Valor - Identificar quais etapas agrega valor ao produto Aquelas que não agregam valor (desperdício) devem ser eliminadas, reduzindo automaticamente os custos de máquinas, energia, tempo, etc.  Fluxo contínuo - Depois de identificadas apenas as tarefas que criam valor ao produto, nessa etapa deverá ser criado o fluxo contínuo, ou seja, produzir sem interrupções.  Produção Puxada - Nessa etapa a empresa passa a trabalhar produzindo apenas o que o cliente quer, reduzindo ao máximo o estoque.  Perfeição - É a busca pela melhoria contínua dos processos, pessoas e produtos.
  • 22.
    Lean Thinking parasoftware  Elimine Desperdícios  Inclua a Qualidade no Processo  Crie Conhecimento  Adie Decisões e Comprometimentos  Entregue o quanto antes  Respeite as Pessoas e "Empower" a equipe  Otimize o Todo
  • 23.
    Desperdícios no processode desenvolvimento de software  Requisitos  Processos/Passos a mais  Funcionalidades a mais  Troca de tarefas (Task switching, Handoffs)  Atrasos  Movimento (tempo gasto para encontrar informações)
  • 24.
     TDD -Test Driven Development  Refactoring  Integração contínua  Code review  Testes contínuos e automatizados Qualidade no processo de desenvolvimento de software
  • 25.
    “Em desenvolvimento desoftware, pensamento ágil é peça fundamental para sucesso do produto” JARA, 2017