SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Praticando o desapego: quando
    ignorar a dívida técnica
Objetivo


  Gerenciar o catálogo de
produtos e categorias de um
   dos maiores sites de e-
   commerce do mundo.
Equipe


●   4 times
    ○ 35 desenvolvedores



    ○   8 engenheiros

    ○   6 gerêntes
Métricas do projeto

linhas de código

558982
Métricas do projeto

                   classes java

                   3096

linhas de código
  558982
Métricas do projeto

                   junit tests

                   2777

linhas de código     classes java
  558982               3096
Métricas do projeto

              tempo de build

                    7h

linhas de código    classes java     classes java
  558982              3096             3096
Pontos de integração do projeto
Pontos de integração do projeto


104 pontos de integração!
Primeira estória

Importar produtos de um feed
Primeira estória

Importar produtos de um feed
      IHateYouForverImpl

● 2272 linhas
● 32 dependências
● getItemStatus (3 setters)
Primeira estória

Importar produtos de um feed
   IHateYouServiceImplTest

● 78 linhas de test setup
Primeira estória

Importar produtos de um feed
      loadAllProducts.xml

● 26 páginas impressas
Primeira estória

Importar produtos de um feed
         ProductDTO.java

● 86 atributos
● + getters / + setters
● equals() => 400 linhas
Vamos jogar tudo fora
  e começa do zero!
Tá bom, então vamos
   refatorar tudo!
Pague o aluguel!
Arrumando a casa


●   refatoração intensiva

●   pair programming

●   reclamação
6 semanas mais tarde
Ferrou!


●   um refectoring inocênte
    (especulativo)

●   bugs em produção (custou
    dinheiro)
:(

●   desconfiança entre o time
●   quase cancelamento do
    projeto
●   iteration manager se demitiu
●   tech lead se demitiu
Nova abordagem!
Desapegue-se!
right software > software right

                   +/-

    software certo > fazer software certo
Código legado é código que
         funciona!
Jogue os "gatos" pra debaixo do tapete

●   hierarquias e classes paralelas
●   empacote em façades
:)


●   mvp em nível de
    funcionalidade

●   divide and conquer
Então, quando vale a pena refatorar?


●   não dá pra medir com
    precisão
:)


●   conheça suas ferramentas

●   controle de versão
Oo"


●   fazer tdd?...
Oo"


●   fazer tdd?... NÃO!
Conclusão
será que esse sucesso é fruto
      do esforço inicial?
sim




mas não

Mais conteúdo relacionado

Mais procurados

Mais procurados (6)

Metodologias Ágeis
Metodologias ÁgeisMetodologias Ágeis
Metodologias Ágeis
 
MTC2015-Automatizar_testes_efetivos
MTC2015-Automatizar_testes_efetivosMTC2015-Automatizar_testes_efetivos
MTC2015-Automatizar_testes_efetivos
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 

Destaque

Aprendizaje colaborativo
Aprendizaje colaborativoAprendizaje colaborativo
Aprendizaje colaborativoBelen Mendoza
 
calentamiento global
calentamiento globalcalentamiento global
calentamiento globalppuuppiizz
 
Fuvest1998 2fase (1) parte_001
Fuvest1998 2fase (1) parte_001Fuvest1998 2fase (1) parte_001
Fuvest1998 2fase (1) parte_001Thommas Kevin
 
Rotación del auditor y la importancia de llevar una auditoria
Rotación del auditor y la importancia de llevar una auditoriaRotación del auditor y la importancia de llevar una auditoria
Rotación del auditor y la importancia de llevar una auditoriamontsegaucin1
 
Unicamp2007 2fase 3dia_parte_001
Unicamp2007 2fase 3dia_parte_001Unicamp2007 2fase 3dia_parte_001
Unicamp2007 2fase 3dia_parte_001Thommas Kevin
 
Identidades trigonométricas
Identidades trigonométricasIdentidades trigonométricas
Identidades trigonométricasSamuel Vargas
 
El paro respiratorio proyecto de física
El paro respiratorio proyecto de físicaEl paro respiratorio proyecto de física
El paro respiratorio proyecto de físicalindaytorres
 
Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...
Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...
Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...Planetario de Pamplona
 
Televisão Nova tem 13 Letras
Televisão Nova tem 13 LetrasTelevisão Nova tem 13 Letras
Televisão Nova tem 13 LetrasDalton Campos
 
Potenciación de números enteros
Potenciación de números enterosPotenciación de números enteros
Potenciación de números enterosGabriel112127
 
Ppoint britez nancy
Ppoint britez nancyPpoint britez nancy
Ppoint britez nancyNancy Britez
 
Iván patricio hurtado rodríguez
Iván patricio hurtado rodríguezIván patricio hurtado rodríguez
Iván patricio hurtado rodríguezmwfpatrick
 
Cartilha da mulher_presa_1_portugues_4
Cartilha da mulher_presa_1_portugues_4Cartilha da mulher_presa_1_portugues_4
Cartilha da mulher_presa_1_portugues_4ANTONIO INACIO FERRAZ
 

Destaque (20)

Aprendizaje colaborativo
Aprendizaje colaborativoAprendizaje colaborativo
Aprendizaje colaborativo
 
calentamiento global
calentamiento globalcalentamiento global
calentamiento global
 
Carotenos
CarotenosCarotenos
Carotenos
 
Fuvest1998 2fase (1) parte_001
Fuvest1998 2fase (1) parte_001Fuvest1998 2fase (1) parte_001
Fuvest1998 2fase (1) parte_001
 
Herramienta gratuita[1]
Herramienta gratuita[1]Herramienta gratuita[1]
Herramienta gratuita[1]
 
Herramienta gratuita[1]
Herramienta gratuita[1]Herramienta gratuita[1]
Herramienta gratuita[1]
 
Rotación del auditor y la importancia de llevar una auditoria
Rotación del auditor y la importancia de llevar una auditoriaRotación del auditor y la importancia de llevar una auditoria
Rotación del auditor y la importancia de llevar una auditoria
 
Unicamp2007 2fase 3dia_parte_001
Unicamp2007 2fase 3dia_parte_001Unicamp2007 2fase 3dia_parte_001
Unicamp2007 2fase 3dia_parte_001
 
Identidades trigonométricas
Identidades trigonométricasIdentidades trigonométricas
Identidades trigonométricas
 
El paro respiratorio proyecto de física
El paro respiratorio proyecto de físicaEl paro respiratorio proyecto de física
El paro respiratorio proyecto de física
 
Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...
Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...
Supernova (Derrigorrezko Bigarren hezkuntza / Batxilergoa / Izar-eskola / Pam...
 
Televisão Nova tem 13 Letras
Televisão Nova tem 13 LetrasTelevisão Nova tem 13 Letras
Televisão Nova tem 13 Letras
 
Potenciación de números enteros
Potenciación de números enterosPotenciación de números enteros
Potenciación de números enteros
 
Ppoint britez nancy
Ppoint britez nancyPpoint britez nancy
Ppoint britez nancy
 
Iván patricio hurtado rodríguez
Iván patricio hurtado rodríguezIván patricio hurtado rodríguez
Iván patricio hurtado rodríguez
 
Slideshare
SlideshareSlideshare
Slideshare
 
html
htmlhtml
html
 
Novo codigo civil
Novo codigo civilNovo codigo civil
Novo codigo civil
 
Y que
Y queY que
Y que
 
Cartilha da mulher_presa_1_portugues_4
Cartilha da mulher_presa_1_portugues_4Cartilha da mulher_presa_1_portugues_4
Cartilha da mulher_presa_1_portugues_4
 

Semelhante a Desapegue-se da dívida técnica e foque no MVP

Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaIvayr Farah Netto
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDDDextra
 
Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento carlos Alberto
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseOziel Moreira Neto
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
Pipeline de deploy continuo (DevOps) de chatbot
Pipeline de deploy continuo (DevOps) de chatbotPipeline de deploy continuo (DevOps) de chatbot
Pipeline de deploy continuo (DevOps) de chatbotLappis UnB
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Cafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and DesignCafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and DesignThoughtworks
 
ESP204 - Cap. 2 - Processos.pdf
ESP204 - Cap. 2 - Processos.pdfESP204 - Cap. 2 - Processos.pdf
ESP204 - Cap. 2 - Processos.pdfAndreLisboa13
 

Semelhante a Desapegue-se da dívida técnica e foque no MVP (20)

Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Times plataforma-tdc2020
Times plataforma-tdc2020Times plataforma-tdc2020
Times plataforma-tdc2020
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 
Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Pipeline de deploy continuo (DevOps) de chatbot
Pipeline de deploy continuo (DevOps) de chatbotPipeline de deploy continuo (DevOps) de chatbot
Pipeline de deploy continuo (DevOps) de chatbot
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Cafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and DesignCafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and Design
 
ESP204 - Cap. 2 - Processos.pdf
ESP204 - Cap. 2 - Processos.pdfESP204 - Cap. 2 - Processos.pdf
ESP204 - Cap. 2 - Processos.pdf
 

Desapegue-se da dívida técnica e foque no MVP