21. “SHIPPING FIRST TIME CODE IS LIKE
GOING INTO DEBT.”
“A LITTLE DEBT SPEEDS DEVELOPMENT SO
LONG AS IT IS PAID BACK PROMPTLY”
22. “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”
23. “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”
26. IMPRUDENTE PRUDENTE
QUERER PROPÓSITO
“NÃO TEMOS TEMPO
DE
PARA FAZER DESIGN”
SEM
27. IMPRUDENTE PRUDENTE
QUERER PROPÓSITO
“PRECISAMOS ENTREGAR
“NÃO TEMOS TEMPO
DE
E LIDAR COM AS
PARA FAZER DESIGN”
CONSEQUEÊNCIAS”
SEM
28. 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?”
29. 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”
30. “DÍVIDA TÉCNICA É O QUE
PREVINE VOCÊ DE IR TÃO
RÁPIDO QUANTO VOCÊ
PODERIA”
62. MAS COMO EXPLICAR?
COMUNIQUE O VALOR E NÃO OS DETALHES TÉCNICOS
NEGOCIE UM POUCO DA CAPACIDADE PARA PAGAMENTO
DA DÍVIDA
63. 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
87. 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
88. 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/
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
\n
\n
\n
\n
\n
\n
1992 OOPSLA\n
1992 OOPSLA\n
1992 OOPSLA\n
1992 OOPSLA\n
Outras metáforas financeiras:\n* deficit\n* inflação técnica\n* “caixa 2”\n
Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
Exemplos?\nToo expensive to pay => replace (not in scope of this talk)\n
Jim Highsmith? Martin? Ward\nÉ o que previne você de ir tão rápido quanto você poderia\n
* Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
* Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
* Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
* Acúmulo\n* Mais difícil de pagar com o tempo\n* Afeta entrega de valor\n* Síndrome da versão 5\n
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
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
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
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
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
\n
\n
\n
\n
\n
\n
* Cobertura de código\n* duplicação\n* tamanho vs. complexidade\n* “churn”\n* acoplamento\n
* Cobertura de código\n* duplicação\n* tamanho vs. complexidade\n* “churn”\n* acoplamento\n
\n
* Falhas comuns\n* Tempo de build\n* Testes ignorados/pendentes\n* Bugs\n
QA + Tech Lead + dev + arquitects\n
Root cause analysis (5 whys? post mortems; bug analysis; relatório de incidentes)\n
\n
\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
PLANEJAMENTO:\n* priorização\n* comece a pagar a dívida!\n
\n
Buffer por iteração\nKanban => limite o número de cartões de dívida técnica em progresso\n
Buffer por iteração\nKanban => limite o número de cartões de dívida técnica em progresso\n
Buffer por iteração\nKanban => limite o número de cartões de dívida técnica em progresso\n