SlideShare a Scribd company logo
1 of 54
So You Want To Rewrite That… 
Lessons from a successful rearchitecting 
Camille Fournier 
@skamille 
GOTO Chicago 2014
We were failing to support our 
growth, our customers, and our 
technology
Everything’s not fine.
A rewrite will solve all my problems!
There’s no such thing as a 
successful rewrite 
The sustainable rewrite looks like firefighting 
Cliff Moon, Boundary
THE PATH TO REWRITING IS 
FRAUGHT WITH DANGER
You’re failing now.
You can’t scale.
You can’t meet customer demand.
You’re crushed 
under the 
weight of your 
technical debt.
It is easy to fail on the unknown 
unknowns
How well do you know what the code is doing now? 
This doesn’t look THAT big…
What about the data?
How does the team need to change to 
make this successful?
The sirens will tempt you off 
course.
Counting on a 
“big bang” 
release.
Choosing the wrong software.
Choosing the wrong software.
WHAT ARE THE PRINCIPLES TO 
MAKE THIS SUCCESSFUL?
Change as little as possible.
Rewrite but keep the language the 
same.
Change only one thing at once (salami 
slicing)
You need to sell this.
Sell it to yourself first.
Sell it to the business with Big Scary 
Graphs.
Sell it to your team.
You need a detailed definition of 
done.
A test 
suite that 
acts as a 
safety 
harness.
What is the quality we’re measuring to 
improve?
What is our data migration plan?
WHAT DOES THE OUTCOME LOOK 
LIKE?
Your culture will change in the 
process.
Long-time employees may feel 
threatened.
Workflows will have to change.
The structure of your team changes. 
CTO 
Architect 
Dev Dev Dev Dev Dev Dev
The structure of your team changes. 
CTO 
Director 
FrontEnd 
Dev Dev 
QA BackEnd 
Dev Dev 
Director 
Frontend QA Backend 
VP Ops 
DevOps 
DevOps DevOps 
Syseng
A new architecture brings new 
challenges.
Tempting to make v2 everything you 
ever wanted!
Overengineering can happen to 
process, too.
Our Runway 
Home 
Grid 
Product Detail 
User 
Checkout 
Static Asset CDN Origin 
Drupal 
static assets 
sinatra views / erbs 
< Sinatra::Base 
RtR API clients 
Heroku 
Engine Yard 
Rackspace
You’re never really done.
You create a system that will last 
longer than its predecessor.
You have the flexibility to build the 
things you will need.
You have standards around that 
flexibility to mitigate complexity.
Build with the needs of a larger or 
smaller team in mind.
Everything isn’t fine.
It’s time to rewrite.
Sell it, change as little as possible, 
and know what done looks like.
Prepare for a brave new world.
Create a sustainable future.
Thanks! 
• @skamille 
• Rent the Runway is hiring! 
renttherunway.com/careers 
• My blog: whilefalse.blogspot.com
credits 
• www.mccord-museum.qc.ca/fr/collection/artefacts/MP-0000.2265 
• Zombie mob: https://www.flickr.com/photos/aheram/219515706/ 
• Fail whale: Rob Friedman / playerx / @px 
• National Ocean Service Image Gallery 
• https://www.flickr.com/photos/matt_gibson/3281131319 
• https://www.flickr.com/photos/philliecasablanca/3344142642 
• https://www.flickr.com/photos/johnragai/12601518074 
• https://www.flickr.com/photos/thomashawk/2369472195 
• https://www.flickr.com/photos/richigrafik/4912808572 
• https://www.flickr.com/photos/katiew/311380970 
• https://www.flickr.com/photos/lucianvenutian/1279760885 
• https://www.flickr.com/photos/kaptainkobold/390454090 
• https://www.flickr.com/photos/nihonbunka/3353532166

More Related Content

What's hot

Leveraging on scalable technology to expand regionally
Leveraging on scalable technology to expand regionallyLeveraging on scalable technology to expand regionally
Leveraging on scalable technology to expand regionallyMichael Smith Jr.
 
Self-Selection: An Agile Approach to Forming Teams @ Scale
Self-Selection: An Agile Approach to  Forming Teams @ ScaleSelf-Selection: An Agile Approach to  Forming Teams @ Scale
Self-Selection: An Agile Approach to Forming Teams @ ScaleEm Campbell-Pretty
 
Agile - A failure story
Agile - A failure storyAgile - A failure story
Agile - A failure storyMiki Lior
 
Echelon Thailand 2017 – Leveraging On Scalable Technology To Expand Regionally
Echelon Thailand 2017 – Leveraging On Scalable Technology To Expand RegionallyEchelon Thailand 2017 – Leveraging On Scalable Technology To Expand Regionally
Echelon Thailand 2017 – Leveraging On Scalable Technology To Expand Regionallye27
 
FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13
FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13
FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13Lean Kanban Central Europe
 
Technical Debt and Selling Rearchitecture
Technical Debt and Selling RearchitectureTechnical Debt and Selling Rearchitecture
Technical Debt and Selling RearchitectureSergey Sundukovskiy
 
How to Internationalize Products by fmr Condé Nast Int. PM
How to Internationalize Products by fmr Condé Nast Int. PMHow to Internationalize Products by fmr Condé Nast Int. PM
How to Internationalize Products by fmr Condé Nast Int. PMProduct School
 
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil ZambranaMasterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil ZambranaIIMN. Instituto Internacional de Marketing
 
3 Insights for Consumerization of the Enterprise
3 Insights for Consumerization of the Enterprise3 Insights for Consumerization of the Enterprise
3 Insights for Consumerization of the Enterprisesaastr
 
MVP Design Hacks: Sprint 5
MVP Design Hacks: Sprint 5MVP Design Hacks: Sprint 5
MVP Design Hacks: Sprint 5Amy Jo Kim
 
10 Atlassian Tool Hacks to Improve Team Culture
10 Atlassian Tool Hacks to Improve Team Culture10 Atlassian Tool Hacks to Improve Team Culture
10 Atlassian Tool Hacks to Improve Team CultureAtlassian
 
A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...
A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...
A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...Lean Kanban Central Europe
 
Getting Business Exec Buy-in for Architecture Change
Getting Business Exec Buy-in for Architecture ChangeGetting Business Exec Buy-in for Architecture Change
Getting Business Exec Buy-in for Architecture ChangeDominica DeGrandis
 
Scrum under a waterfall
Scrum under a waterfallScrum under a waterfall
Scrum under a waterfallMing Man Chan
 
What does it mean to be a test engineer?
What does it mean to be a test engineer?What does it mean to be a test engineer?
What does it mean to be a test engineer?Andrii Dzynia
 
ATD Virtual Conference: Leveraging Agile Methods in L&D
ATD Virtual Conference: Leveraging Agile Methods in L&DATD Virtual Conference: Leveraging Agile Methods in L&D
ATD Virtual Conference: Leveraging Agile Methods in L&DTorranceLearning
 
Make Work Visible - Unmask Capacity Killing WIP
Make Work Visible - Unmask Capacity Killing WIPMake Work Visible - Unmask Capacity Killing WIP
Make Work Visible - Unmask Capacity Killing WIPDominica DeGrandis
 
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
Master Technical Recruiting Workshop:  How to Recruit Top Tech TalentMaster Technical Recruiting Workshop:  How to Recruit Top Tech Talent
Master Technical Recruiting Workshop: How to Recruit Top Tech TalentRecruitingDaily.com LLC
 

What's hot (20)

Leveraging on scalable technology to expand regionally
Leveraging on scalable technology to expand regionallyLeveraging on scalable technology to expand regionally
Leveraging on scalable technology to expand regionally
 
Self-Selection: An Agile Approach to Forming Teams @ Scale
Self-Selection: An Agile Approach to  Forming Teams @ ScaleSelf-Selection: An Agile Approach to  Forming Teams @ Scale
Self-Selection: An Agile Approach to Forming Teams @ Scale
 
Agile - A failure story
Agile - A failure storyAgile - A failure story
Agile - A failure story
 
Echelon Thailand 2017 – Leveraging On Scalable Technology To Expand Regionally
Echelon Thailand 2017 – Leveraging On Scalable Technology To Expand RegionallyEchelon Thailand 2017 – Leveraging On Scalable Technology To Expand Regionally
Echelon Thailand 2017 – Leveraging On Scalable Technology To Expand Regionally
 
FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13
FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13
FLIGHT LEVELS OF KANBAN (KLAUS LEOPOLD) - LKCE13
 
Technical Debt and Selling Rearchitecture
Technical Debt and Selling RearchitectureTechnical Debt and Selling Rearchitecture
Technical Debt and Selling Rearchitecture
 
How Top Draw Uses Function Point to Avoid Productivity Pitfalls
How Top Draw Uses Function Point to Avoid Productivity PitfallsHow Top Draw Uses Function Point to Avoid Productivity Pitfalls
How Top Draw Uses Function Point to Avoid Productivity Pitfalls
 
How to Internationalize Products by fmr Condé Nast Int. PM
How to Internationalize Products by fmr Condé Nast Int. PMHow to Internationalize Products by fmr Condé Nast Int. PM
How to Internationalize Products by fmr Condé Nast Int. PM
 
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil ZambranaMasterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
 
Ruben gambarov
Ruben gambarov  Ruben gambarov
Ruben gambarov
 
3 Insights for Consumerization of the Enterprise
3 Insights for Consumerization of the Enterprise3 Insights for Consumerization of the Enterprise
3 Insights for Consumerization of the Enterprise
 
MVP Design Hacks: Sprint 5
MVP Design Hacks: Sprint 5MVP Design Hacks: Sprint 5
MVP Design Hacks: Sprint 5
 
10 Atlassian Tool Hacks to Improve Team Culture
10 Atlassian Tool Hacks to Improve Team Culture10 Atlassian Tool Hacks to Improve Team Culture
10 Atlassian Tool Hacks to Improve Team Culture
 
A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...
A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...
A STORY OF FAILURE - INSIGHTS FROM A START-UP & WHY THEY MATTER IN AN ENTERPR...
 
Getting Business Exec Buy-in for Architecture Change
Getting Business Exec Buy-in for Architecture ChangeGetting Business Exec Buy-in for Architecture Change
Getting Business Exec Buy-in for Architecture Change
 
Scrum under a waterfall
Scrum under a waterfallScrum under a waterfall
Scrum under a waterfall
 
What does it mean to be a test engineer?
What does it mean to be a test engineer?What does it mean to be a test engineer?
What does it mean to be a test engineer?
 
ATD Virtual Conference: Leveraging Agile Methods in L&D
ATD Virtual Conference: Leveraging Agile Methods in L&DATD Virtual Conference: Leveraging Agile Methods in L&D
ATD Virtual Conference: Leveraging Agile Methods in L&D
 
Make Work Visible - Unmask Capacity Killing WIP
Make Work Visible - Unmask Capacity Killing WIPMake Work Visible - Unmask Capacity Killing WIP
Make Work Visible - Unmask Capacity Killing WIP
 
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
Master Technical Recruiting Workshop:  How to Recruit Top Tech TalentMaster Technical Recruiting Workshop:  How to Recruit Top Tech Talent
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
 

Viewers also liked

Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt ManagementMark Niebergall
 
Building Engaged Teams in 2017
Building Engaged Teams in 2017Building Engaged Teams in 2017
Building Engaged Teams in 2017Camille Fournier
 
How to go from structureless to structured without losing your vibe
How to go from structureless to structured without losing your vibeHow to go from structureless to structured without losing your vibe
How to go from structureless to structured without losing your vibeCamille Fournier
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debtzazworka
 
The Role of CTO: A Rantifesto
The Role of CTO: A RantifestoThe Role of CTO: A Rantifesto
The Role of CTO: A RantifestoCamille Fournier
 
Technical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerTechnical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerLemi Orhan Ergin
 

Viewers also liked (6)

Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt Management
 
Building Engaged Teams in 2017
Building Engaged Teams in 2017Building Engaged Teams in 2017
Building Engaged Teams in 2017
 
How to go from structureless to structured without losing your vibe
How to go from structureless to structured without losing your vibeHow to go from structureless to structured without losing your vibe
How to go from structureless to structured without losing your vibe
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debt
 
The Role of CTO: A Rantifesto
The Role of CTO: A RantifestoThe Role of CTO: A Rantifesto
The Role of CTO: A Rantifesto
 
Technical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerTechnical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The Danger
 

Similar to So You Want to Rewrite That...

Functional requirements: Thinking Like A Pirate
Functional requirements: Thinking Like A PirateFunctional requirements: Thinking Like A Pirate
Functional requirements: Thinking Like A PirateAmye Scavarda
 
How agile is rails
 How agile is rails How agile is rails
How agile is railsJosé Mota
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilFabio Akita
 
Agile for developers
Agile for developersAgile for developers
Agile for developersJerome Eteve
 
With Great Power comes Great Responsibilities
With Great Power comes Great ResponsibilitiesWith Great Power comes Great Responsibilities
With Great Power comes Great ResponsibilitiesFabrice Bernhard
 
Scaling Product Development at a
Scaling Product Development at a Scaling Product Development at a
Scaling Product Development at a James Birchler
 
Small shops and freelancers
Small shops and freelancersSmall shops and freelancers
Small shops and freelancersSteve Kessler
 
WinSmart Technologies
WinSmart TechnologiesWinSmart Technologies
WinSmart Technologiesbijunairk
 
Building Startups and Minimum Viable Products (NDC2013)
Building Startups and Minimum Viable Products (NDC2013)Building Startups and Minimum Viable Products (NDC2013)
Building Startups and Minimum Viable Products (NDC2013)Ben Hall
 
Being agile while standing in a waterfall
Being agile while standing in a waterfallBeing agile while standing in a waterfall
Being agile while standing in a waterfallMike Edwards
 
Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015Holger Bartel
 
2010 03 09 the lean startup - gdc
2010 03 09 the lean startup - gdc2010 03 09 the lean startup - gdc
2010 03 09 the lean startup - gdcEric Ries
 
Lean web solutions with WordPress [English version]
Lean web solutions with WordPress [English version]Lean web solutions with WordPress [English version]
Lean web solutions with WordPress [English version]Carlo Beschi
 
Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...
Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...
Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...LeanKanbanIndia
 
It's not Scrum VS. Kanban! It is Scrum AND Kanban!
It's not Scrum VS. Kanban! It is Scrum AND Kanban!It's not Scrum VS. Kanban! It is Scrum AND Kanban!
It's not Scrum VS. Kanban! It is Scrum AND Kanban!Mahesh Singh
 
Codemash 2.0.1.4: Tech Trends and Pwning Your Pwn Career
Codemash 2.0.1.4: Tech Trends and Pwning Your Pwn CareerCodemash 2.0.1.4: Tech Trends and Pwning Your Pwn Career
Codemash 2.0.1.4: Tech Trends and Pwning Your Pwn CareerKevin Davis
 
The incumbent’s playbook for launching a vertical SaaS product (Directions EM...
The incumbent’s playbook for launching a vertical SaaS product (Directions EM...The incumbent’s playbook for launching a vertical SaaS product (Directions EM...
The incumbent’s playbook for launching a vertical SaaS product (Directions EM...Martin Karlowitsch
 

Similar to So You Want to Rewrite That... (20)

Rewrites in Real Life
Rewrites in Real LifeRewrites in Real Life
Rewrites in Real Life
 
Functional requirements: Thinking Like A Pirate
Functional requirements: Thinking Like A PirateFunctional requirements: Thinking Like A Pirate
Functional requirements: Thinking Like A Pirate
 
How agile is rails
 How agile is rails How agile is rails
How agile is rails
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
 
Agile for developers
Agile for developersAgile for developers
Agile for developers
 
With Great Power comes Great Responsibilities
With Great Power comes Great ResponsibilitiesWith Great Power comes Great Responsibilities
With Great Power comes Great Responsibilities
 
Scaling Product Development at a
Scaling Product Development at a Scaling Product Development at a
Scaling Product Development at a
 
Small shops and freelancers
Small shops and freelancersSmall shops and freelancers
Small shops and freelancers
 
Introduction to Agile
Introduction to AgileIntroduction to Agile
Introduction to Agile
 
WinSmart Technologies
WinSmart TechnologiesWinSmart Technologies
WinSmart Technologies
 
Building Startups and Minimum Viable Products (NDC2013)
Building Startups and Minimum Viable Products (NDC2013)Building Startups and Minimum Viable Products (NDC2013)
Building Startups and Minimum Viable Products (NDC2013)
 
Being agile while standing in a waterfall
Being agile while standing in a waterfallBeing agile while standing in a waterfall
Being agile while standing in a waterfall
 
Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015
 
2010 03 09 the lean startup - gdc
2010 03 09 the lean startup - gdc2010 03 09 the lean startup - gdc
2010 03 09 the lean startup - gdc
 
Lean web solutions with WordPress [English version]
Lean web solutions with WordPress [English version]Lean web solutions with WordPress [English version]
Lean web solutions with WordPress [English version]
 
Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...
Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...
Lean Kanban India 2016 | It is not Scrum vs. Kanban! It is Scrum and Kanban! ...
 
It's not Scrum VS. Kanban! It is Scrum AND Kanban!
It's not Scrum VS. Kanban! It is Scrum AND Kanban!It's not Scrum VS. Kanban! It is Scrum AND Kanban!
It's not Scrum VS. Kanban! It is Scrum AND Kanban!
 
Codemash 2.0.1.4: Tech Trends and Pwning Your Pwn Career
Codemash 2.0.1.4: Tech Trends and Pwning Your Pwn CareerCodemash 2.0.1.4: Tech Trends and Pwning Your Pwn Career
Codemash 2.0.1.4: Tech Trends and Pwning Your Pwn Career
 
The incumbent’s playbook for launching a vertical SaaS product (Directions EM...
The incumbent’s playbook for launching a vertical SaaS product (Directions EM...The incumbent’s playbook for launching a vertical SaaS product (Directions EM...
The incumbent’s playbook for launching a vertical SaaS product (Directions EM...
 

More from Camille Fournier

Hopelessness and Confidence in Distributed Systems Design
Hopelessness and Confidence in Distributed Systems DesignHopelessness and Confidence in Distributed Systems Design
Hopelessness and Confidence in Distributed Systems DesignCamille Fournier
 
A People's History of Microservices
A People's History of MicroservicesA People's History of Microservices
A People's History of MicroservicesCamille Fournier
 
Keynote talk: How to stay in love with programming (with notes)
Keynote talk: How to stay in love with programming (with notes)Keynote talk: How to stay in love with programming (with notes)
Keynote talk: How to stay in love with programming (with notes)Camille Fournier
 
Keynote talk: How to stay in love with programming
Keynote talk: How to stay in love with programmingKeynote talk: How to stay in love with programming
Keynote talk: How to stay in love with programmingCamille Fournier
 

More from Camille Fournier (7)

The Elements of Scaling
The Elements of ScalingThe Elements of Scaling
The Elements of Scaling
 
Hopelessness and Confidence in Distributed Systems Design
Hopelessness and Confidence in Distributed Systems DesignHopelessness and Confidence in Distributed Systems Design
Hopelessness and Confidence in Distributed Systems Design
 
A People's History of Microservices
A People's History of MicroservicesA People's History of Microservices
A People's History of Microservices
 
Becoming a Multiplier
Becoming a MultiplierBecoming a Multiplier
Becoming a Multiplier
 
Keynote talk: How to stay in love with programming (with notes)
Keynote talk: How to stay in love with programming (with notes)Keynote talk: How to stay in love with programming (with notes)
Keynote talk: How to stay in love with programming (with notes)
 
Keynote talk: How to stay in love with programming
Keynote talk: How to stay in love with programmingKeynote talk: How to stay in love with programming
Keynote talk: How to stay in love with programming
 
Zoo keeper for ricon
Zoo keeper for riconZoo keeper for ricon
Zoo keeper for ricon
 

Recently uploaded

Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxhumanexperienceaaa
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 

Recently uploaded (20)

Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 

So You Want to Rewrite That...

Editor's Notes

  1. Rent the Runway initially launched as a Drupal application that ran the storefront, inventory and fulfillment systems. When I joined the company in 2011, we encountered pretty much every issue you’d expect with a legacy system. We couldn’t support the growth of the business, our customers used the product despite a slow and buggy website, and we couldn’t release new features without trying and rolling back several times due to instability. I lead the team through a rewrite of our systems over the past 2 years, and became interested in the issues around rewriting, especially in the context of growing startups.
  2. When you start a rewrite, you are generally in a trainwreck sort of situation
  3. Aha, you think! I’ll rewrite everything, that will get me out of this mess!
  4. But, as my friend Cliff said recently in a different talk, there’s basically no such thing as a successful rewrites. Rewriting is an act borne of failure. The best you can hope for is a rewrite that looks like firefighting. Don’t believe me? Let’s dive in.
  5. Rewriting successfully is difficult because of where you are now, what you don’t know, and the many ways you can flounder along the way.
  6. If you are contemplating a rewrite, you’re probably in the midst of failure, or heading quickly towards a very measurable problem.
  7. Can’t Scale .Twitter is a classic example, but this is a common problem. In fact, this is almost the way you want your team to be forced to rewrite, because you have so much volume you can’t keep up. Trade volumes increasing for a banking world, additional regulatory requirements, more data, etc. When I joined RTR, we had a huge scaling issue. Due to the version of Drupal we were running, we could not sustain more concurrent sessions than we had web server space for, and we couldn’t just spin up new servers when we needed to to handle additional load. We were completely unable to consider doing promotional work that would drive spikes in traffic to the site. Cyber Monday was a nightmare.
  8. You can’t meet your customer’s demand. You’ve written software that depends on the cloud, and someone wants to give you a ton of money to run it in-house. This goes a bit hand-in-hand with scaling if you are building a product where you can’t tolerate additional users. We couldn’t scale our ability to handle more reservations because of our data model.
  9. Crushed under the weight of technical debt. You can barely keep things going as they are, let alone move forward. We were definitely in this situation. DANGER DANGER Every developer can point to some software they’d like to rewrite Developers are lazy about reading software and hate dealing with anything legacy This is the most tempting failure to handwave: of COURSE we’re being crushed. But are you really? “Crushed” isn’t we spend a little bit of additional time figuring out legacy code sometimes. Crushed is we spend all our time supporting the legacy systems and every time we try to add a new feature it breaks. Want to ship features faster, but what does that really look like?
  10. You’re in the midst of failure, so you’re already firefighting. How much time and bandwidth do you have for the heavy planning necessary to pull off a successful rewrite?
  11. If it’s so bad you need to rewrite it, how well do you know what it’s doing now? Lots of accumulated fixes, production hardening, and stability gained through the virtue of it being in prod for a long time The customer base has (presumably) grown, or grown used to the site working as well as it does, and won’t necessarily tolerate regressions We did a couple-day hackathon to try to “rewrite” our site, and the team left it thinking “oh yeah, we can totally do this” But they forgot about pretty much every edge case of the site All of the administrative tools Performance Credits Gift cards And on and on and on… The first bits seem easy because they are obvious, but it’s all the things that exist only in the head of your PM that has been there since the beginning, that you have to worry about
  12. If you create or modify data, you need to reconcile the new data with the old data BTW, most modern companies have analytics teams that probably rely heavily on the structure of the data as it exists right now I’ve never had a project involving data that hasn’t been a fairly difficult and painful migration.
  13. You alone are probably not enough If you’re going to change your software, what standards need to change? What new expertise do you need that you don’t have? What does the existing team need to learn to be successful? Do you need more ops? The team on the ground is responsible for the mess you’re in now The experts may be spending more time supporting the old stuff than paying attention to the new stuff, so then what? Even more unknown unknowns
  14. So many “quick” fixes that are not
  15. Trying to do too much at once Rewriting rescal Billed as 6 weeks of 1-2 developers Ended up being closer to 5 months with a whole team working a death march at the end Why? Because we changed the schema at the same time that we did the migration
  16. Reduces thinking up front, increases complexity and likelihood of failing at the end
  17. Easy to undervalue tooling and support of a huge community Languages and frameworks also improve over years of production hardening Choose for the next several years, not the next several months Choosing for vanity reasons, recruiting, etc, is a very risky proposition We chose the original Play framework. Even at the time we chose it the community was moving to a new version, still in beta, that was being written in Scala. Now it is one of our bigger pieces of technical debt that everyone really wants to rewrite.
  18. As the right software might bring you life, the wrong software can take it. We chose the original Play framework. Even at the time we chose it the community was moving to a new version, still in beta, that was being written in Scala. Now it is one of our bigger pieces of technical debt that everyone really wants to rewrite.
  19. This is a generic problem of software engineering. Everyone will probably do this at least once, if not several times throughout their career. As such, apply principles to the problem to make sure you’re on the right track.
  20. Sustainable rewrite looks like firefighting, as I said earlier. So identify the worst fires first, and attack them.
  21. Maybe you stop all progress for a while, and tackle your biggest problem areas. We actually got pretty far with just some database improvements before we started our rewrite. If nothing else, this can help keep the old system in a stable place while you have time to build out the new thing.
  22. Don’t split up your knowledge base. More languages means fewer people that really understand what is going on. Maybe there’s a better framework you could be using. Much easier to salvage code and knowledge when you aren’t changing languages.
  23. We rewrote data by data and function by function, creating java logic, hollowing out Drupal, and then finally moving the client layer into Ruby The key thing that allowed our rewrite to be successful Also allowed us to interleave features in the process If you must rewrite, this is absolutely the way to go. Generally the best way to do ANY project anyway. I did many things wrong with my rewrite, but this is one of the things I did right, and was probably the most important keyto success.
  24. Rewriting costs a lot of political capital, and may cost you your job if you are not careful.
  25. Cultivate dissent, get other opinions from your most skeptical team members, friends
  26. Hockeystick of infrastructure cost Flatline of scalability, ability to add engineers Big Scary Graphs that will change when you successfully complete the rewrite
  27. Your team is going to be the ones working their asses off for possibly years to make this happen They need to be fully on board They need to have thought through the implications and understand clearly the goals
  28. This can go on forever if you let it. When do you declare victory?
  29. uncover unstated assumptions and also helped catch compatibility problems If you’re rewriting the backend logic, a smoketest of user-facing functionality can be helpful to get a sense of what you’re actually going to need to do
  30. Those same Big Scary Graphs should change when you successfully complete the rewrite If you aren’t measuring them up front, it is hard to ensure that the rewrite is actually improving anything. Might just be creating code that is only better for the people who rewrote it. This is VERY true for a tech debt rewrite.
  31. When are we cutting over? Will we dual write? Even if we aren’t changing the data structure, how do you really make sure the new system is writing the right thing? If you are changing the data model, how do you map the old to the new? Are you going to backfill the new data? Will you run both in parallel?
  32. No one likes to hear that the system they shed blood, sweat and tears over is crap
  33. A business person that might have been able to go to a dev and have them add something real quick now has to go through a process
  34. More ops if you go scalable More people to support new languages
  35. More ops if you go scalable More people to support new languages Teams may become silos
  36. Too much abstraction to deal with overly tight coupling We created “swimlanes” for a scalability problem we didn’t have, which made our deployment process incredibly complex You can’t boil the ocean, but you can cause global warming
  37. ERIC: Goals: high volume traffic, fault isolation, fault tolerance, geodiversity. Make sure to mention not just syncing submodules and deploying, but separate Git repos, separate tags, etc, repeated over every environment (stage, production). Devs would write code in isolation for long periods of time before merging to master to avoid deploying.
  38. There’s always a fire somewhere We declared “Done” when the interactive core customer-facing pages were out of drupal But still had and still have a ton of admin pages to be rewritten Now my devs want to rewrite off of Play
  39. Probably not twice as long, but longer
  40. Scale to a load greater than twice your current load, or enable changes that will support that load. Allow new features and products more easily. Allow faster developer productivity. Think about how to avoid the “optimization corner” where we had started to trade off readability and flexibility of the codebase for performance and efficiency. Think about more than just the code, the data storage and network can also cause load bottlenecks, will this address them?
  41. Remember that the new system, while it should last longer than the last one, won’t last forever But you probably need some additional abstractions Loose coupling is great but needs documented standards or it becomes incredibly difficult to use APIs and middleware are both great, but if you start talking REST to services but don’t follow RESTful standards, it is confusing for new devs. This was a big mistake that we made with earlier systems, along with not adopting standard clients or decent documentation. Makes a distributed SOA system much harder to maintain. Possibly middleware Related logic in one place Uniform ways to do concurrency and network calls