SlideShare a Scribd company logo
Stop amazing.
Start working.
why?
l iver
we
Away day
Away day
the resources
the mission
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
                 lines of code
grep -R ‘<bean’ . | wc -l
grep -R ‘<bean’ . | wc -l




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




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




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




        1603
            junit3 tests
our nice tech stack
integration

40 queues      157 fields     20 schemas
               20 cores



                                ~ 30
                             offline jobs
             5 webservices
104
integration points!
~le tests
~le tests
• 2777 junit tests
~le tests
• 2777 junit tests
• 360 functional tests
~le tests
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (no bundler!)
~le tests
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (no bundler!)
• windows xp
~le tests
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (no bundler!)
• windows xp
• monkeypatches for IE/windows
~le tests
• 2777 junit tests
• 360 functional tests
• ruby 1.8.6 (no bundler!)
• windows xp
• monkeypatches for IE/windows
• 4 hours build
teams
4    teams


35   devs
6 engineers
6   managers
pigeons!
many of them
first story

product feed import
IHateYouForeverImpl

• 2272 lines
• 32 dependencies
• getItemStatus (3 setters)
IHateYouServiceImplTest


  78 lines of test setup
loadAllProducts.xml


      26 pages
ProductDTO.java

• 86 attributes
• + getters / + setters
• equals() => 400 lines
let’s throw it all away
and start from scratch!
Away day
Away day
ok!
let’s AMAZE this
     codebase
pague o aluguel!
massive cleanup

• intensive refactoring
• pair programming
• rant! whining! crying!
6 weeks later...
zoom++
fuuuu


• silly refactoring (speculative)
• bugs in prod
Away day
todos ‘chora’
todos ‘chora’
• little trust on the offshore team
todos ‘chora’
• little trust on the offshore team
• the project almost gets cancelled
todos ‘chora’
• little trust on the offshore team
• the project almost gets cancelled
• IM leaves
todos ‘chora’
• little trust on the offshore team
• the project almost gets cancelled
• IM leaves
• tech lead leaves
we were alone :’(
new approach
Away day
Away day
foca no trabalho!
purism must stop
right software
       >
software right
is it worth refactoring?


• does it block another story?
• does it block delivery?
speculation
“this is going to impact on story #125 of
            the next iteration”

           facts x speculation

      software is inherently fuzzy
legacy code is working code


                       http://favim.com/image/467371/
sweep it under the carpet




façades

parallel class hierarchy
tolerate heresy
Away day
reduce the feedback
       cycle

is there anyone using it?
tools
feature
level MVPs
avoid the
formal sign-off
fantasy
architecture
what do they wanna
      hear?
is it possible not to test?
divide and conquer
technical debt factories
in the end...
Away day
the client
is this success a
consequence of the
    initial effort?
sim




mas não
here’s my number
   nettofarah@gmail.com
        @nettofarah

 vgomes@thoughtworks.com
        @vvgomes



so call me, maybe
thank you!

More Related Content

PPTX
Unit testing js
PPTX
PuppetConf 2017: Using Puppet Enterprise APIs with PowerShell- Jason Johnson,...
PDF
Jest: Frontend Testing leicht gemacht @EnterJS2018
PDF
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
PDF
Distributed Release Management
PPTX
Testing React Applications
PDF
The Many Ways to Test Your React App
PPTX
Wix Automation - The False Positive Paradox
Unit testing js
PuppetConf 2017: Using Puppet Enterprise APIs with PowerShell- Jason Johnson,...
Jest: Frontend Testing leicht gemacht @EnterJS2018
Meetup AngularJS Rio - Testes e2e para apps AngularJS com Protractor
Distributed Release Management
Testing React Applications
The Many Ways to Test Your React App
Wix Automation - The False Positive Paradox

What's hot (20)

PDF
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
PPTX
Should you react?
PDF
Maintaining Your Tests At Scale
PPT
Extreme CI Savings with Bamboo 3.1: The JIRA Story
PDF
Say Goodbye to Flaky Selenium Tests
PDF
Perl Continous Integration
PDF
FITC - Here Be Dragons: Advanced JavaScript Debugging
PDF
Full stack, Full run, Full test
PDF
Getting By Without "QA"
PDF
Pitfalls in Performance Testing AxxesCC 06/2015
PPTX
Unit testing JavaScript: Jasmine & karma intro
PPTX
Django strategy-test
PDF
Futureproof angular 1.x applications - yannick houbrix
PPTX
Protractor Tutorial Quality in Agile 2015
PDF
淺談 Startup 公司的軟體開發流程 v2
PDF
Angularjs - Unit testing introduction
PPTX
Angular Unit Testing
PDF
Gestión de infraestructura tomcat/Tom EE con tfactory
PDF
Introduction To Web Application Testing
PDF
RxSwiftを用いたアプリ開発の実践
“Sensu and Sensibility” - The Story of a Journey From #monitoringsucks to #mo...
Should you react?
Maintaining Your Tests At Scale
Extreme CI Savings with Bamboo 3.1: The JIRA Story
Say Goodbye to Flaky Selenium Tests
Perl Continous Integration
FITC - Here Be Dragons: Advanced JavaScript Debugging
Full stack, Full run, Full test
Getting By Without "QA"
Pitfalls in Performance Testing AxxesCC 06/2015
Unit testing JavaScript: Jasmine & karma intro
Django strategy-test
Futureproof angular 1.x applications - yannick houbrix
Protractor Tutorial Quality in Agile 2015
淺談 Startup 公司的軟體開發流程 v2
Angularjs - Unit testing introduction
Angular Unit Testing
Gestión de infraestructura tomcat/Tom EE con tfactory
Introduction To Web Application Testing
RxSwiftを用いたアプリ開発の実践
Ad

Viewers also liked (20)

PPTX
Addchip
PDF
Cactus explorer 12 complete
PPT
Weekly news
PPTX
Framework design
PDF
Fourseasons Menu
PPT
Picasso y cubismo
ODP
Martina rotini
PPT
Mabini(lecture5)
PPTX
Pvh2011 10-19 van idee tot product - slideshare
PDF
[plan politika] Indonesian Youth and Politics : Serial Slide Bakal Calon Gube...
PDF
Dsc03369
PPTX
What defines a junior business analyst
PDF
Cactus explorer 8 complete
PPTX
[plan politika] Indonesian Youth and Politics : Youth and Political Parties (...
PPT
Cvaldez
PDF
Chatham 2014
PPTX
[plan politika] Indonesian Youth Movement Nowadays : In Memory of May, 1998
PDF
[plan politika] Pemuda dan Politik Indonesia : In Search of Truly Youthful Un...
PDF
Innovation In Rough Seas V3
Addchip
Cactus explorer 12 complete
Weekly news
Framework design
Fourseasons Menu
Picasso y cubismo
Martina rotini
Mabini(lecture5)
Pvh2011 10-19 van idee tot product - slideshare
[plan politika] Indonesian Youth and Politics : Serial Slide Bakal Calon Gube...
Dsc03369
What defines a junior business analyst
Cactus explorer 8 complete
[plan politika] Indonesian Youth and Politics : Youth and Political Parties (...
Cvaldez
Chatham 2014
[plan politika] Indonesian Youth Movement Nowadays : In Memory of May, 1998
[plan politika] Pemuda dan Politik Indonesia : In Search of Truly Youthful Un...
Innovation In Rough Seas V3
Ad

Similar to Away day (20)

PDF
Continuous Integration Testing in Django
PDF
20140406 loa days-tdd-with_puppet_tutorial
PDF
Jest: Frontend Testing richtig gemacht @WebworkerNRW
PDF
Scala Frustrations
PDF
How to Begin Developing Ruby Core
PDF
CBDW2014 - MockBox, get ready to mock your socks off!
PDF
Sensu and Sensibility - Puppetconf 2014
PPTX
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
PDF
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
PPTX
HotSpotコトハジメ
PDF
Smart Client Development
PPTX
Reducing Bugs With Static Code Analysis php tek 2025
PDF
Solid and Sustainable Development in Scala
PDF
Implementing Quality on a Java Project
PDF
Here Be Dragons – Advanced JavaScript Debugging
PDF
Web Development using Ruby on Rails
PDF
Puppet for Sys Admins
PDF
Solid And Sustainable Development in Scala
PDF
Testing sync engine
Continuous Integration Testing in Django
20140406 loa days-tdd-with_puppet_tutorial
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Scala Frustrations
How to Begin Developing Ruby Core
CBDW2014 - MockBox, get ready to mock your socks off!
Sensu and Sensibility - Puppetconf 2014
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
HotSpotコトハジメ
Smart Client Development
Reducing Bugs With Static Code Analysis php tek 2025
Solid and Sustainable Development in Scala
Implementing Quality on a Java Project
Here Be Dragons – Advanced JavaScript Debugging
Web Development using Ruby on Rails
Puppet for Sys Admins
Solid And Sustainable Development in Scala
Testing sync engine

More from Ivayr Farah Netto (7)

PDF
Building a Single Page App: One Page at a Time
PDF
a 8tracks ama o Redis
PDF
Persistência Poliglota na Prática
PDF
Redis &lt;3 at 8tracks.com
PDF
Rails girls
KEY
Praticando o Desapego: quando ignorar a dívida técnica
PDF
Testes, TDD e Outras Coisas Que Você Deveria Saber
Building a Single Page App: One Page at a Time
a 8tracks ama o Redis
Persistência Poliglota na Prática
Redis &lt;3 at 8tracks.com
Rails girls
Praticando o Desapego: quando ignorar a dívida técnica
Testes, TDD e Outras Coisas Que Você Deveria Saber

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
KodekX | Application Modernization Development
PDF
Modernizing your data center with Dell and AMD
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
cuic standard and advanced reporting.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Unlocking AI with Model Context Protocol (MCP)
The Rise and Fall of 3GPP – Time for a Sabbatical?
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
KodekX | Application Modernization Development
Modernizing your data center with Dell and AMD
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
cuic standard and advanced reporting.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Review of recent advances in non-invasive hemoglobin estimation
Spectral efficient network and resource selection model in 5G networks
Understanding_Digital_Forensics_Presentation.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
20250228 LYD VKU AI Blended-Learning.pptx
Encapsulation_ Review paper, used for researhc scholars

Away day

Editor's Notes

  • #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: \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: - find . -name &apos;*.java&apos; | grep -v &apos;generated&apos; | xargs wc -l | sort\n
  • #33: - find . -name &apos;*Test.java&apos; | grep -v &apos;generated&apos; | xargs wc -l | sort\n
  • #34: \n
  • #35: \n
  • #36: \n
  • #37: - o sistema &amp;#xE9; gigante.\n- ultra complexo\n- reescrever significa fazer engenharia reversa\n- caso do netscape\n
  • #38: \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: \n
  • #45: \n
  • #46: \n
  • #47: \n
  • #48: \n
  • #49: \n
  • #50: \n
  • #51: \n
  • #52: \n
  • #53: \n
  • #54: \n
  • #55: \n
  • #56: \n
  • #57: \n
  • #58: - 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
  • #59: \n
  • #60: - 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
  • #61: - 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
  • #62: \n
  • #63: \n
  • #64: \n
  • #65: \n
  • #66: \n
  • #67: \n
  • #68: \n
  • #69: \n
  • #70: \n
  • #71: \n
  • #72: \n
  • #73: \n
  • #74: \n
  • #75: \n
  • #76: \n
  • #77: \n
  • #78: \n
  • #79: \n
  • #80: \n