Your SlideShare is downloading. ×
0
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...
Upcoming SlideShare
Loading in...5
×

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

3,958

Published on

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.

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,958
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
53
Comments
0
Likes
6
Embeds 0
No embeds

No notes for 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
  • Transcript of "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 />
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×