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

141
Dívida Técnica by @freire_da_silva [email protected]

Upload: alexandre-freire

Post on 04-Dec-2014

4.331 views

Category:

Technology


0 download

DESCRIPTION

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.

TRANSCRIPT

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

DívidaTécnica

by @[email protected]

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

O que vai rolar nessa palestra?

• Leis• Metáforas• Balas de prata• Histórias• Sintomas• Causas• Estratégias• Práticas• Padrões• Anti-padrões• Recomendações de livros

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

METÁFORAthe long lost XP practice

Page 4: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 5: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 6: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 7: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 8: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 9: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta

CoCeTCOestãoligados

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

SWITCH (key) {case ‘a’: printf(”a”)case ‘b’:…}

I O U $$$

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

METÁFORADívida irresponsável

- proposital ou não

Dívida consciente- empréstimo do carro- dívida de cartão de crédito ou cheque

especial - empréstimo da casa

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

METÁFORA

débito não é dívida!

lost in translation…

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

vs

Page 16: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 17: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 18: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 19: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 20: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 21: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 22: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta

“MEUS TESTES ESTÃO RODANDO.”

TESTANDO!

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

//TODO: refatorar aqui

//FIXME: isso não deveria //estar duplicado

//WTF! PERIGO!

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

A incrível capacidade de

análise dos seres humanos

Page 26: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 27: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 28: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 29: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 30: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 31: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 32: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 33: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 34: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 35: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta
Page 36: Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta

?

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

SISTEMAS COMPLEXOS ADAPTATIVOS

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

+

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

O ministério da agilidade adverte: cuidado com seu uso de métricas

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

Big Visible Charts

By Matthew Bisanz

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

Não vamos nos preocupar com uma das causas de dívida técnica:

Falta de um processo claro de desenvolvimento

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

kanban

análise desenvolvimento aceitação produção

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

análise desenvolvimento aceitação produção

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

história: a dívida desconhecida do

e-mail

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

Não sabiamos qual era a dívida

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

Temos problemas

Acumulo de dívidas pequenas

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

Um novo fornecedor

oferece uma solução

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

Centenas de milhares de R$

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

Equipe junior para o novo

webmail

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

Continuamos com problemas

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

Novo responsável

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

No final os problemas que tinhamos eram

razoáveis…

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

… ainda por cima a nova solução não

aguentou

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

Pagamos a dívida do antigo

sistema

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

Descontinuamos a nova solução

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

CAUSAS

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

FALHASNA

COMUNICAÇÃO

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

FALHASNA

COLABORAÇÃO

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

Em Retrospectiva

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

BAD MANAGMENT

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

CALCULE e MOSTRE sua

DÍVIDA

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

http://www.sonarsource.org/

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

https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin

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

DOH!

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

Lei de Parkinson

O trabalho expande para ocupar o tempo reservado para sua execução

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

FOLGA + refactoring sprint

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

Time completo

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

Lei de Murphy

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

história: falência do SI

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

Sistema Interno (ou central)

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

Nasce em 1998 como um banco

access pelas mãos do nosso fundador

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

Passa por várias outras mãos…

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

… não conheciamos as

boas práticas

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

lib_fichao2.asp

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

Big Ball of Mud

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

Renovamos domínios sem os clientes pedirem

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

Centenas de milhares de R$

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

Não conseguimos entregar o

chargeback a tempo

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

Centenas de milhares de R$

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

Falência

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

Tem que pagar.Investimento

quase R$1milhão

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

Novo sistema, mas…

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

• Atentos a dívida

• Lei de Conway

• Camadas anti-corrupção

• Desacoplamento incremental

• Virada suave e reversível

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

+ refactoring to patterns

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

análise desenvolvimento aceitação produção

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

Story Maps

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

CFD

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

Use Case

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

Validated Learning

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

análise desenvolvimento aceitação produção

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

Seus testes podem ser

dívida

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

Acúmulo de wait()

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

Scenario: Tooltip viewGiven I selected the "lite" planWhen I move mouse over "tooltip”Then I should see tooltip contentAnd I move mouse out "tooltip”And I should not see tooltip content

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

análise desenvolvimento aceitação produção

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

Muitas métricas nesse espaço

• Linhas de código• Tamanho do método• Tamanho da classe• Complexidade ciclomática• Métodos por classe• Acoplamento entre objetos• Duplicação• Atividade do repositório• Cobertura dos testes• Testabilidade• Razão de linhas de teste por linhas de código

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

TRACKERThe long lost XP role

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

Code Smells – The bloaters

• Long Method• Large Class• Primitive Obsession• Long Parameter List• DataClumps

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

Code Smells – The OO abusers

• Switch Statements• Temporary Field• Refused Bequest• Alternative Classes with Different Interfaces

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

Code Smells –

The change preventers

• Divergent Change• Shotgun Surgery • Parallel Inheritance Hierarchies

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

Code Smells – The Dispensables

• Lazy class• Data class • Duplicate Code• Dead Code• Speculative Generality

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

Code Smells – The Couplers

• Feature Envy• Inappropriate Intimacy• Message Chains • Middle Man

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

http://metric-fu.rubyforge.org/

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

http://metric-fu.rubyforge.org/

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

http://metric-fu.rubyforge.org/

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

Toxicidade - no excel ;-)

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

http://findbugs.sourceforge.net/

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

Turbulência

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

Tree map de classes

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

Pirâmede de tamanho e complexidade

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

Testes/Código

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

Complexidade do design

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

Diagrama de sequência

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

Code City

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

Matriz de dependências

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

Última história: WebStore

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

Time 2 Market

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

Use FLOSS para ganhar vantagem

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

Entrando na dívida:

escalando com links simbólicos

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

80 clientes / servidor

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

12 servidores

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

Custo cliente: R$150

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

O Marketing vai pra TV

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

Just-in-time para pagar a dívida

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

Midleware + Cloud

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

Custo cliente: R$ 8

(e descendo)

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

Sempre existem 3 opções

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

Gambiarra não é opção

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

Não se endividar

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

Divida com juros

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

Divida sem juros

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

O futuro hoje

• Fuzzy tests– Injeção proposital de defeitos– Crawlers mal intencionados

• Self-healing systems– Algoritmos genéticos que consertam bugs

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

Referências• http://c2.com/cgi/wiki?TechnicalDebt• http://blog.csdn.net/firecoder/article/details/5264031• http://petdance.com/perl/technical-debt/• http://www.construx.com/Page.aspx?cid=2801• http://blog.objectmentor.com/articles/2009/09/22/a-mess-is-not-a-technical-debt• http://martinfowler.com/bliki/TechnicalDebtQuadrant.html• http://www.jimhighsmith.com/2010/10/19/the-financial-implications-of-technical-debt/• http://www.startuplessonslearned.com/2009/07/embrace-technical-debt.html• http://requirements.seilevel.com/blog/2011/03/software-requirements-impact-on-technical-debt-–-pa

rt-1.html• http://martinfowler.com/bliki/TechnicalDebtQuadrant.html• http://www.slideshare.net/dtsato/managing-your-technical-debt-agilebrazil-2011• http://www.slideshare.net/dwildt/da-mtrica-a-diverso-como-as-mtricas-no-desenvolvimento-de-softw

are-podem-ajudar-times-a-se-divertirem• http://www.infoq.com/news/2010/03/monetizing-technical-debt• http://www.soberit.hut.fi/mmantyla/badcodesmellstaxonomy.htm• http://pyxis-tech.com/en/expertise/refactoring• http://akitaonrails.com/2008/12/18/tradu-o-d-vida-t-cnica• http://www.infoq.com/presentations/Software-Quality-You-Know-It-when-You-See-It• http://programmingtour.blogspot.com/2011/03/turbulence-measuring-turbulent-nature.html