SlideShare ist ein Scribd-Unternehmen logo
1 von 85
Downloaden Sie, um offline zu lesen
praticando o desapego
         quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
sumário

quem somos nós?
a história
lições
resultados
quem somos nós?
 Netto
  @nettofarah
  github.com/nettofarah   ThoughtWorks BR/SF


  Vini
  @vvgomes
  github.com/vvgomes      ThoughtWorks BR/NYC
Praticando o Desapego: quando ignorar a dívida técnica
nossa missão
objetivo

gerenciar o catálogo de produtos
 e categorias de um dos maiores
        ecoms do mundo
find . -type f ( -name '*.css' -o -name '*.js' -o -
name '*.java' -o -name '*.jsp' -o -name '*.html' )
-print0 | xargs -0 cat | wc -l
find . -type f ( -name '*.css' -o -name '*.js' -o -
name '*.java' -o -name '*.jsp' -o -name '*.html' )
-print0 | xargs -0 cat | wc -l




           558982
                 linhas de código
grep -R ‘<bean’ . | wc -l
grep -R ‘<bean’ . | wc -l




     684
      spring beans
grep -R ‘class’ . | wc -l
grep -R ‘class’ . | wc -l




  3096
      classes java
grep -R ‘@Test’ . | wc -l
grep -R ‘@Test’ . | wc -l




   1774
   testes com junit4
grep -R ‘public void test’ . | wc -l
grep -R ‘public void test’ . | wc -l




        1603
        testes com junit3
tecnologias
pontos de integração

40 queues     157 fields     20 schemas
               8 cores



                               ~ 30
                            offline jobs
            5 webservices
104 pontos de
 integração!
testes
testes
• 2777 junit tests
testes
• 2777 junit tests
• 360 functional tests
testes
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (sem bundler!)
testes
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (sem bundler!)
• windows xp
testes
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (sem bundler!)
• windows xp
• monkeypatches para IE/windows
testes
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (sem bundler!)
• windows xp
• monkeypatches para IE/windows
• build de 7 horas
times
4 times (aprox. 35 devs)



8 engineers
6 managers
primeira estória


importar produtos de um feed
IHateYouForeverImpl

• 2272 linhas
• 32 dependências
• getItemStatus (3 setters)
IHateYouServiceImplTest


  78 linhas de test setup
loadAllProducts.xml


  26 folhas impressas
ProductDTO.java

• 86 atributos
• + getters / + setters
• equals() => 400 linhas
Vamos jogar tudo fora
 e começar do zero!
Praticando o Desapego: quando ignorar a dívida técnica
Tá bom!
Vamos refatorar tudo!
pague o aluguel!
vamos arrumar a casa

• refatoração intensiva
• pair programming
• reclamação
6 semanas mais tarde
mais de perto
ferrou!


• um refactoring inocente (especulativo)
• bugs em produção (custou dinheiro)
todos ‘chora’
todos ‘chora’

• desconfiança do time onshore
todos ‘chora’

• desconfiança do time onshore
• quase cancelamento do projeto
todos ‘chora’

• desconfiança do time onshore
• quase cancelamento do projeto
• iteration manager se demitiu
todos ‘chora’

• desconfiança do time onshore
• quase cancelamento do projeto
• iteration manager se demitiu
• tech lead se demitiu (foi pra europa)
nova abordagem
faça as pazes consigo
       mesmo

         http://fc06.deviantart.net/fs71/f/2011/027/a/3/rainbow_farting_unicorn_by_hi_my_name_is_light-d3875xd.jpg
desapegue-se




          http://pottermaniaca1.tumblr.com/post/3687853880
purismo tem limite
right software > software right
                 +/-

software certo > fazer software certo
vale a pena refatorar?

• bloqueia outra estória?
• compromete a entrega?
• gera danos ao negócio?
não sofra por
         antecipação
• “isso aqui vai impactar na estória 125 da
  próxima iteração”
• programe baseado em fatos, não em
  especulação
• software é incerto por natureza
código legado é código que
         funciona

                      http://favim.com/image/467371/
protótipos

mvp em nível de
 funcionalidade
licença poética




não fui eu. foi meu eu-lírico.
                       http://weheartit.com/entry/36480124/via/ilaria_tatti
jogue a sujeira pra baixo do tapete

hierarquias e classes paralelas

empacote em façades
coragem x imprudência




           http://tobemtogordo.files.wordpress.com/2011/06/coragem-esse-c3a9-o-significado.jpg
reduza o ciclo de
    feedback

 tem gente usando?
refatoração é viciante
conheça suas
 ferramentas
debuggers
IDEs
refactorings
refactorings

• extract [class, method, variable]
• rename [class, method, variable]
• move [class, method, variable]
quem é mesmo que chama aquele método?




             vai encarar?
controle de versão


• git / svn [blame, diff, log]
• grep / awk / find / cut / xargs / sort
testes e tdd
design evolutivo?
black box vs white box
   redução dos testes funcionais
flappy tests
flappy tests

• refatorar
flappy tests

• refatorar
• reduzir o grau de integração
flappy tests

• refatorar
• reduzir o grau de integração
• somente ui? teste unitário em javascript
flappy tests

• refatorar
• reduzir o grau de integração
• somente ui? teste unitário em javascript
• ui burra? teste em nível de integração
flappy tests

• refatorar
• reduzir o grau de integração
• somente ui? teste unitário em javascript
• ui burra? teste em nível de integração
• nenhum dos anteriores? VALA!
divide and conquer
divide and conquer


funcionalidades grandes como pequenos serviços
fábricas de dívida
      técnica
como vender a
       refatoração?

• não dá pra medir com precisão
• reclamar não ajuda
conclusões
produção 2 meses antes do
        planejado
será que este sucesso
  é consequencia do
    esforço inicial?
sim




mas não
perguntas

Weitere ähnliche Inhalte

Was ist angesagt?

Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustStefan Teixeira
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemStefan Teixeira
 
Qa ops mtc 2020 - mayara fernandes
Qa ops   mtc 2020 - mayara fernandesQa ops   mtc 2020 - mayara fernandes
Qa ops mtc 2020 - mayara fernandesMayara Fernandes
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasLucas Caton
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyFausto Siqueira
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
JSExperience 2017 - Teste seu front end com mocha e chai
JSExperience 2017 - Teste seu front end com mocha e chaiJSExperience 2017 - Teste seu front end com mocha e chai
JSExperience 2017 - Teste seu front end com mocha e chaiVinicius Cavalcante Donato
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Rafael Ponte
 
Mtc docker - utilizando no seu dia a dia
Mtc   docker - utilizando no seu dia a diaMtc   docker - utilizando no seu dia a dia
Mtc docker - utilizando no seu dia a diaRafael Chiavegatto
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverStefan Teixeira
 
Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...Leonardo Ferreira Leite
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terÁtilla Silva Barros
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoElias Nogueira
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservicesClaudenir Freitas
 
JS Experience 2017 - Mocha + Chai para testes de frontend
JS Experience 2017 - Mocha + Chai para testes de frontendJS Experience 2017 - Mocha + Chai para testes de frontend
JS Experience 2017 - Mocha + Chai para testes de frontendiMasters
 

Was ist angesagt? (20)

Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com Locust
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
 
Qa ops mtc 2020 - mayara fernandes
Qa ops   mtc 2020 - mayara fernandesQa ops   mtc 2020 - mayara fernandes
Qa ops mtc 2020 - mayara fernandes
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
JSExperience 2017 - Teste seu front end com mocha e chai
JSExperience 2017 - Teste seu front end com mocha e chaiJSExperience 2017 - Teste seu front end com mocha e chai
JSExperience 2017 - Teste seu front end com mocha e chai
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
 
Mtc docker - utilizando no seu dia a dia
Mtc   docker - utilizando no seu dia a diaMtc   docker - utilizando no seu dia a dia
Mtc docker - utilizando no seu dia a dia
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria ter
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Times plataforma-tdc2020
Times plataforma-tdc2020Times plataforma-tdc2020
Times plataforma-tdc2020
 
JS Experience 2017 - Mocha + Chai para testes de frontend
JS Experience 2017 - Mocha + Chai para testes de frontendJS Experience 2017 - Mocha + Chai para testes de frontend
JS Experience 2017 - Mocha + Chai para testes de frontend
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 

Andere mochten auch

O bem do desapêgo - Letícia Thompson
O bem do desapêgo - Letícia ThompsonO bem do desapêgo - Letícia Thompson
O bem do desapêgo - Letícia ThompsonMima Badan
 
2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa
2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa
2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De RosaRosana De Rosa
 
Vença o Desânimo
Vença o DesânimoVença o Desânimo
Vença o DesânimoIBMemorialJC
 
Desapego - Liberdade para Evoluir
Desapego - Liberdade para EvoluirDesapego - Liberdade para Evoluir
Desapego - Liberdade para EvoluirRicardo Azevedo
 
O Jovem Rico ( Leonardo Pereira).
O Jovem Rico ( Leonardo Pereira). O Jovem Rico ( Leonardo Pereira).
O Jovem Rico ( Leonardo Pereira). Leonardo Pereira
 
Combatendo o Desanimo
Combatendo  o DesanimoCombatendo  o Desanimo
Combatendo o DesanimoL O Pinheiro
 
Apego e desapego
Apego e desapegoApego e desapego
Apego e desapegopaikachambi
 
A importância da palestra espirita
A importância da palestra espiritaA importância da palestra espirita
A importância da palestra espiritacarlos freire
 

Andere mochten auch (14)

O bem do desapêgo - Letícia Thompson
O bem do desapêgo - Letícia ThompsonO bem do desapêgo - Letícia Thompson
O bem do desapêgo - Letícia Thompson
 
Desapego
DesapegoDesapego
Desapego
 
Desapego
DesapegoDesapego
Desapego
 
Desapego
DesapegoDesapego
Desapego
 
Obesidade da alma !
Obesidade da alma !Obesidade da alma !
Obesidade da alma !
 
2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa
2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa
2012 2-9-Palestra-Como Lidar com as Necessidades Materiais-Rosana De Rosa
 
Vença o Desânimo
Vença o DesânimoVença o Desânimo
Vença o Desânimo
 
Desapego - Liberdade para Evoluir
Desapego - Liberdade para EvoluirDesapego - Liberdade para Evoluir
Desapego - Liberdade para Evoluir
 
O Jovem Rico ( Leonardo Pereira).
O Jovem Rico ( Leonardo Pereira). O Jovem Rico ( Leonardo Pereira).
O Jovem Rico ( Leonardo Pereira).
 
Combatendo o Desanimo
Combatendo  o DesanimoCombatendo  o Desanimo
Combatendo o Desanimo
 
Apego e desapego
Apego e desapegoApego e desapego
Apego e desapego
 
Cansaço e Desânimo
Cansaço e DesânimoCansaço e Desânimo
Cansaço e Desânimo
 
A importância da palestra espirita
A importância da palestra espiritaA importância da palestra espirita
A importância da palestra espirita
 
Bons Espíritas
Bons EspíritasBons Espíritas
Bons Espíritas
 

Ähnlich wie Praticando o Desapego: quando ignorar a dívida técnica

Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptRodrigo Ferreira
 
TDD em JavaScript, rola?
TDD em JavaScript, rola?TDD em JavaScript, rola?
TDD em JavaScript, rola?Renan Siravegna
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
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
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDDDextra
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
Mineração de Repositórios de Defeitos
Mineração de Repositórios de DefeitosMineração de Repositórios de Defeitos
Mineração de Repositórios de DefeitosRodrigo Rocha
 
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
 
Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptZigotto Tecnologia
 
Persistência Poliglota na Prática
Persistência Poliglota na PráticaPersistência Poliglota na Prática
Persistência Poliglota na PráticaIvayr Farah Netto
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeStefan Teixeira
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
testando interfaces web
testando interfaces webtestando interfaces web
testando interfaces webAndrews Medina
 
TDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalesTDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalestdc-globalcode
 
Case Walmart.com: a prática da entrega de software com rapidez e qualidade
Case Walmart.com: a prática da entrega de software com rapidez e qualidadeCase Walmart.com: a prática da entrega de software com rapidez e qualidade
Case Walmart.com: a prática da entrega de software com rapidez e qualidadeRodrigo Russo
 

Ähnlich wie Praticando o Desapego: quando ignorar a dívida técnica (20)

Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascript
 
TDD em JavaScript, rola?
TDD em JavaScript, rola?TDD em JavaScript, rola?
TDD em JavaScript, rola?
 
Javascript Cross-browser
Javascript Cross-browserJavascript Cross-browser
Javascript Cross-browser
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
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
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Mineração de Repositórios de Defeitos
Mineração de Repositórios de DefeitosMineração de Repositórios de Defeitos
Mineração de Repositórios de Defeitos
 
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
 
Testing sucks
Testing sucksTesting sucks
Testing sucks
 
Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScript
 
Persistência Poliglota na Prática
Persistência Poliglota na PráticaPersistência Poliglota na Prática
Persistência Poliglota na Prática
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
testando interfaces web
testando interfaces webtestando interfaces web
testando interfaces web
 
TDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalesTDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scales
 
Case Walmart.com: a prática da entrega de software com rapidez e qualidade
Case Walmart.com: a prática da entrega de software com rapidez e qualidadeCase Walmart.com: a prática da entrega de software com rapidez e qualidade
Case Walmart.com: a prática da entrega de software com rapidez e qualidade
 

Mehr von Ivayr Farah Netto

Mehr von Ivayr Farah Netto (6)

Building a Single Page App: One Page at a Time
Building a Single Page App: One Page at a TimeBuilding a Single Page App: One Page at a Time
Building a Single Page App: One Page at a Time
 
a 8tracks ama o Redis
a 8tracks ama o Redisa 8tracks ama o Redis
a 8tracks ama o Redis
 
Redis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.comRedis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.com
 
Rails girls
Rails girlsRails girls
Rails girls
 
Away day
Away dayAway day
Away day
 
Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria Saber
 

Praticando o Desapego: quando ignorar a dívida técnica

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. - 113 arquivos (aprox. 5 consultas cada -&gt; 565)\n+ Falta de cobertura de testes;\n+ Excesso de complexidade acidental;\n+ Duplica&amp;#xE7;&amp;#xE3;o de c&amp;#xF3;digo;\n+ Excesso de responsabilidade em um objeto\n+ - cita o isStringEmpty(&quot;&quot;) == false\n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. - find . -name &apos;*.java&apos; | grep -v &apos;generated&apos; | xargs wc -l | sort\n
  34. - find . -name &apos;*Test.java&apos; | grep -v &apos;generated&apos; | xargs wc -l | sort\n
  35. \n
  36. \n
  37. \n
  38. - o sistema &amp;#xE9; gigante.\n- ultra complexo\n- reescrever significa fazer engenharia reversa\n- caso do netscape\n
  39. \n
  40. - seguir a ideia do seu barriga\n - cobrar a d&amp;#xED;vida (no matter what)\n - atitude extrema\n
  41. - refactoring como se n&amp;#xE3;o houvesse amanh&amp;#xE3;\n- pareamento o tempo todo, v&amp;#xE1;rias ideias e brainstorms sobre como melhorar o design\n- reclama&amp;#xE7;&amp;#xE3;o sobre o c&amp;#xF3;digo o tempo todo\n
  42. \n
  43. - ainda estou dando uma pr&amp;#xE9;via ali do futuro\n
  44. - $5000,00 / min na black friday\n- um dia inteiro sem vender produtos no canad&amp;#xE1;\n- a tradu&amp;#xE7;&amp;#xE3;o pra franc&amp;#xEA;s n&amp;#xE3;o ocorreu\n
  45. - o tech lead ja trabalhava na empresa ha 8 anos\n - a iteration manager pirou, foi pra uma startup porque a press&amp;#xE3;o era menor :S\n
  46. - o tech lead ja trabalhava na empresa ha 8 anos\n - a iteration manager pirou, foi pra uma startup porque a press&amp;#xE3;o era menor :S\n
  47. - o tech lead ja trabalhava na empresa ha 8 anos\n - a iteration manager pirou, foi pra uma startup porque a press&amp;#xE3;o era menor :S\n
  48. - o tech lead ja trabalhava na empresa ha 8 anos\n - a iteration manager pirou, foi pra uma startup porque a press&amp;#xE3;o era menor :S\n
  49. - atitude do seu madruga\n- alguma frase do seu madruga\n- passou 14 meses sem pagar o aluguel\n- se d&amp;#xE1; mal as vezes, mas &amp;#xE9; feliz no geral\n- devemos perdoar as afrontas, devemos perdoar as ofensas, devemos perdoar as afrontas.. devemos perdoar os alugu&amp;#xE9;is atrasados\n
  50. - chega de choradeira\n- chega de reclama&amp;#xE7;&amp;#xE3;o\n- &amp;#xE9; a hora de aceitar a situa&amp;#xE7;&amp;#xE3;o\n
  51. - c&amp;#xF3;digo n&amp;#xE3;o &amp;#xE9; seu\n- se quiser escrever c&amp;#xF3;digo bonito, fa&amp;#xE7;a open source\n- foi a parte mais dif&amp;#xED;cil pra mim. (&amp;#xE9; triste ver seus colegas fazendo coisas legais, e voc&amp;#xEA; ali fazendo aquilo)\n
  52. - nem sempre o c&amp;#xF3;digo perfeito &amp;#xE9; o melhor c&amp;#xF3;digo.\n- e da&amp;#xED; se existe uma diferen&amp;#xE7;a sem&amp;#xE2;ntica entre PUT e POST.\n- a briga sobre uso de forms x ajax pra fazer um DELETE\n- e da&amp;#xED; se a classe &amp;#xE9; gigante\n
  53. - n&amp;#xE3;o adianta escrever o c&amp;#xF3;digo perfeito que ningu&amp;#xE9;m usa\n- feedback dos usu&amp;#xE1;rios &amp;#xE9; importante\n- muito capricho as vezes &amp;#xE9; perda de tempo\n- good enough!\n
  54. - refatorar gerava satisfa&amp;#xE7;&amp;#xE3;o para o time, mas n&amp;#xE3;o para o neg&amp;#xF3;cio\n - esfor&amp;#xE7;o x dano\n
  55. - a gente refatorava tudo, sem crit&amp;#xE9;rio\n- aprendemos a selecionar os maiores pain points\n- so refatorar o que for necess&amp;#xE1;rio\n
  56. - a gente olhava os commit logs pra comparar\n
  57. - avlaliar tech debt conscientemente\n- catalog update remote... refatorar nao traria business value\nadicional, somente satisfa&amp;#xE7;&amp;#xE3;o do time de dev.\n
  58. - n&amp;#xE3;o vale a pena sofrer antes da hora.\n- n&amp;#xE3;o adianta querer otimizar pra algo que vc n&amp;#xE3;o tem certeza se vai acontecer\n
  59. - o stalone &amp;#xE9; o &amp;#xFA;nico cara que com 60 anos derruba um helic&amp;#xF3;ptero usando uma moto\n- assistam e vejam a piada do chuck norris\n- esque&amp;#xE7;am os caras da esquerda.. os legados s&amp;#xE3;o os velhos aqui do lado direito\n
  60. - quando for escrever funcionalidades novas, tente fazer em forma de prot&amp;#xF3;tipo.\n- trabalhar no c&amp;#xF3;digo legado &amp;#xE9; mais dif&amp;#xED;cil. Ent&amp;#xE3;o tente validar a feature longe do tech debt. Depois tente enfiar o c&amp;#xF3;digo l&amp;#xE1; no meio.\n
  61. \n
  62. - lembra da licen&amp;#xE7;a po&amp;#xE9;tica da literatura? (tire um momento em que tudo &amp;#xE9; liberado).\n- n&amp;#xE3;o &amp;#xE9; voc&amp;#xEA; que est&amp;#xE1; escrevendo o c&amp;#xF3;digo de cowboy..\n- n&amp;#xE3;o fui eu. foi meu eu-l&amp;#xED;rico\n- n&amp;#xE3;o tem problema tomar um atalho\n- cowboy consciente\n
  63. - n&amp;#xE3;o &amp;#xE9; pq todo o c&amp;#xF3;digo relacionado a produtos est&amp;#xE1; numa classe que voc&amp;#xEA; precisa continuar aumento o que acontece por l&amp;#xE1;.\n- tente criar uma classe paralela e resolver o problema por l&amp;#xE1;.\n- empacota tudo numa fa&amp;#xE7;ade e toca o pau\n
  64. - n&amp;#xE3;o precisa ter medo, v&amp;#xE1; navegando no c&amp;#xF3;digo.\n- nem sempre voc&amp;#xEA; precisa entender tudo por ali.\n- utilize suas ferramentas pra ajudar (intellij e eclipse t&amp;#xEA;m comandos pra avan&amp;#xE7;ar e voltar no c&amp;#xF3;digo)\n\n- ao mesmo tempo n&amp;#xE3;o seja imprudente.\n- evite mudan&amp;#xE7;as desncess&amp;#xE1;rios (refatorar por refatorar)\n
  65. - n&amp;#xF3;s fomos mordidos por refactorings antigos.\n- ter&amp;#xE7;a feira eu corrigi um bug criado em fevereiro, por causa de um refactoring desnecess&amp;#xE1;rio.\n- todo mundo odiou a category tree (testes super flappy rodando por 1 ano)\n
  66. seja corajoso e mude o c&amp;#xF3;digo\nmas n&amp;#xE3;o seja imprudente ao ponto de especular refactorings\n\n- n&amp;#xE3;o refatore mais de 2 classes por vez\n
  67. - ouviu algum guru falando que debugging &amp;#xE9; pra quem n&amp;#xE3;o sabe programar? (bullshit!)\n- conhe&amp;#xE7;a bem uma ou mais IDEs, elas v&amp;#xE3;o fazer sua vida muito mais simples (visual studio com resharper)\n- os refactorings automatizados simplificam a vida e d&amp;#xE3;o seguran&amp;#xE7;a.\n
  68. \n
  69. \n
  70. \n
  71. - extraia unidades de forma segura e r&amp;#xE1;pida\n- o compilador e a ide s&amp;#xE3;o grandes amigos seus nessas horas\n- muitos outros (depende da IDE)\n
  72. - esse m&amp;#xE9;todo &amp;#xE9; chamado em v&amp;#xE1;rios lugares. uma mudan&amp;#xE7;a pode quebrar N features.\n- vale mesmo a pena mexer nele?\n- sempre use o show call hierarchy quando come&amp;#xE7;ar a modificar uma classe.\n- alternativa em ruby/python? o bom e velho grep (mas n&amp;#xE3;o vai te dar os n&amp;#xED;veis mais baixos)\n(se tiver metaprograma&amp;#xE7;&amp;#xE3;o ferrou tudo)\n
  73. - de um blame e descubra quem &amp;#xE9; o pai da crian&amp;#xE7;a\n- deixe pra xingar depois, o dono da caca pode ser voce.\n- sempre fa&amp;#xE7;a um diff antes de commitar\n- use o log pra entender o que as outras pessoas pensaram quando escreveram aquele c&amp;#xF3;digo\n\n- grep e awk podem te ajudar a achar o conte&amp;#xFA;do que voc&amp;#xEA; procura\n- find pra navegar nos arquivos\n- cut pra extrair partes espec&amp;#xED;ficas do conte&amp;#xFA;do\n- xargs pra passar argumentos de forma mais inteligente\n
  74. - tdd &amp;#xE9; ferramenta de design, n&amp;#xE3;o de teste.\n- (levantar a polemica) qual &amp;#xE9; o ponto de fazer tdd pra design pronto?\n
  75. \n
  76. - n&amp;#xF3;s come&amp;#xE7;amos a matar os testes funcionais\n- geralmente se come&amp;#xE7;a com testes funcionais, mas n&amp;#xF3;s fizemos o contr&amp;#xE1;rio\n
  77. - o que &amp;#xE9; um flappy tests? (n&amp;#xE3;o determin&amp;#xED;stico. pode falhar em um dos n pontos)\n
  78. - o que &amp;#xE9; um flappy tests? (n&amp;#xE3;o determin&amp;#xED;stico. pode falhar em um dos n pontos)\n
  79. - o que &amp;#xE9; um flappy tests? (n&amp;#xE3;o determin&amp;#xED;stico. pode falhar em um dos n pontos)\n
  80. - o que &amp;#xE9; um flappy tests? (n&amp;#xE3;o determin&amp;#xED;stico. pode falhar em um dos n pontos)\n
  81. - o que &amp;#xE9; um flappy tests? (n&amp;#xE3;o determin&amp;#xED;stico. pode falhar em um dos n pontos)\n
  82. contudo, os testes ainda s&amp;#xE3;o lentos e inst&amp;#xE1;veis\n
  83. - teoria dos sistemas (self organization)\n- integra&amp;#xE7;&amp;#xE3;o via http/rest..\n
  84. - reclamar de um dev vai fazer com que ele seja melhor?\n- a velocidade de produ&amp;#xE7;&amp;#xE3;o de lixo &amp;#xE9; muito superior a velocidade de limpeza\n- enxugar gelo\n
  85. - reclamar s&amp;#xF3; vai gerar desgaste\n
  86. \n
  87. - os retangulos amarelos sao os buffers\n- separa&amp;#xE7;&amp;#xE3;o por slices\n
  88. \n
  89. \n
  90. - nao sei. (sim, mas n&amp;#xE3;o)\n- n&amp;#xE3;o podemos afirmar que sim, nem que n&amp;#xE3;o. Mas uma coisa &amp;#xE9; certa: se mantiv&amp;#xE9;ssemos o mesmo ritmo, o burnup seria uma r&amp;#xE9;plica das primeiras semanas. __/ ___/ __/\n- a mudan&amp;#xE7;a de atitude garantiu um ritmo sustent&amp;#xE1;vel que considera tech x biz\n
  91. \n