Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dívida técnica

Dívida técnica

Pilhas e pilhas de código ineficiente e confuso, funcionalidades cortadas, falta de domínio das regras, recursos subaproveitados. Quem nunca passou por isso desenvolvendo um software? É bem provável que você tenha um dívida técnica descontrolada e não saiba. Embora seja um termo utilizado já a algum tempo, nem todos estão familiarizados com a existência, causas e efeitos da dívida técnica. Esta apresentação objetiva conscientizar tanto desenvolvedores quanto líderes sobre estas causas e efeitos, além de apresentar dicas de como identificar e lidar com a dívida técnica.

9336e07ed3f73f9c6a0c7dba66da3abd?s=128

Maykel Santos Braz

May 28, 2017
Tweet

Transcript

  1. 5 Perguntas sobre dívida técnica por: Maykel S. Braz -

    @maykelsb +1
  2. Maykel S. Braz

  3. O que é Dívida Técnica? A origem da metáfora #1

  4. Contextualização Facilitador de comunicação

  5. “É o trabalho extra que surge quando optamos por uma

    implementação fácil, ao invés de uma eUiciente.” -- Ward Cunningham Imagem: https://xkcd.com/292/
  6. Custo de mudança Cost of Change (CoC) Imagem: http://www.continuousautomation.com/technical-debt-a-threat-to-business/

  7. Meu projeto tem Dívida Técnica? Sim! #2

  8. Comentários mais comuns Não dá pra alterar isso! Eu não

    tenho a mínima idéia de como funciona e quem fez não está mais aqui. Já alterei a lógica em TODOS os arquivos em que era usada. Testes unitários? Eles não estavam funcionando, então desliguei.
  9. mais alguns… É um array no código. Edita e coloca

    mais essa exceção. Não precisa atualizar o componente. Nossa versão está funcionando, não está? Eu sei que foi planejado, mas não vai dar pra entregar nessa sprint.
  10. E na prática? ü  Ausência de testes automatizados ü  Código

    ilegível ü  Duplicidade de código ü  Maçaroca de dependências ü  Documentação desatualizada ü  God classes ü  Complexidade desnecessária ü  Equipe desnivelada
  11. Quais são as fontes da Dívida Técnica? ClassiUicando… #3

  12. O Quadrante de Fowler Irresponsável Sem querer Prudente Proposital “Não

    temos tempo para design” “Precisamos fazer a entregar agora e lidar com as consequências” “Agora sabemos como deveria ter sido feito” “Multicamadas?”
  13. Principais causas Tecnologia Limitações Evolução Código legado Processo Manutenção Requisitos

    deUicientes Histórico decisões de design Melhores práticas Produto Cronograma & Orçamento Comunicação (Re)priorização Falta de visão Perda de mercado Pessoas Inexperiência Adiar trabalho Liderança deUiciente Estrelas
  14. Falando em melhores práticas… bit.ly/maykelsb-pqc

  15. Qual o impacto da Dívida Técnica? oO #4

  16. Situações comuns… q Entregas atrasadas q Entregas incompletas q Baixa qualidade q Degradação da

    conUiança q Retenção de recursos … nos negócios Imagem: http://clipart-library.com/clipart/LcdojAjqi.htm
  17. Situações comuns… q Estimativas furadas q Trabalho desagradável q Baixa produtividade q Atritos e

    desconUiança q AtroUia de habilidades q Evasão … no time Imagem: http://clipart-library.com/clipart/8T65EEByc.htm
  18. Broken windows O código já está cheio de gambiarras, mais

    uma não vai fazer diferença. Manda bala! Não dá pra se preocupar com qualidade em um código tão bichado quando esse. Refatorar!? Nada! Se formos refatorar esse código todo, vamos Uicar aqui o resto da vida. Imagem: http://bit.ly/2dNs3Bd
  19. Círculo vicioso Código ruim + Tempo & + Custo Negócio

    menos ágil Menos dinheiro Menos dinheiro pra dev Falência Técnica Imagem: http://technical-debt.org
  20. Impacto nas sprints Dívida técnica fora de controle Imagem: http://blogs.ripple-rock.com/SteveGarnett/2013/03/05/TechnicalDebtStrategiesTacticsForAvoidingRemovingIt.aspx

  21. Dívida Técnica é o mal supremo? <o> #5

  22. Custo vs Valor Custo Valor ü  Entrega antecipada ü  Produto

    imaturo ü  Flexibilidade ü  Adequação ao mercado ü  Nem sempre você precisa pagá-la
  23. The bad and the good (?) ü  Custo aumenta com

    o tempo ü Quem não faz bagunça? ü  Liberdade de criação ü Por quanto tempo é bom? ü  Dívida técnica zerada é o ideal? Imagem: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt
  24. Equilibrio Imagem: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt

  25. É possível gerenciar a Dívida Técnica? As diUiculdades de domar

    a fera #5+1
  26. Conhecimento 0 Hiha! Dica #1 Imagem: http://bit.ly/spider-sense ü  Conhecer ü  Compreender

    ü  Conscientizar ü  Orientar
  27. Prevenção Dica #2 Irresponsável Sem querer Prudente Proposital “Não temos

    tempo para design” “Precisamos fazer a entregar agora e lidar com as consequências” “Agora sabemos como deveria ter sido feito” “Multicamadas?”
  28. DeUinição de Done Dica #3 Imagem: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt

  29. Peopleware Dica #4 Code review Capaci tação Integra ção Conscien

    tização Empenho Comuni cação Nivela mento Imagem: http://kirozeng.deviantart.com/art/2s-space-Emotions-v2-72785912
  30. Backlog de DT Dica #5 Funcionalidades Arquitetura Bugs Dívida Técnica

    Visível Invisível Positivo Negativo Design Docs Arqui tetura Código Testes
  31. Custo/Impacto Dica #6 Imagem: https://www.slideshare.net/jimbethancourt/recognize-assess-reduce-and-manage-technical-debt

  32. PIEorização PIE Probabilidade Impacto Facilidade Dica #7 box.com

  33. Isolamento Dívida Técnica APIs Micro Services Libs ü  Flexibilidade ü 

    Entrega antecipada ü  Foco no que está deUinido Sistema Dica #8
  34. Círculo Virtuoso (automatização) Dica #9 Automatize algumas tarefas Reduzir incidentes

    Libere tempo Page alguma Dívida Técnica Eleve qualidade Imagem: https://www.devopsguys.com/2015/07/31/devops-and-automating-the-repayment-of-technical-debt/
  35. Monitore Dica #10

  36. Conclusões

  37. Razões para discutir a Dívida Técnica ü  Ajuda o time

    técnico a entender as decisões de negócio ü  Ajuda o time de negócios a entender as decisões técnicas ü  Aumenta a transparência de problemas geralmente invisíveis ü  Permite que a dívida técnica seja tratada de forma clara
  38. Conclusões ü  Não deve ser subestimada ü  Tem que ser

    tratada (na maioria dos casos) ü  Pode ser usada a favor do time (com cuidado) ü  Escute o time ü  Conserte suas janelas ü  Refatore!! Imagem: http://www.ruthmalan.com/Journal/2014/2014JournalJanuary.htm
  39. Perguntas maykelsb@yahoo.com.br about.me/maykelsantosbraz @maykelsb GitHub.com/maykelsb https://joind.in/talk/c1795

  40. Referências q  http://wiki.c2.com/? WardExplainsDebtMetaphor q  http://www.designsmells.com/ uncategorized/technical-debt/ q  https://www.linkedin.com/pulse/dangers- power-technical-debt-kurt-cagle

    q  https://www.computer.org/csdl/mags/so/ 2012/06/mso2012060018.html q  http://www.continuousautomation.com/ technical-debt-a-threat-to-business/ q  https://pkruchten.Uiles.wordpress.com/ 2012/08/kruchten-120821-techdebt.pdf q  http://blog.markpearl.co.za/The-Technical- Debt-Trap q  http://blogs.ripple-rock.com/SteveGarnett/ 2013/03/05/ TechnicalDebtStrategiesTacticsForAvoidingRe movingIt.aspx q  http://www.scrumexpert.com/tools/tools-to- assess-and-manage-technical-debt/ q  http://blog.crisp.se/2013/10/11/ henrikkniberg/good-and-bad-technical-debt q  https://www.devopsguys.com/ 2015/07/31/devops-and-automating-the- repayment-of-technical-debt/ q  http://www.softwaretestinghelp.com/ technical-debt-and-qa/ q  http://www.daedtech.com/human-cost- tech-debt/ q  http://martinfowler.com/bliki/ TechnicalDebt.html q  https://martinfowler.com/bliki/ TechnicalDebtQuadrant.html q  https://www.infoq.com/br/news/2009/10/ dissecting-technical-debt q  http://blog.crisp.se/2013/10/11/ henrikkniberg/good-and-bad-technical-debt q  https://blog.box.com/blog/three-letters- saved-my-tech-debt/ q  https://www.devopsguys.com/ 2015/07/31/devops-and-automating-the- repayment-of-technical-debt/
  41. Referências q  http://www.ruthmalan.com/Journal/ 2014/2014JournalJanuary.htm q  http://www.sei.cmu.edu/community/ td2013/program/upload/TechnicalDebt- ICSE.pdf q  https://www.slideshare.net/jimbethancourt/

    recognize-assess-reduce-and-manage- technical-debt q  https://medium.com/Uinding-needles-in- haystacks/technical-debt-and-why-most- people-who-talk-about-it-are-just-plain- wrong-5c52b5d7121c q  http://www.softwaretestinghelp.com/ technical-debt-and-qa/