• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dívida tecnica: precisando de crédito? Quão fundo entrar e como evitar que o cobrador bata na sua porta..
 

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

on

  • 4,010 views

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 ...

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.

Statistics

Views

Total Views
4,010
Views on SlideShare
3,984
Embed Views
26

Actions

Likes
6
Downloads
51
Comments
0

4 Embeds 26

http://paper.li 13
https://twitter.com 11
http://twitter.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Quemaqui tem dívidatécnica?
  • quemaquiperdeu a capacidade de atenderseusclientes com agilidadeaolongo do tempo?
  • Quemaqui tem tempo de entrega (lead time) longo?
  • Quemaquisempreatrasasuasentregas (ouestimativas)?
  • Quemaqui tem umataxa de defeitosalta?
  • Quemaquisentequeseu softwareestáengessado, eécadavezmaisdifícilfazermudanças?
  • Quemaquiestánumaequipefrustradaou com desempenhofraco?
  • Quemaqui tem baixacobertura de testes?
  • E a suite de testes demoraprarodar?
  • Quemjáviucomentáriosassim no código?
  • Quem tem dificuldades de comunicação?
  • Antes de partir pros tipos de dividatecnica, suascausaseestrategiaspralidar com elas, + umaexperiênciapraintroduziroutrametáfora
  • tamanho do código: repositóriomédiowebappcrudzinha tem 200 MB1 pontobidimensional, do tamanhosistema solar, precisão de 1 metro -> 2 doubles 64bits! -> 128 bits!!!
  • Propriedades1- complexo:impossíveldescrever com umaúnicalinguagemouperspectiva2- intratabilidade:nãoexistecaminhomaisrápido pro futuroalém de iratéeleComo lidar?investiga, senteereagepráticasemergentes“previsão” do tempo éciência
  • EquipeCronogramatransparencia
  • Comparisons industry standards different revisions: trends different parts: outliers Aesthetics symmetry balance/harmony

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

  • DívidaTécnica
    by @freire_da_silva
    alexandre.freire@locaweb.com.br
  • O quevairolarnessapalestra?
    Leis
    Metáforas
    Balas de prata
    Histórias
    Sintomas
    Causas
    Estratégias
    Práticas
    Padrões
    Anti-padrões
    Recomendações de livros
  • METÁFORA
    the long lost XP practice
  • CoC
    e
    TCO
    estão
    ligados
  • I O U $$$

    SWITCH (key) {
    case ‘a’: printf(”a”)
    case ‘b’:…
    }
  • METÁFORA
    Dívidairresponsável
    - propositalounão
    Dívidaconsciente
    - empréstimo do carro
    - dívida de cartão de créditooucheque
    especial
    - empréstimo da casa
  • METÁFORA
    lost in translation…
    débitonãoédívida!
  • vs
  • “MEUS TESTES ESTÃO RODANDO.”
    TESTANDO!
  • //TODO: refatoraraqui
    //FIXME: issonãodeveria
    //estarduplicado
    //WTF! PERIGO!
  • A incrívelcapacidade de análise dos sereshumanos
  • ?
  • SISTEMAS COMPLEXOS ADAPTATIVOS
  • +
  • O ministério da agilidadeadverte: cuidado com seuuso de métricas
  • Big Visible Charts
    By Matthew Bisanz
  • Nãovamosnospreocupar com uma das causas de dívidatécnica:
    Falta de um processoclaro de desenvolvimento
  • kanban
    análise
    desenvolvimento
    aceitação
    produção
  • análise
    desenvolvimento
    aceitação
    produção
  • história: a dívidadesconhecida do e-mail
  • Nãosabiamosqual era a dívida
  • Temosproblemas
    Acumulo de dívidaspequenas
  • Um novo fornecedorofereceumasolução
  • Centenas de milhares de R$
  • Equipe junior parao novo webmail
  • Continuamos com problemas
  • Novo responsável
  • No final osproblemasquetinhamoseramrazoáveis…
  • … aindaporcima a nova soluçãonãoaguentou
  • Pagamos a dívida do antigosistema
  • Descontinuamos a nova solução
  • CAUSAS
  • FALHASNACOMUNICAÇÃO
  • FALHASNACOLABORAÇÃO
  • EmRetrospectiva
  • BAD MANAGMENT
  • CALCULE e MOSTRE sua DÍVIDA
  • http://www.sonarsource.org/
  • https://wiki.jenkins-ci.org/display/JENKINS/Task+Scanner+Plugin
  • DOH!
  • Lei de Parkinson
    O trabalhoexpandeparaocuparo tempo reservadoparasuaexecução
  • FOLGA + refactoring sprint
  • Time completo
  • Lei de Murphy
  • história: falência do SI
  • SistemaInterno (ou central)
  • Nasceem 1998 como um banco access pelasmãos do nossofundador
  • Passaporváriasoutrasmãos…
  • … nãoconheciamos as boas práticas
  • lib_fichao2.asp
  • Big Ball of Mud
  • Renovamosdomíniossemosclientespedirem
  • Centenas de milhares de R$
  • Nãoconseguimosentregaro chargeback a tempo
  • Centenas de milhares de R$
  • Falência
  • Tem quepagar.InvestimentoquaseR$1milhão
  • Novo sistema, mas…
  • Atentos a dívida
    Lei de Conway
    Camadas anti-corrupção
    Desacoplamento incremental
    Virada suave ereversível
  • + refactoring to patterns
  • análise
    desenvolvimento
    aceitação
    produção
  • Story Maps
  • CFD
  • Use Case
  • Validated Learning
  • análise
    desenvolvimento
    aceitação
    produção
  • Seus testes podem ser dívida
  • Acúmulo de wait()
  • Scenario: Tooltip view Given I selected the "lite" plan When I move mouse over "tooltip” Then I should see tooltip content And I move mouse out "tooltip” And I should not see tooltip content
  • análise
    desenvolvimento
    aceitação
    produção
  • Muitasmétricasnesseespaço
    Linhas de código
    Tamanho do método
    Tamanho da classe
    Complexidadeciclomática
    Métodosporclasse
    Acoplamento entre objetos
    Duplicação
    Atividade do repositório
    Cobertura dos testes
    Testabilidade
    Razão de linhas de testeporlinhas de código
  • TRACKER
    The long lost XP role
  • Code Smells – The bloaters
    Long Method
    Large Class
    Primitive Obsession
    Long Parameter List
    DataClumps
  • Code Smells – The OO abusers
    Switch Statements
    Temporary Field
    Refused Bequest
    Alternative Classes with Different Interfaces
  • Code Smells – The change preventers
    Divergent Change
    Shotgun Surgery
    Parallel Inheritance Hierarchies
  • Code Smells – The Dispensables
    Lazy class
    Data class
    Duplicate Code
    Dead Code
    Speculative Generality
  • Code Smells – The Couplers
    Feature Envy
    Inappropriate Intimacy
    Message Chains
    Middle Man
  • http://metric-fu.rubyforge.org/
  • http://metric-fu.rubyforge.org/
  • http://metric-fu.rubyforge.org/
  • Toxicidade - no excel ;-)
  • http://findbugs.sourceforge.net/
  • Turbulência
  • Tree map de classes
  • Pirâmede de tamanhoecomplexidade
  • Testes/Código
  • Complexidade do design
  • Diagrama de sequência
  • Code City
  • Matriz de dependências
  • Últimahistória: WebStore
  • Time 2 Market
  • Use FLOSS paraganharvantagem
  • Entrandonadívida: escalando com links simbólicos
  • 80 clientes / servidor
  • 12 servidores
  • Custocliente: R$150
  • O Marketing vaipra TV
  • Just-in-time parapagar a dívida
  • Midleware + Cloud
  • Custocliente: R$ 8 (edescendo)
  • Sempreexistem 3 opções
  • Gambiarranãoéopção
  • Não se endividar
  • Divida com juros
  • Dividasemjuros
  • O futurohoje
    Fuzzy tests
    Injeçãoproposital de defeitos
    Crawlers mal intencionados
    Self-healing systems
    Algoritmosgenéticosqueconsertam bugs
  • 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