142
Dívida Técnica Ou “Como evitar que o cobrador bata na sua porta.”

Divida tecnica

Embed Size (px)

DESCRIPTION

Todo projeto de Software tem dívidas técnicas. Aprenda a visualizar e controlar a sua. Slides de apoio a palestra que mostra com exemplos e histórias R$eais como administrar a inevitável dívida técnica.

Citation preview

Page 1: Divida tecnica

DívidaTécnica

Ou “Como evitar que o cobrador bata na sua porta.”

Page 2: Divida tecnica

@freire_da_silva

• LATAM lead @IndustrialLogic

• Agil desde 2001, lean desde a 1ª série

• Founder: AgilCoop, ).( e AgilBits

• Mestrado na USP: “Refleções sobre o Ensino de Metodologias Ágeis na Academia, Indústria e Governo”

• Experiência e successo com muitos amigos: Apple Brasil, Freeddom, Americanas.com, Mandic Internet, Ministério da Cultura, O2 Filmes, Locaweb, e mais...

• Gosto de nadar e construir casas

Page 3: Divida tecnica

✓Metáforas✓ Causas Raíz✓ Vídeos✓ Sintomas✓Quizes Interativos

com Brindes✓ Bala de Prata✓ Leis

✓ Histórias Reais✓ Estratégias✓ Práticas✓ Padrões✓ Anti-padrões✓ Recomendações

de Livros✓ 1 slide com bullets

Oque vai rolar nessa palestra?

Oque vai rolar nessa palestra?

Page 4: Divida tecnica

METÁFORAthe long lost XP practicelost in translation...... débito não é dívida

Page 5: Divida tecnica

Ward Cunningham - invetor do Wiki

Page 6: Divida tecnica

//FIXMESWITCH (key) {case ‘a’: printf(”a”)case ‘b’:…

}

now to paythat tech

debt for v2

Page 7: Divida tecnica
Page 8: Divida tecnica

Velocity

Page 9: Divida tecnica

Velocity

Page 10: Divida tecnica

Q

Page 11: Divida tecnica

dias não investidos

em

qualidade

Velocity

Page 12: Divida tecnica

TCO=CoC(t)+k

1ª entregaDívidaTécnica

1 2 3 4 5 6 7

meses

felicidade do cliente CoC real

CoC ótimo

$ ou

tem

po

Page 13: Divida tecnica

?

Page 14: Divida tecnica

SINTOMAS

Page 15: Divida tecnica

vs

Page 16: Divida tecnica

15 anos

Page 17: Divida tecnica

cliente pediu gerente pediu design code marketing

documentação instalaram isso pagou por isso suporte o que ele queria

Page 18: Divida tecnica
Page 19: Divida tecnica
Page 20: Divida tecnica

SEU PROJETO?

Page 21: Divida tecnica

SEU TIME

?

Page 22: Divida tecnica
Page 23: Divida tecnica

“MEUS TESTES ESTÃO RODANDO.”

TESTANDO!

Page 24: Divida tecnica

//TODO:refatorar aqui

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

//WTF! PERIGO!

Page 25: Divida tecnica

http://abstrusegoose.com/432

Page 26: Divida tecnica
Page 27: Divida tecnica

A B

Page 28: Divida tecnica

C D

Page 29: Divida tecnica

E F

Page 30: Divida tecnica

G H

Page 31: Divida tecnica

I J

Page 32: Divida tecnica

?

Page 33: Divida tecnica

SISTEMAS COMPLEXOS ADAPTATIVOS

Page 34: Divida tecnica
Page 35: Divida tecnica
Page 36: Divida tecnica
Page 37: Divida tecnica

+

Page 38: Divida tecnica

IT’S SCIENCE!

Page 39: Divida tecnica

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

Page 40: Divida tecnica

Big Visible Charts

By Matthew Bisanz

Page 41: Divida tecnica

WHY?

Page 42: Divida tecnica

WHY?

Page 43: Divida tecnica

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

Page 44: Divida tecnica

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

Page 45: Divida tecnica
Page 46: Divida tecnica

história: a dívida

desconhecida do e-mail

Page 47: Divida tecnica

Temos problemas

Page 48: Divida tecnica

Novo fornecedor oferece 1 solução

Page 49: Divida tecnica

Centenas de milhares

de R$

Page 50: Divida tecnica

Novo responsável

Page 51: Divida tecnica

Os problemas

eram razoáveis…

Page 52: Divida tecnica

… e ainda + a solução nova não agüentou.

Page 53: Divida tecnica

Pagamos a dívida do

antigo sistema!

Page 54: Divida tecnica

WHY?

Page 55: Divida tecnica

WHY?

FALHAS NA COMUNICAÇÃO

E NA COLABORAÇÃO

Page 56: Divida tecnica

Em Retrospectiva

Page 57: Divida tecnica

BAD MANAGMENT

Page 58: Divida tecnica

Tudo tranquilo por aqui...

Page 60: Divida tecnica

commits over time

Page 61: Divida tecnica

Lei de Parkinson

Page 62: Divida tecnica

FOLGA

Page 63: Divida tecnica

RE-FACTORSPRINT

Page 64: Divida tecnica

Time completo

Page 65: Divida tecnica

CFD

Page 66: Divida tecnica

história: falência

do SI

Page 67: Divida tecnica

Lei de Murphy

Page 68: Divida tecnica

Sistema Interno

(ou Central)

Page 69: Divida tecnica

1998

Page 70: Divida tecnica

DBACCESS

Page 71: Divida tecnica

Passa por várias outras

mãos…

Page 72: Divida tecnica

… não conheciamos nem as boas

práticas

Page 73: Divida tecnica

lib_fichao2

.asp

Page 74: Divida tecnica

Big Ball of Mud

Page 75: Divida tecnica

Centenas de milhares

de R$

Page 76: Divida tecnica

Falência

Page 77: Divida tecnica

Investimento de

~R$1milhão

Page 78: Divida tecnica

Novo sistema, mas…

Page 79: Divida tecnica
Page 80: Divida tecnica

Lei de Conway

Page 81: Divida tecnica

Anti- corruption

layer

Page 82: Divida tecnica

Virada suave

e reversível

Page 83: Divida tecnica

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

Page 84: Divida tecnica

Story Maps

Page 85: Divida tecnica

Prototype

Page 86: Divida tecnica

Lei de Pareto

20%

80%

FuncionalidadesValor

Page 87: Divida tecnica
Page 88: Divida tecnica

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

Page 89: Divida tecnica

Scenario: Client sees tooltip for plan Given I selected the "lite" plan When I move mouse over "tooltip” Then I should see tooltip content And I move mouse out "tooltip” Then I should not see tooltip content

Page 90: Divida tecnica

Acúmulode wait()

Page 91: Divida tecnica
Page 92: Divida tecnica

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

Page 93: Divida tecnica

Code Smells“If it stinks,Change it.”Kent Beck

Page 94: Divida tecnica

I SEEDEADCODE

Page 95: Divida tecnica

DRY

Page 96: Divida tecnica

ODDBALL

SOLUTION

Page 97: Divida tecnica

PRIMITIVEOBSESSION

Page 98: Divida tecnica

CONDITIONALCOMPLEXITY

Page 99: Divida tecnica

TRACKERThe long lost XP role

Page 100: Divida tecnica

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

Page 101: Divida tecnica

Toxicidade

Page 102: Divida tecnica

http://findbugs.sourceforge.net/

Page 103: Divida tecnica

Turbulência

Page 104: Divida tecnica

Complexity & Coverage

Page 105: Divida tecnica

Pirâmide decomplexidade

Page 106: Divida tecnica

Test Balance

0

37.5

75.0

112.5

150.0

W1 W2 W3 W4 W5 W6 W7

Commits With Tests Commits Without Tests

Page 107: Divida tecnica
Page 108: Divida tecnica
Page 109: Divida tecnica
Page 110: Divida tecnica
Page 111: Divida tecnica
Page 112: Divida tecnica

Matriz de Evolução

Page 113: Divida tecnica
Page 114: Divida tecnica
Page 115: Divida tecnica

Pair Programming

Page 116: Divida tecnica
Page 117: Divida tecnica

história: Escalando WebStore

Page 118: Divida tecnica

TIME2 Market

Page 119: Divida tecnica
Page 120: Divida tecnica

Escalando Rails c/ $ln -s

Page 121: Divida tecnica

80 clientes servidor

Page 122: Divida tecnica

R$150Cliente

Page 123: Divida tecnica

Marketing

â

Page 124: Divida tecnica

Concurrent Set Based Design

Cloud Version

DB Cluster Version

Middleware Version

Team’s Version

Page 125: Divida tecnica

R$8Cliente

Page 126: Divida tecnica

Sempre existem 3 opções

Page 127: Divida tecnica

Gambiarra não é opção!

Page 128: Divida tecnica

Feature Fake

78%

22%

UsedNot Used

16 users from 4 countries are online right now.

Join the chat.

Unlikely Neutral Likely

1 7 6

Laura KleinLean UX Expert

Group Chat Anyone?

Page 129: Divida tecnica

1.Não se endividar

Page 130: Divida tecnica
Page 131: Divida tecnica

2.Dívida sem juros

Page 132: Divida tecnica

RECALL de~$1 bilhão

Page 133: Divida tecnica

3.Dívida com juros

Page 134: Divida tecnica

O futuro hoje

Page 135: Divida tecnica
Page 136: Divida tecnica

https://github.com/relevance/tarantula

Relevance::Tarantula::FormSubmission.attacks << { :name => :sql_injection, :input => "a'; DROP TABLE posts;", }

Page 137: Divida tecnica

http://code.google.com/p/gource/

Page 138: Divida tecnica

Your Score: 62%

Session Recorder

Page 139: Divida tecnica
Page 141: Divida tecnica

PERGUNTAS?

@freire_da_silva

Page 142: Divida tecnica

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-–-part-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-software-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➡http://www.gohorseprocess.com.br/➡http://www.runningthematrix.com/2012/02/

chaos-monkey-vs-spof-monster.html➡http://thinkrelevance.com/blog/2008/02/26/

tarantula-vs-your-rails-app➡http://www.genetic-programming.org/hc2009/1-

Forrest/Forrest-Presentation.pdf➡http://www.industriallogic.com/blog/fast-frugal-

learning-with-a-feature-fake/➡http://www.industriallogic.com/blog/smells-to-

refactorings-cheatsheet/➡http://vimeo.com/6434925➡http://analyzo.org