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. 5 Perguntas sobre
    dívida técnica
    por: Maykel S. Braz - @maykelsb
    +1

    View Slide

  2. Maykel S. Braz

    View Slide

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

    View Slide

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

    View Slide

  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/

    View Slide

  6. Custo de mudança
    Cost of Change (CoC)
    Imagem: http://www.continuousautomation.com/technical-debt-a-threat-to-business/

    View Slide

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

    View Slide

  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.

    View Slide

  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.

    View Slide

  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

    View Slide

  11. Quais são as fontes da Dívida
    Técnica?
    ClassiUicando…
    #3

    View Slide

  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?”

    View Slide

  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

    View Slide

  14. Falando em melhores práticas…
    bit.ly/maykelsb-pqc

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  20. Impacto nas sprints
    Dívida técnica fora de controle
    Imagem: http://blogs.ripple-rock.com/SteveGarnett/2013/03/05/TechnicalDebtStrategiesTacticsForAvoidingRemovingIt.aspx

    View Slide

  21. Dívida Técnica é o mal
    supremo?

    #5

    View Slide

  22. Custo vs Valor
    Custo
    Valor
    ü  Entrega antecipada
    ü  Produto imaturo
    ü  Flexibilidade
    ü  Adequação ao mercado
    ü  Nem sempre você
    precisa pagá-la

    View Slide

  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

    View Slide

  24. Equilibrio
    Imagem: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt

    View Slide

  25. É possível gerenciar a Dívida
    Técnica?
    As diUiculdades de domar a fera
    #5+1

    View Slide

  26. Conhecimento
    0 Hiha!
    Dica
    #1
    Imagem: http://bit.ly/spider-sense
    ü  Conhecer
    ü  Compreender
    ü  Conscientizar
    ü  Orientar

    View Slide

  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?”

    View Slide

  28. DeUinição de Done
    Dica
    #3
    Imagem: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt

    View Slide

  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

    View Slide

  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

    View Slide

  31. Custo/Impacto
    Dica
    #6
    Imagem: https://www.slideshare.net/jimbethancourt/recognize-assess-reduce-and-manage-technical-debt

    View Slide

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

    View Slide

  33. Isolamento
    Dívida
    Técnica
    APIs
    Micro
    Services
    Libs
    ü  Flexibilidade
    ü  Entrega antecipada
    ü  Foco no que está
    deUinido
    Sistema
    Dica
    #8

    View Slide

  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/

    View Slide

  35. Monitore
    Dica
    #10

    View Slide

  36. Conclusões

    View Slide

  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

    View Slide

  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

    View Slide

  39. Perguntas
    [email protected]
    about.me/maykelsantosbraz
    @maykelsb
    GitHub.com/maykelsb
    https://joind.in/talk/c1795

    View Slide

  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/

    View Slide

  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/

    View Slide