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.

Maykel Santos Braz

May 28, 2017
Tweet

More Decks by Maykel Santos Braz

Other Decks in Programming

Transcript

  1. “É 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/
  2. 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.
  3. 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.
  4. 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
  5. 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?”
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. Custo vs Valor Custo Valor ü  Entrega antecipada ü  Produto

    imaturo ü  Flexibilidade ü  Adequação ao mercado ü  Nem sempre você precisa pagá-la
  12. 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
  13. 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?”
  14. 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
  15. 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
  16. Isolamento Dívida Técnica APIs Micro Services Libs ü  Flexibilidade ü 

    Entrega antecipada ü  Foco no que está deUinido Sistema Dica #8
  17. 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/
  18. 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
  19. 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
  20. 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/
  21. 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/