SlideShare une entreprise Scribd logo
ex-specs
@jonatasdp
HowI discovered
3k lines of USELESS
code in a week
NO broken builds
¯_(ツ)_/¯
Experiments
Autonomous
Context
- Huge codebase
- Mechanical task
- Meaningless work
Legacy specs
It was a good idea when it was written
Things get old
“You don’t stop doing things
because you get old.
You get oldbecause you stop
doing things.”
Rosamunde Pilcher
“The codedoes not get old
because we don’t run it.
It get oldbecause we stop
changing it.”
Jônatas
Old things are not BAD
We just start new things
EVERYDAY
HUGEcodebases
Dozens of
teams
Pull Requests
changing code
everywhere
MY FOCUS
Legacy specs
INTERESTING
RESULTS
ALL ||NOTHING
BAD STRATEGY
I need
independent
replacers
WRITE
it down.
http://ideia.me
Divide &
conquer
Experiments allow us to…
➔ Test “what if…”
➔ Find useless code and commit same mistakes
➔ Avoid repeating same experiments
➔ Like a linter but it’s not a linter
Simple 1 to 1 combination used to
generate the next interaction
Combining
experiments
Same experiment
Replace `create`
with
`build_stubbed`
1
Third experiment
Remove useless blocks options
Fast.experiment
1
https://github.com/jonatas/fast#experiments
Last experiment
Remove before/after blocks
Component Browser
Experiment identifier
Component Browser
What files it should lookup:
Component Browser
Use the node pattern to find the target nodes
Use parser gem
Code
Representation
Component Browser
Balsamiq Tip | Use the Balsamiq add-on to make your own wireframe.
What should be done in the target node
Parser::Writer ● remove(range)
● insert_after(position, content)
● insert_before(position, content)
Very simple interface to rewrite
code file based on AST
Component Browser
Policy: Is it a good change?
Find stubbed methods being called without
parameters and check the parameters signature.
Using fast as a research tool
Example
Mock cases
Method Signature
Example of the research
Using bundler/inline is cool
Hunting for method signatures compatibility
Experiments
will not save youfrom thinking.
Only automate some repetitive tasks.
Let’s code!!!
Next Steps > Fast#experiments
● Public experiments suite
● Run multiple checkers
● Check only diff nodes
● Improve combination strategy
● Implement “fast --warn” to report issues
“You don’t stop doing things
because you get old.
You get oldbecause you stop
doing things.”
Rosamunde Pilcher
References
https://github.com/jonatas/fast#fastexperiment
http://ideia.me/the-dynamic-experiment-initiative
http://ideia.me/adventures-on-automated-code-replacement
https://gist.github.com/jonatas/c1e580dcb74e20d4f2df4632ceb084ef
Questions
? @jonatasdphttp://ideia.me
@jonatasdp
T h a n k s !

Contenu connexe

Plus de Jônatas Paganini

Onboarding developers on a ful remote environment
Onboarding developers on a ful remote environmentOnboarding developers on a ful remote environment
Onboarding developers on a ful remote environmentJônatas Paganini
 
Floripa on Rails - dev workflow
Floripa on Rails - dev workflowFloripa on Rails - dev workflow
Floripa on Rails - dev workflowJônatas Paganini
 
Ensinando e aprendendo com desafios
Ensinando e aprendendo com desafiosEnsinando e aprendendo com desafios
Ensinando e aprendendo com desafiosJônatas Paganini
 
Go Lang migrating billions of documents
Go Lang  migrating billions of documentsGo Lang  migrating billions of documents
Go Lang migrating billions of documentsJônatas Paganini
 
Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesJônatas Paganini
 
XP - eXtreme Programming - 2010
XP - eXtreme Programming - 2010XP - eXtreme Programming - 2010
XP - eXtreme Programming - 2010Jônatas Paganini
 
Apresentação sobre Rails - 2010
Apresentação sobre Rails - 2010Apresentação sobre Rails - 2010
Apresentação sobre Rails - 2010Jônatas Paganini
 
Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesJônatas Paganini
 
4 ferramentas para acompanhar seu app em produção pelo slack
4 ferramentas para acompanhar seu app em produção pelo slack4 ferramentas para acompanhar seu app em produção pelo slack
4 ferramentas para acompanhar seu app em produção pelo slackJônatas Paganini
 
Quando descobri que era programador
Quando descobri que era programadorQuando descobri que era programador
Quando descobri que era programadorJônatas Paganini
 
ø Downtime migrations - Ruby Conf 2015
ø Downtime migrations  - Ruby Conf 2015ø Downtime migrations  - Ruby Conf 2015
ø Downtime migrations - Ruby Conf 2015Jônatas Paganini
 
Tdc cloud computing - RDStation experiences
Tdc cloud computing - RDStation experiencesTdc cloud computing - RDStation experiences
Tdc cloud computing - RDStation experiencesJônatas Paganini
 
Dicas para uma boa impressão 3D
Dicas para uma boa impressão 3DDicas para uma boa impressão 3D
Dicas para uma boa impressão 3DJônatas Paganini
 

Plus de Jônatas Paganini (18)

Onboarding developers on a ful remote environment
Onboarding developers on a ful remote environmentOnboarding developers on a ful remote environment
Onboarding developers on a ful remote environment
 
Floripa on Rails - dev workflow
Floripa on Rails - dev workflowFloripa on Rails - dev workflow
Floripa on Rails - dev workflow
 
Ensinando e aprendendo com desafios
Ensinando e aprendendo com desafiosEnsinando e aprendendo com desafios
Ensinando e aprendendo com desafios
 
Go Lang migrating billions of documents
Go Lang  migrating billions of documentsGo Lang  migrating billions of documents
Go Lang migrating billions of documents
 
Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testes
 
XP - eXtreme Programming - 2010
XP - eXtreme Programming - 2010XP - eXtreme Programming - 2010
XP - eXtreme Programming - 2010
 
Apresentação sobre Rails - 2010
Apresentação sobre Rails - 2010Apresentação sobre Rails - 2010
Apresentação sobre Rails - 2010
 
Tech for non techs
Tech for non techsTech for non techs
Tech for non techs
 
Otimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testesOtimizando tempo de build: performance da suíte de testes
Otimizando tempo de build: performance da suíte de testes
 
4 ferramentas para acompanhar seu app em produção pelo slack
4 ferramentas para acompanhar seu app em produção pelo slack4 ferramentas para acompanhar seu app em produção pelo slack
4 ferramentas para acompanhar seu app em produção pelo slack
 
Concurrency in Ruby
Concurrency in RubyConcurrency in Ruby
Concurrency in Ruby
 
Quando descobri que era programador
Quando descobri que era programadorQuando descobri que era programador
Quando descobri que era programador
 
Life hacks for productivity
Life hacks for productivityLife hacks for productivity
Life hacks for productivity
 
ø Downtime migrations - Ruby Conf 2015
ø Downtime migrations  - Ruby Conf 2015ø Downtime migrations  - Ruby Conf 2015
ø Downtime migrations - Ruby Conf 2015
 
Tdc cloud computing - RDStation experiences
Tdc cloud computing - RDStation experiencesTdc cloud computing - RDStation experiences
Tdc cloud computing - RDStation experiences
 
Life hacks for productivity
Life hacks for productivityLife hacks for productivity
Life hacks for productivity
 
Dicas para uma boa impressão 3D
Dicas para uma boa impressão 3DDicas para uma boa impressão 3D
Dicas para uma boa impressão 3D
 
ø Downtime migrations
ø Downtime migrationsø Downtime migrations
ø Downtime migrations
 

Dernier

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandIES VE
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)Max Lee
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Gáspár Nagy
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignNeo4j
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabbereGrabber
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationWave PLM
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockSkilrock Technologies
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfOrtus Solutions, Corp
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAlluxio, Inc.
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationHelp Desk Migration
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Soroosh Khodami
 

Dernier (20)

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by Design
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabber
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by Skilrock
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data Migration
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 

TDC Floripa 2018 Dev Tests - weak specs