DívidaTécnica<br />by @freire_da_silva<br />alexandre.freire@locaweb.com.br<br />
O quevairolarnessapalestra?<br />Leis<br />Metáforas<br />Balas de prata<br />Histórias<br />Sintomas<br />Causas<br />Est...
METÁFORA<br />the long lost XP practice<br />
CoC<br />e<br />TCO<br />estão<br />ligados<br />
I O U $$$<br /><br />SWITCH (key) {<br />case ‘a’: printf(”a”)<br />case ‘b’:…<br />}<br />
METÁFORA<br />Dívidairresponsável<br />	- propositalounão<br />Dívidaconsciente<br />- empréstimo do carro<br />	- dívida ...
METÁFORA<br />lost in translation…<br />débitonãoédívida!<br />
vs<br />
“MEUS TESTES ESTÃO RODANDO.”<br />TESTANDO!<br />
//TODO: refatoraraqui<br />//FIXME: issonãodeveria<br />//estarduplicado<br />//WTF! PERIGO!<br />
A incrívelcapacidade de análise dos sereshumanos<br />
?<br />
SISTEMAS COMPLEXOS ADAPTATIVOS<br />
+<br />
O ministério da agilidadeadverte: cuidado com seuuso de métricas<br />
Big Visible Charts<br />By Matthew Bisanz<br />
Nãovamosnospreocupar com uma das causas de dívidatécnica:<br />Falta de um processoclaro de desenvolvimento<br />
kanban<br />análise<br />desenvolvimento<br />aceitação<br />produção<br />
análise<br />desenvolvimento<br />aceitação<br />produção<br />
história: a dívidadesconhecida do e-mail<br />
Nãosabiamosqual era a dívida<br />
Temosproblemas<br />Acumulo de dívidaspequenas<br />
Um novo fornecedorofereceumasolução<br />
Centenas de milhares de R$<br />
Equipe junior parao novo webmail<br />
Continuamos com problemas<br />
Novo responsável<br />
No final osproblemasquetinhamoseramrazoáveis…<br />
… aindaporcima a nova soluçãonãoaguentou<br />
Pagamos a dívida do antigosistema<br />
Descontinuamos a nova solução<br />
CAUSAS<br />
FALHASNACOMUNICAÇÃO<br />
FALHASNACOLABORAÇÃO<br />
EmRetrospectiva<br />
BAD MANAGMENT<br />
CALCULE e MOSTRE sua DÍVIDA<br />
http://www.sonarsource.org/<br />
https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin<br />
DOH!<br />
Lei de Parkinson<br />O trabalhoexpandeparaocuparo tempo reservadoparasuaexecução<br />
FOLGA + refactoring sprint<br />
Time completo<br />
Lei de Murphy<br />
história: falência do SI<br />
SistemaInterno (ou central)<br />
Nasceem 1998 como um banco access pelasmãos do nossofundador<br />
Passaporváriasoutrasmãos…<br />
… nãoconheciamos as boas práticas<br />
lib_fichao2.asp<br />
Big Ball of Mud<br />
Renovamosdomíniossemosclientespedirem<br />
Centenas de milhares de R$<br />
Nãoconseguimosentregaro chargeback a tempo<br />
Centenas de milhares de R$<br />
Falência<br />
Tem quepagar.InvestimentoquaseR$1milhão<br />
Novo sistema, mas…<br />
Atentos a dívida<br />Lei de Conway<br />Camadas anti-corrupção<br />Desacoplamento incremental<br />Virada suave ereversí...
+ refactoring to patterns<br />
análise<br />desenvolvimento<br />aceitação<br />produção<br />
Story Maps<br />
CFD<br />
Use Case<br />
Validated Learning<br />
análise<br />desenvolvimento<br />aceitação<br />produção<br />
Seus testes podem ser dívida<br />
Acúmulo de wait()<br />
Scenario: Tooltip view	Given I selected the "lite" plan	When I move mouse over "tooltip”	Then I should see tooltip content...
análise<br />desenvolvimento<br />aceitação<br />produção<br />
Muitasmétricasnesseespaço<br />Linhas de código<br />Tamanho do método<br />Tamanho da classe<br />Complexidadeciclomática...
TRACKER<br />The long lost XP role<br />
Code Smells – The bloaters<br />Long Method<br />Large Class<br />Primitive Obsession<br />Long Parameter List<br />DataCl...
Code Smells – The OO abusers<br />Switch Statements<br />Temporary Field<br />Refused Bequest<br />Alternative Classes wit...
Code Smells – The change preventers<br />Divergent Change<br />Shotgun Surgery<br />Parallel Inheritance Hierarchies<br />
Code Smells – The Dispensables<br />Lazy class<br />Data class<br />Duplicate Code<br />Dead Code<br />Speculative General...
Code Smells – The Couplers<br />Feature Envy<br />Inappropriate Intimacy<br />Message Chains<br />Middle Man<br />
http://metric-fu.rubyforge.org/<br />
http://metric-fu.rubyforge.org/<br />
http://metric-fu.rubyforge.org/<br />
Toxicidade - no excel ;-)<br />
http://findbugs.sourceforge.net/<br />
Turbulência<br />
Tree map  de classes<br />
Pirâmede de tamanhoecomplexidade<br />
Testes/Código<br />
Complexidade do design<br />
Diagrama de sequência<br />
Code City<br />
Matriz de dependências<br />
Últimahistória: WebStore<br />
Time 2 Market<br />
Use FLOSS paraganharvantagem<br />
Entrandonadívida: escalando com links simbólicos<br />
80 clientes / servidor<br />
12 servidores<br />
Custocliente: R$150<br />
O Marketing vaipra TV<br />
Just-in-time parapagar a dívida<br />
Midleware + Cloud<br />
Custocliente: R$ 8 (edescendo)<br />
Sempreexistem 3 opções<br />
Gambiarranãoéopção<br />
Não se endividar<br />
Divida com juros<br />
Dividasemjuros<br />
O futurohoje<br />Fuzzy tests<br />Injeçãoproposital de defeitos<br />Crawlers mal intencionados<br />Self-healing systems...
Referências<br />http://c2.com/cgi/wiki?TechnicalDebt<br />http://blog.csdn.net/firecoder/article/details/5264031<br />htt...
Próximos SlideShares
Carregando em…5
×

Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta..

4.426 visualizações

Publicada em

Com métodos ágeis na moda, temos ferramentas para conseguir entregar mais valor com mais velocidade, mas muitas vezes ignoramos práticas que ajudam na manutenção da qualidade técnica da base de código. Num outro extremo, a busca pelo perfeccionismo causa tanto atraso que projetos acabam, tecnicamente perfeitos, mas sem nunca ter sido utilizados por clientes. Nesta palestra vou tratar do investimento em qualidade técnica buscando maximizar o retorno do investimento mínimo que conseguimos fazer. Pretendo dar exemplos de projetos reais, onde vi desde qualidade desnecessária à dívidas técnicas profundas e desconhecidas que inviabilizavam progresso. Vou apresentar técnicas para evidenciar e lidar com esta dívida no dia-a-dia e nas relações com os diversos stakeholders de um projeto.

Publicada em: Tecnologia
0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.426
No SlideShare
0
A partir de incorporações
0
Número de incorporações
30
Ações
Compartilhamentos
0
Downloads
53
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Quemaqui tem dívidatécnica?
  • quemaquiperdeu a capacidade de atenderseusclientes com agilidadeaolongo do tempo?
  • Quemaqui tem tempo de entrega (lead time) longo?
  • Quemaquisempreatrasasuasentregas (ouestimativas)?
  • Quemaqui tem umataxa de defeitosalta?
  • Quemaquisentequeseu softwareestáengessado, eécadavezmaisdifícilfazermudanças?
  • Quemaquiestánumaequipefrustradaou com desempenhofraco?
  • Quemaqui tem baixacobertura de testes?
  • E a suite de testes demoraprarodar?
  • Quemjáviucomentáriosassim no código?
  • Quem tem dificuldades de comunicação?
  • Antes de partir pros tipos de dividatecnica, suascausaseestrategiaspralidar com elas, + umaexperiênciapraintroduziroutrametáfora
  • tamanho do código: repositóriomédiowebappcrudzinha tem 200 MB1 pontobidimensional, do tamanhosistema solar, precisão de 1 metro -&gt; 2 doubles 64bits! -&gt; 128 bits!!!
  • Propriedades1- complexo:impossíveldescrever com umaúnicalinguagemouperspectiva2- intratabilidade:nãoexistecaminhomaisrápido pro futuroalém de iratéeleComo lidar?investiga, senteereagepráticasemergentes“previsão” do tempo éciência
  • EquipeCronogramatransparencia
  • Comparisons industry standards different revisions: trends different parts: outliers Aesthetics symmetry balance/harmony
  • Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta..

    1. 1. DívidaTécnica<br />by @freire_da_silva<br />alexandre.freire@locaweb.com.br<br />
    2. 2. O quevairolarnessapalestra?<br />Leis<br />Metáforas<br />Balas de prata<br />Histórias<br />Sintomas<br />Causas<br />Estratégias<br />Práticas<br />Padrões<br />Anti-padrões<br />Recomendações de livros<br />
    3. 3. METÁFORA<br />the long lost XP practice<br />
    4. 4.
    5. 5.
    6. 6.
    7. 7.
    8. 8.
    9. 9. CoC<br />e<br />TCO<br />estão<br />ligados<br />
    10. 10. I O U $$$<br /><br />SWITCH (key) {<br />case ‘a’: printf(”a”)<br />case ‘b’:…<br />}<br />
    11. 11. METÁFORA<br />Dívidairresponsável<br /> - propositalounão<br />Dívidaconsciente<br />- empréstimo do carro<br /> - dívida de cartão de créditooucheque<br />especial<br /> - empréstimo da casa<br />
    12. 12. METÁFORA<br />lost in translation…<br />débitonãoédívida!<br />
    13. 13.
    14. 14.
    15. 15. vs<br />
    16. 16.
    17. 17.
    18. 18.
    19. 19.
    20. 20.
    21. 21.
    22. 22. “MEUS TESTES ESTÃO RODANDO.”<br />TESTANDO!<br />
    23. 23. //TODO: refatoraraqui<br />//FIXME: issonãodeveria<br />//estarduplicado<br />//WTF! PERIGO!<br />
    24. 24.
    25. 25. A incrívelcapacidade de análise dos sereshumanos<br />
    26. 26.
    27. 27.
    28. 28.
    29. 29.
    30. 30.
    31. 31.
    32. 32.
    33. 33.
    34. 34.
    35. 35.
    36. 36. ?<br />
    37. 37. SISTEMAS COMPLEXOS ADAPTATIVOS<br />
    38. 38.
    39. 39.
    40. 40. +<br />
    41. 41.
    42. 42.
    43. 43. O ministério da agilidadeadverte: cuidado com seuuso de métricas<br />
    44. 44. Big Visible Charts<br />By Matthew Bisanz<br />
    45. 45. Nãovamosnospreocupar com uma das causas de dívidatécnica:<br />Falta de um processoclaro de desenvolvimento<br />
    46. 46. kanban<br />análise<br />desenvolvimento<br />aceitação<br />produção<br />
    47. 47. análise<br />desenvolvimento<br />aceitação<br />produção<br />
    48. 48. história: a dívidadesconhecida do e-mail<br />
    49. 49. Nãosabiamosqual era a dívida<br />
    50. 50. Temosproblemas<br />Acumulo de dívidaspequenas<br />
    51. 51. Um novo fornecedorofereceumasolução<br />
    52. 52. Centenas de milhares de R$<br />
    53. 53. Equipe junior parao novo webmail<br />
    54. 54. Continuamos com problemas<br />
    55. 55. Novo responsável<br />
    56. 56. No final osproblemasquetinhamoseramrazoáveis…<br />
    57. 57. … aindaporcima a nova soluçãonãoaguentou<br />
    58. 58. Pagamos a dívida do antigosistema<br />
    59. 59. Descontinuamos a nova solução<br />
    60. 60. CAUSAS<br />
    61. 61. FALHASNACOMUNICAÇÃO<br />
    62. 62. FALHASNACOLABORAÇÃO<br />
    63. 63. EmRetrospectiva<br />
    64. 64. BAD MANAGMENT<br />
    65. 65. CALCULE e MOSTRE sua DÍVIDA<br />
    66. 66. http://www.sonarsource.org/<br />
    67. 67. https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin<br />
    68. 68. DOH!<br />
    69. 69.
    70. 70. Lei de Parkinson<br />O trabalhoexpandeparaocuparo tempo reservadoparasuaexecução<br />
    71. 71. FOLGA + refactoring sprint<br />
    72. 72. Time completo<br />
    73. 73. Lei de Murphy<br />
    74. 74. história: falência do SI<br />
    75. 75. SistemaInterno (ou central)<br />
    76. 76. Nasceem 1998 como um banco access pelasmãos do nossofundador<br />
    77. 77. Passaporváriasoutrasmãos…<br />
    78. 78. … nãoconheciamos as boas práticas<br />
    79. 79. lib_fichao2.asp<br />
    80. 80. Big Ball of Mud<br />
    81. 81. Renovamosdomíniossemosclientespedirem<br />
    82. 82. Centenas de milhares de R$<br />
    83. 83. Nãoconseguimosentregaro chargeback a tempo<br />
    84. 84. Centenas de milhares de R$<br />
    85. 85. Falência<br />
    86. 86. Tem quepagar.InvestimentoquaseR$1milhão<br />
    87. 87. Novo sistema, mas…<br />
    88. 88. Atentos a dívida<br />Lei de Conway<br />Camadas anti-corrupção<br />Desacoplamento incremental<br />Virada suave ereversível<br />
    89. 89. + refactoring to patterns<br />
    90. 90.
    91. 91. análise<br />desenvolvimento<br />aceitação<br />produção<br />
    92. 92. Story Maps<br />
    93. 93. CFD<br />
    94. 94. Use Case<br />
    95. 95. Validated Learning<br />
    96. 96. análise<br />desenvolvimento<br />aceitação<br />produção<br />
    97. 97. Seus testes podem ser dívida<br />
    98. 98. Acúmulo de wait()<br />
    99. 99. Scenario: Tooltip view Given I selected the "lite" plan When I move mouse over "tooltip” Then I should see tooltip content And I move mouse out "tooltip” And I should not see tooltip content<br />
    100. 100. análise<br />desenvolvimento<br />aceitação<br />produção<br />
    101. 101. Muitasmétricasnesseespaço<br />Linhas de código<br />Tamanho do método<br />Tamanho da classe<br />Complexidadeciclomática<br />Métodosporclasse<br />Acoplamento entre objetos<br />Duplicação<br />Atividade do repositório<br />Cobertura dos testes<br />Testabilidade<br />Razão de linhas de testeporlinhas de código<br />
    102. 102. TRACKER<br />The long lost XP role<br />
    103. 103. Code Smells – The bloaters<br />Long Method<br />Large Class<br />Primitive Obsession<br />Long Parameter List<br />DataClumps<br />
    104. 104. Code Smells – The OO abusers<br />Switch Statements<br />Temporary Field<br />Refused Bequest<br />Alternative Classes with Different Interfaces <br />
    105. 105. Code Smells – The change preventers<br />Divergent Change<br />Shotgun Surgery<br />Parallel Inheritance Hierarchies<br />
    106. 106. Code Smells – The Dispensables<br />Lazy class<br />Data class<br />Duplicate Code<br />Dead Code<br />Speculative Generality<br />
    107. 107. Code Smells – The Couplers<br />Feature Envy<br />Inappropriate Intimacy<br />Message Chains<br />Middle Man<br />
    108. 108. http://metric-fu.rubyforge.org/<br />
    109. 109. http://metric-fu.rubyforge.org/<br />
    110. 110. http://metric-fu.rubyforge.org/<br />
    111. 111. Toxicidade - no excel ;-)<br />
    112. 112. http://findbugs.sourceforge.net/<br />
    113. 113. Turbulência<br />
    114. 114. Tree map de classes<br />
    115. 115. Pirâmede de tamanhoecomplexidade<br />
    116. 116. Testes/Código<br />
    117. 117. Complexidade do design<br />
    118. 118. Diagrama de sequência<br />
    119. 119. Code City<br />
    120. 120. Matriz de dependências<br />
    121. 121. Últimahistória: WebStore<br />
    122. 122. Time 2 Market<br />
    123. 123. Use FLOSS paraganharvantagem<br />
    124. 124. Entrandonadívida: escalando com links simbólicos<br />
    125. 125. 80 clientes / servidor<br />
    126. 126. 12 servidores<br />
    127. 127. Custocliente: R$150<br />
    128. 128. O Marketing vaipra TV<br />
    129. 129.
    130. 130. Just-in-time parapagar a dívida<br />
    131. 131. Midleware + Cloud<br />
    132. 132. Custocliente: R$ 8 (edescendo)<br />
    133. 133. Sempreexistem 3 opções<br />
    134. 134. Gambiarranãoéopção<br />
    135. 135. Não se endividar<br />
    136. 136. Divida com juros<br />
    137. 137. Dividasemjuros<br />
    138. 138. O futurohoje<br />Fuzzy tests<br />Injeçãoproposital de defeitos<br />Crawlers mal intencionados<br />Self-healing systems<br />Algoritmosgenéticosqueconsertam bugs<br />
    139. 139.
    140. 140.
    141. 141. Referências<br />http://c2.com/cgi/wiki?TechnicalDebt<br />http://blog.csdn.net/firecoder/article/details/5264031<br />http://petdance.com/perl/technical-debt/<br />http://www.construx.com/Page.aspx?cid=2801<br />http://blog.objectmentor.com/articles/2009/09/22/a-mess-is-not-a-technical-debt<br />http://martinfowler.com/bliki/TechnicalDebtQuadrant.html<br />http://www.jimhighsmith.com/2010/10/19/the-financial-implications-of-technical-debt/<br />http://www.startuplessonslearned.com/2009/07/embrace-technical-debt.html<br />http://requirements.seilevel.com/blog/2011/03/software-requirements-impact-on-technical-debt-–-part-1.html<br />http://martinfowler.com/bliki/TechnicalDebtQuadrant.html<br />http://www.slideshare.net/dtsato/managing-your-technical-debt-agilebrazil-2011<br />http://www.slideshare.net/dwildt/da-mtrica-a-diverso-como-as-mtricas-no-desenvolvimento-de-software-podem-ajudar-times-a-se-divertirem<br />http://www.infoq.com/news/2010/03/monetizing-technical-debt<br />http://www.soberit.hut.fi/mmantyla/badcodesmellstaxonomy.htm<br />http://pyxis-tech.com/en/expertise/refactoring<br />http://akitaonrails.com/2008/12/18/tradu-o-d-vida-t-cnica<br />http://www.infoq.com/presentations/Software-Quality-You-Know-It-when-You-See-It<br />http://programmingtour.blogspot.com/2011/03/turbulence-measuring-turbulent-nature.html<br />

    ×