SlideShare ist ein Scribd-Unternehmen logo
1 von 89
GERENCIANDO SUA DÍVIDA
       TÉCNICA
      DANILO SATO - @DTSATO
        THOUGHTWORKS
INTRODUÇÃO
VISÍVEL   INVISÍVEL
+ VALOR
- VALOR
VISÍVEL       INVISÍVEL
+ VALOR




          FUNCIONALIDADE
- VALOR
VISÍVEL        INVISÍVEL
+ VALOR




          FUNCIONALIDADE   ARQUITETURA
- VALOR
VISÍVEL        INVISÍVEL
+ VALOR




          FUNCIONALIDADE   ARQUITETURA
- VALOR




              BUGS
VISÍVEL         INVISÍVEL
+ VALOR




          FUNCIONALIDADE   ARQUITETURA
- VALOR




              BUGS         DÍVIDA TÉCNICA
“SHIPPING FIRST TIME CODE IS LIKE
GOING INTO DEBT.”
“SHIPPING FIRST TIME CODE IS LIKE
GOING INTO DEBT.”


      “A LITTLE DEBT SPEEDS DEVELOPMENT SO
           LONG AS IT IS PAID BACK PROMPTLY”
“SHIPPING FIRST TIME CODE IS LIKE
GOING INTO DEBT.”


      “A LITTLE DEBT SPEEDS DEVELOPMENT SO
           LONG AS IT IS PAID BACK PROMPTLY”


“THE DANGER OCCURS WHEN THE
DEBT IS NOT REPAID”
“SHIPPING FIRST TIME CODE IS LIKE
GOING INTO DEBT.”


      “A LITTLE DEBT SPEEDS DEVELOPMENT SO
           LONG AS IT IS PAID BACK PROMPTLY”


“THE DANGER OCCURS WHEN THE
DEBT IS NOT REPAID”


   “EVERY MINUTE SPENT ON NOT-QUITE-RIGHT
    CODE COUNTS AS INTEREST ON THAT DEBT”
DÍVIDA OU DÉBITO?
SEM      DE
QUERER PROPÓSITO
               IMPRUDENTE
               PRUDENTE
IMPRUDENTE          PRUDENTE
QUERER PROPÓSITO



                    “NÃO TEMOS TEMPO
          DE




                   PARA FAZER DESIGN”
 SEM
IMPRUDENTE             PRUDENTE
QUERER PROPÓSITO


                                        “PRECISAMOS ENTREGAR
                    “NÃO TEMOS TEMPO
          DE




                                            E LIDAR COM AS
                   PARA FAZER DESIGN”
                                           CONSEQUEÊNCIAS”
 SEM
IMPRUDENTE               PRUDENTE
QUERER PROPÓSITO


                                          “PRECISAMOS ENTREGAR
                    “NÃO TEMOS TEMPO
          DE




                                              E LIDAR COM AS
                   PARA FAZER DESIGN”
                                             CONSEQUEÊNCIAS”
 SEM




                   “O QUE SÃO CAMADAS?”
IMPRUDENTE                PRUDENTE
QUERER PROPÓSITO


                                          “PRECISAMOS ENTREGAR
                    “NÃO TEMOS TEMPO
          DE




                                              E LIDAR COM AS
                   PARA FAZER DESIGN”
                                             CONSEQUEÊNCIAS”
 SEM




                                          “AGORA SABEMOS COMO
                   “O QUE SÃO CAMADAS?”
                                          DEVERIA TER SIDO FEITO”
“DÍVIDA TÉCNICA É O QUE
PREVINE VOCÊ DE IR TÃO
   RÁPIDO QUANTO VOCÊ
              PODERIA”
CUSTO DA MUDANÇA
                   POR QUE É RUIM?




                                     CUSTO
                                     ÓTIMO

                                        TEMPO
CUSTO DA MUDANÇA
                   POR QUE É RUIM?



                           CUSTO
                            REAL

                                   DÍVIDA TÉCNICA
                                      CUSTO
                                      ÓTIMO

                                           TEMPO
CUSTO DA MUDANÇA
                     POR QUE É RUIM?



                             CUSTO
                              REAL

                                     DÍVIDA TÉCNICA
                                        CUSTO
                                        ÓTIMO

                                             TEMPO

                   RELEASE
POR QUE É RUIM?

                   RESPONSIVIDADE
                    AO MERCADO
CUSTO DA MUDANÇA




                                    CUSTO
                                     REAL

                                            DÍVIDA TÉCNICA
                                               CUSTO
                                               ÓTIMO

                                                    TEMPO

                       RELEASE
POR QUE ACONTECE?

      PRESSÃO
POR QUE ACONTECE?

      PRESSÃO




                DÍVIDA TÉCNICA
POR QUE ACONTECE?

      PRESSÃO




                   DÍVIDA TÉCNICA




                NÃO PAGAR
                  DÍVIDA
POR QUE ACONTECE?

           PRESSÃO




                        DÍVIDA TÉCNICA




  DÍVIDA             NÃO PAGAR
 ACUMULA               DÍVIDA
POR QUE ACONTECE?

                 PRESSÃO




   DIMINUI
                              DÍVIDA TÉCNICA
PRODUTIVIDADE




        DÍVIDA             NÃO PAGAR
       ACUMULA               DÍVIDA
POR QUE ACONTECE?

                 PRESSÃO




   DIMINUI
                              DÍVIDA TÉCNICA
PRODUTIVIDADE




        DÍVIDA             NÃO PAGAR
       ACUMULA               DÍVIDA
COMO IDENTIFICAR?
MÚLTIPLAS DIMENSÕES
MÚLTIPLAS DIMENSÕES

       CÓDIGO
MÚLTIPLAS DIMENSÕES

       CÓDIGO


                TESTES
MÚLTIPLAS DIMENSÕES

       CÓDIGO


                 TESTES




            INFRA-ESTRUTURA
MÚLTIPLAS DIMENSÕES

         CÓDIGO


                   TESTES




   NFR        INFRA-ESTRUTURA
MÚLTIPLAS DIMENSÕES

                CÓDIGO


ARQUITETURA               TESTES




          NFR        INFRA-ESTRUTURA
MÉTRICAS DE QUALIDADE
MÉTRICAS DE QUALIDADE
MÉTRICAS DE QUALIDADE
SEU CÓDIGO FALA

// TO DO: REFACTOR THIS



// FIX ME: THIS SHOULD NOT BE
DUPLICATED



// WTF! HAZARD! ALERT /!
// DO NOT TOUCH!!!
TESTES
EQUIPE



RETROSPECTIVA TÉCNICA

“ON-DEMAND”

CONTADOR DE HISTÓRIAS
DEMANDA POR FALHA



BUGS

OPS

SUPORTE

USUÁRIOS
PROCESSO DE DEPLOY



PASSOS MANUAIS

LOG DE PROBLEMAS POR DEPLOY

MIGRAÇÃO DE DADOS

PROCESSOS LONGOS
O QUE FAZER?
ESFORÇO




          DOR
ESFORÇO




          DOR
ONDE COMEÇAR?



GANHOS RÁPIDOS

DESIGN ESTRATÉGICO

ÁREAS QUE SÃO FREQUENTEMENTE ALTERADAS

CAUSAS COMUNS DE PROBLEMAS
MAS COMO EXPLICAR?
MAS COMO EXPLICAR?



COMUNIQUE O VALOR E NÃO OS DETALHES TÉCNICOS
MAS COMO EXPLICAR?



COMUNIQUE O VALOR E NÃO OS DETALHES TÉCNICOS

NEGOCIE UM POUCO DA CAPACIDADE PARA PAGAMENTO
DA DÍVIDA
MAS COMO EXPLICAR?



COMUNIQUE O VALOR E NÃO OS DETALHES TÉCNICOS

NEGOCIE UM POUCO DA CAPACIDADE PARA PAGAMENTO
DA DÍVIDA

ADICIONE OS “JUROS” NAS ESTIMATIVAS FUTURAS
TRACKING
TRACKING




✗ ✗ ✗ ✗
RATCHET
TRACKING
TRACKING


            bjet ivos
           O
               em as
           T
               arce las
           P
TRACKING


                     bjet ivos
✔   ✔     ✔     ✔   O
                        em as
✔   ✔     ✔ ✔ ✔ ✔   T
✔   ✔       ✔ ✔ ✔       arce las
                    P
✔   ✔       ✔   ✔
✔
EVITANDO O ACÚMULO
REFATORE SEMPRE



TDD (RED-GREEN-REFACTOR)

CADA COMMIT DEIXA O CÓDIGO UM POUCO MELHOR

REFATORE QUANDO MEXER EM ÁREAS RUINS

REFATORE SEUS TESTES
DESIGN “EM PROGRESSO”



USE NOMES FEIOS

ABORDAGEM INCREMENTAL

PODE PIORAR TEMPORARIAMENTE
UMA HISTÓRIA




          APP
UMA HISTÓRIA




           APP

SVC
UMA HISTÓRIA




           APP

SVC
UMA HISTÓRIA




           APP

SVC
A VERDADE



              APP
              MODEL


               VIEW


            CONTROLLER
A VERDADE



              APP
              MODEL


               VIEW


            CONTROLLER


              HELPER
A VERDADE



                APP
                MODEL


                 VIEW
SVC
              CONTROLLER


                HELPER
A VERDADE



                    APP
                    MODEL


                     VIEW
SVC
                  CONTROLLER
         VAI
      QUEBRAR
       TUDO !!!     HELPER
ARQUITETURA DE TRANSIÇÃO



                  APP
                  MODEL


                   VIEW


                CONTROLLER

     SVC
                  HELPER
ARQUITETURA DE TRANSIÇÃO



                  APP
                  MODEL


                   VIEW


                CONTROLLER

     SVC
                  HELPER
ARQUITETURA DE TRANSIÇÃO



                  APP
                  MODEL


                   VIEW


                CONTROLLER

     SVC
                  HELPER
ARQUITETURA DE TRANSIÇÃO



                  APP
                  MODEL


                   VIEW


                CONTROLLER

     SVC
                  HELPER
ARQUITETURA DE TRANSIÇÃO



                  APP
                  MODEL


                   VIEW


                CONTROLLER

     SVC
                  HELPER
ARQUITETURA DE TRANSIÇÃO



                  APP
                  MODEL


                   VIEW


                CONTROLLER

     SVC
                  HELPER
RESUMO


O QUE É DÍVIDA TÉCNICA?

POR QUE É RUIM E POR QUE ACONTECE?

COMO IDENTIFICAR?

FORMAS DE PLANEJAR E COMUNICAR O PAGAMENTO DA
DÍVIDA

FORMAS DE EVITAR O ACÚMULO
CRÉDITOS / REFERÊNCIAS

MARTIN FOWLER:
   TECHNICAL DEBT QUADRANT
PHILIP KRUCHTEN:
   MANAGING TECHNICAL DEBT IN SOFTWARE-RELIANT SYSTEMS
   HARD CHOICES GAME
JIM HIGHSMITH:
   THE FINANCIAL IMPLICATIONS OF TECHNICAL DEBT
STEVE MCCONNELL:
   NOTES ON TECHNICAL DEBT
AARON ERICKSON:
   DON’T “ENRON” YOUR SOFTWARE PROJECT
FLICKR:
   HTTP://WWW.FLICKR.COM/PHOTOS/ALANCLEAVER/4105722502/IN/PHOTOSTREAM/
GERENCIANDO SUA DÍVIDA
       TÉCNICA
      DANILO SATO - @DTSATO
        THOUGHTWORKS

Weitere ähnliche Inhalte

Ähnlich wie Managing your technical debt - AgileBrazil 2011

Encontro Locaweb Curitiba
Encontro  Locaweb CuritibaEncontro  Locaweb Curitiba
Encontro Locaweb CuritibaFabio Akita
 
ORGANIZE O CANTEIRO DE OBRAS COM O SIENGE E EVITE IMPROVISOS
ORGANIZE O CANTEIRO DE OBRAS COM O SIENGE  E EVITE IMPROVISOSORGANIZE O CANTEIRO DE OBRAS COM O SIENGE  E EVITE IMPROVISOS
ORGANIZE O CANTEIRO DE OBRAS COM O SIENGE E EVITE IMPROVISOSSienge
 
Por mais ajuda techie no mercado - Apresentação Intercon 2009
Por mais ajuda techie no mercado - Apresentação Intercon 2009Por mais ajuda techie no mercado - Apresentação Intercon 2009
Por mais ajuda techie no mercado - Apresentação Intercon 2009nandico
 
Projetando experiencias por meio do Service Design
Projetando experiencias por meio do Service DesignProjetando experiencias por meio do Service Design
Projetando experiencias por meio do Service DesignIgor Drudi
 
Insight-Driven UX - Como direcionar melhor seu projeto de UX com Métricas
Insight-Driven UX - Como direcionar melhor seu projeto de UX com MétricasInsight-Driven UX - Como direcionar melhor seu projeto de UX com Métricas
Insight-Driven UX - Como direcionar melhor seu projeto de UX com MétricasLuis Felipe Fernandes
 
Engenharia Criativa: A nova Era da Engenharia
Engenharia Criativa: A nova Era da EngenhariaEngenharia Criativa: A nova Era da Engenharia
Engenharia Criativa: A nova Era da EngenhariaPorQueNão?
 
Planejamento estratégico digital aulas 1 e 2
Planejamento estratégico digital aulas 1 e 2Planejamento estratégico digital aulas 1 e 2
Planejamento estratégico digital aulas 1 e 2Renato Vertemati
 
Lean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos AiresLean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos AiresWebgoal
 
Inteligência Competitiva_pequeno projeto
Inteligência Competitiva_pequeno projetoInteligência Competitiva_pequeno projeto
Inteligência Competitiva_pequeno projetoRoger William Campos
 
TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...
TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...
TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...tdc-globalcode
 
Traga me pessoas! Envolvimento, comprometimento e conhecimento
Traga me pessoas! Envolvimento, comprometimento e conhecimentoTraga me pessoas! Envolvimento, comprometimento e conhecimento
Traga me pessoas! Envolvimento, comprometimento e conhecimentoRafael Barbosa Camargo
 
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisArquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisAndré Paulovich
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-marketBoris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-marketAgile Trends
 
Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...
Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...
Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...Rafael Barbosa Camargo
 
G5 Design - Consultoria Identidade Visual
G5 Design - Consultoria Identidade VisualG5 Design - Consultoria Identidade Visual
G5 Design - Consultoria Identidade Visualigorrolim
 

Ähnlich wie Managing your technical debt - AgileBrazil 2011 (20)

Encontro Locaweb Curitiba
Encontro  Locaweb CuritibaEncontro  Locaweb Curitiba
Encontro Locaweb Curitiba
 
ORGANIZE O CANTEIRO DE OBRAS COM O SIENGE E EVITE IMPROVISOS
ORGANIZE O CANTEIRO DE OBRAS COM O SIENGE  E EVITE IMPROVISOSORGANIZE O CANTEIRO DE OBRAS COM O SIENGE  E EVITE IMPROVISOS
ORGANIZE O CANTEIRO DE OBRAS COM O SIENGE E EVITE IMPROVISOS
 
Por mais ajuda techie no mercado - Apresentação Intercon 2009
Por mais ajuda techie no mercado - Apresentação Intercon 2009Por mais ajuda techie no mercado - Apresentação Intercon 2009
Por mais ajuda techie no mercado - Apresentação Intercon 2009
 
Flex Mania Vedovelli
Flex Mania VedovelliFlex Mania Vedovelli
Flex Mania Vedovelli
 
Projetando experiencias por meio do Service Design
Projetando experiencias por meio do Service DesignProjetando experiencias por meio do Service Design
Projetando experiencias por meio do Service Design
 
Developer 0.0 - Tiago Pascoal
Developer 0.0 - Tiago PascoalDeveloper 0.0 - Tiago Pascoal
Developer 0.0 - Tiago Pascoal
 
Insight-Driven UX - Como direcionar melhor seu projeto de UX com Métricas
Insight-Driven UX - Como direcionar melhor seu projeto de UX com MétricasInsight-Driven UX - Como direcionar melhor seu projeto de UX com Métricas
Insight-Driven UX - Como direcionar melhor seu projeto de UX com Métricas
 
Engenharia Criativa: A nova Era da Engenharia
Engenharia Criativa: A nova Era da EngenhariaEngenharia Criativa: A nova Era da Engenharia
Engenharia Criativa: A nova Era da Engenharia
 
Planejamento estratégico digital aulas 1 e 2
Planejamento estratégico digital aulas 1 e 2Planejamento estratégico digital aulas 1 e 2
Planejamento estratégico digital aulas 1 e 2
 
Lean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos AiresLean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos Aires
 
Inteligência Competitiva_pequeno projeto
Inteligência Competitiva_pequeno projetoInteligência Competitiva_pequeno projeto
Inteligência Competitiva_pequeno projeto
 
TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...
TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...
TDC2018FLN | Trilha Agile - Onboarding Tecnico: Integrando pessoas em times d...
 
Marketing de Serviços
Marketing de ServiçosMarketing de Serviços
Marketing de Serviços
 
Inovaçao
InovaçaoInovaçao
Inovaçao
 
Traga me pessoas! Envolvimento, comprometimento e conhecimento
Traga me pessoas! Envolvimento, comprometimento e conhecimentoTraga me pessoas! Envolvimento, comprometimento e conhecimento
Traga me pessoas! Envolvimento, comprometimento e conhecimento
 
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisArquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-marketBoris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
Boris Kuszka (Red Hat) - Tecnologias para diminuir o time-to-market
 
Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...
Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...
Análise de Negócios - Case de sucesso com Análise de Negócio Ágil - Agile Bra...
 
G5 Design - Consultoria Identidade Visual
G5 Design - Consultoria Identidade VisualG5 Design - Consultoria Identidade Visual
G5 Design - Consultoria Identidade Visual
 

Mehr von Danilo Sato

Padrões de deploy para devops e entrega contínua - DevDay 2014
Padrões de deploy para devops e entrega contínua - DevDay 2014Padrões de deploy para devops e entrega contínua - DevDay 2014
Padrões de deploy para devops e entrega contínua - DevDay 2014Danilo Sato
 
Keynote RuPy Natal 2014
Keynote RuPy Natal 2014Keynote RuPy Natal 2014
Keynote RuPy Natal 2014Danilo Sato
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaDanilo Sato
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaDanilo Sato
 
Refactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsRefactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsDanilo Sato
 
Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilDanilo Sato
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosDanilo Sato
 
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...Danilo Sato
 
Estratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báEstratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báDanilo Sato
 
Coding Dojo Introduction
Coding Dojo IntroductionCoding Dojo Introduction
Coding Dojo IntroductionDanilo Sato
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Danilo Sato
 
Refactoring at Large
Refactoring at LargeRefactoring at Large
Refactoring at LargeDanilo Sato
 
Refatoração em Larga Escala
Refatoração em Larga EscalaRefatoração em Larga Escala
Refatoração em Larga EscalaDanilo Sato
 

Mehr von Danilo Sato (14)

Padrões de deploy para devops e entrega contínua - DevDay 2014
Padrões de deploy para devops e entrega contínua - DevDay 2014Padrões de deploy para devops e entrega contínua - DevDay 2014
Padrões de deploy para devops e entrega contínua - DevDay 2014
 
Keynote RuPy Natal 2014
Keynote RuPy Natal 2014Keynote RuPy Natal 2014
Keynote RuPy Natal 2014
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega Contínua
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega Contínua
 
Refactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsRefactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the Basics
 
Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia Ágil
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a Objetos
 
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvim...
 
Estratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báEstratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-bá
 
Coding Dojo Introduction
Coding Dojo IntroductionCoding Dojo Introduction
Coding Dojo Introduction
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
 
Refactoring at Large
Refactoring at LargeRefactoring at Large
Refactoring at Large
 
Refatoração em Larga Escala
Refatoração em Larga EscalaRefatoração em Larga Escala
Refatoração em Larga Escala
 
Lean Lego Game
Lean Lego GameLean Lego Game
Lean Lego Game
 

Managing your technical debt - AgileBrazil 2011

Hinweis der Redaktion

  1. \n
  2. \n
  3. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  4. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  5. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  6. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  7. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  8. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  9. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  10. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  11. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  12. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  13. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  14. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  15. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  16. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  17. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  18. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  19. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  20. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  21. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  22. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  23. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  24. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  25. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  26. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  27. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  28. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  29. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  30. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  31. Imagine the app is a perfect brick tower block\nTechnical debt, is the bricks that are stacked slightly weirdly, at an angle, not perfectly placed\nThe more debt you accumulate, the more likely your tower becomes unstable and you have to fix it before building on height alone\n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. 1992 OOPSLA\n
  39. 1992 OOPSLA\n
  40. 1992 OOPSLA\n
  41. 1992 OOPSLA\n
  42. Outras metáforas financeiras:\n* deficit\n* inflação técnica\n* “caixa 2”\n
  43. Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
  44. Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
  45. Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
  46. Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
  47. Jim Highsmith? Martin? Ward\nÉ o que previne você de ir tão rápido quanto você poderia\n
  48. * Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
  49. * Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
  50. * Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
  51. * Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
  52. Israel Gat\n* Sempre começa com pouco / decisões pobres\n* Ninguém escreve código ruim de propósito\n* ctrl+c / ctrl+v\nUm pouco não faz mal\nPergunta: “Como gerenciar?”\n
  53. Israel Gat\n* Sempre começa com pouco / decisões pobres\n* Ninguém escreve código ruim de propósito\n* ctrl+c / ctrl+v\nUm pouco não faz mal\nPergunta: “Como gerenciar?”\n
  54. Israel Gat\n* Sempre começa com pouco / decisões pobres\n* Ninguém escreve código ruim de propósito\n* ctrl+c / ctrl+v\nUm pouco não faz mal\nPergunta: “Como gerenciar?”\n
  55. Israel Gat\n* Sempre começa com pouco / decisões pobres\n* Ninguém escreve código ruim de propósito\n* ctrl+c / ctrl+v\nUm pouco não faz mal\nPergunta: “Como gerenciar?”\n
  56. Israel Gat\n* Sempre começa com pouco / decisões pobres\n* Ninguém escreve código ruim de propósito\n* ctrl+c / ctrl+v\nUm pouco não faz mal\nPergunta: “Como gerenciar?”\n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. * Cobertura de código\n* duplicação\n* tamanho vs. complexidade\n* “churn”\n* acoplamento\n
  64. * Cobertura de código\n* duplicação\n* tamanho vs. complexidade\n* “churn”\n* acoplamento\n
  65. \n
  66. * Falhas comuns\n* Tempo de build\n* Testes ignorados/pendentes\n* Bugs\n
  67. QA + Tech Lead + dev + arquitects\n
  68. Root cause analysis (5 whys? post mortems; bug analysis; relatório de incidentes)\n
  69. \n
  70. \n
  71. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  72. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  73. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  74. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  75. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  76. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  77. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  78. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  79. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  80. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  81. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  82. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  83. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  84. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  85. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  86. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  87. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  88. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  89. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  90. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  91. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  92. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  93. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  94. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  95. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  96. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  97. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  98. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  99. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  100. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  101. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  102. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  103. PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
  104. \n
  105. Buffer por iteração\nKanban => limite o número de cartões de dívida técnica em progresso\n
  106. Buffer por iteração\nKanban => limite o número de cartões de dívida técnica em progresso\n
  107. Buffer por iteração\nKanban => limite o número de cartões de dívida técnica em progresso\n
  108. * enfatize os pay-offs\n
  109. * enfatize os pay-offs\n
  110. * enfatize os pay-offs\n
  111. * enfatize os pay-offs\n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. Exemplo\n
  122. Exemplo\n
  123. Exemplo\n
  124. Exemplo\n
  125. Exemplo\n
  126. Exemplo\n
  127. Exemplo\n
  128. Exemplo\n
  129. Exemplo\n
  130. Exemplo\n
  131. Exemplo\n
  132. Exemplo\n
  133. Exemplo\n
  134. Exemplo\n
  135. \n
  136. \n
  137. \n