SlideShare a Scribd company logo
1 of 34
Download to read offline
FlixMobility
Rewrite or Refactor That Is the Question
Vladimir Jovanović
vladimirj.dev
@VladimirWrites
@VladimirWrites
@VladimirWrites
@VladimirWrites
PAINFUL TO WORK ON
SLOW
ONBOARDING
BUGS
SLOW DEVELOPMENT
TODOs
@VladimirWrites
PAINFUL TO WORK ON
SLOW
ONBOARDING
BUGS
SLOW DEVELOPMENT
TODOs
PAINFUL TO WORK ON
SLOW
ONBOARDING
BUGS
SLOW DEVELOPMENT
TODOs
@VladimirWrites
PAINFUL TO WORK ON
SLOW
ONBOARDING
BUGS
SLOW DEVELOPMENT
TODOs
PAINFUL TO WORK ON
SLOW
ONBOARDING
BUGS
SLOW DEVELOPMENT
TODOs
OBJECTIVE-C
@VladimirWrites
• Founded in 2013 in Germany
• It expanded rapidly in the EU
market
• 2018 – started operating in the
US
• Provides:
• network planning
• marketing
• pricing
• quality management
• and customer service to our
partner companies
@VladimirWrites
In 7 figures
>10,000
Drivers @partners
Countries
30 >2,500
Destinations
>400,000
Daily connections
Total passengers
>100m >500
Network partnersPlatform employees
>3000
@VladimirWrites
In 7 figures
>10,000
Drivers @partners
Countries
30 >2,500
Destinations
>400,000
Daily connections
Total passengers
>100m >500
Network partnersPlatform employees
>3000
CORONA
@VladimirWrites
@VladimirWrites
@VladimirWrites
All startup companies spend their first
years creating legacy code
And there is nothing wrong with it
@VladimirWrites
@VladimirWrites
@VladimirWrites
@VladimirWrites
REFACTOR REWRITE
@VladimirWrites
WE ARE THE SAME! OBJECTIVE-C
@VladimirWrites
6 months
Feature-freeze
Swift
Plan
@VladimirWrites
6 months
Feature-freeze
Swift
Plan
16 months
New features in
the old app
Features cut out
Objective-Cadded
@VladimirWrites
45+ modules
70% Kotlin
Trunk based
developmentRefactoring …
@VladimirWrites
Cons:
A lot of planning
No new features
No direct benefit to the
customers
Some features are lost
It takes longer than
expected
Huge risk
Pros:
Greenfield project
New technologies
Clean codebase
Pros:
Greenfield project
New technologies
Clean codebase
Rewrite
@VladimirWrites
Cons:
Painfully slow
Requires careful planning
Hard for developers
Refactoring
Pros:
Constant value
Not losing knowledge
Lower risk
Continuous user testing
@VladimirWrites
The total cost of refactoring is always
higher than doing a complete rewrite
but the impact on the organisation
is usually much smaller
@VladimirWrites
What should YOU do?
@VladimirWrites
It’s harder to read code than to write it
but it’s a bit easier to read it if you had written it
@VladimirWrites
I don’t like
the code style
It uses Framework
and not Framework
Java Sux!
I don’t understand
the codebase
@VladimirWrites
@VladimirWrites
NO
Is the codebase really that bad?
YES
REFACTOR
@VladimirWrites
YES
Will there be new features?
NO
REFACTOR
@VladimirWrites
YES
Do you need more than 6 months?
NO
REFACTOR
@VladimirWrites
Can I rewrite the app now?
YES, BUT
THANK
YOU!
@VladimirWrites
Credits:
Articles:
• https://www.skcript.com/svr/rewrite-your-app-from-scratch/
• https://dev.to/rhymes/a-big-rewrite-5gl5
• https://daedtech.com/rewrite-or-refactor/
• https://gggritso.com/legacy-code
• https://ovid.github.io/articles/a-simple-way-to-fix-legacy-code.html
• https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
Images:
• https://www.publicdomainpictures.net/en/view-
image.php?image=67199&picture=cooked-fresh-spaghetti
• https://emojipedia.org
@VladimirWrites
Vladimir Jovanović
vladimirj.dev
@VladimirWrites www.slideshare.net/VladimirWrites
QUESTIONS?

More Related Content

Similar to Rewrite or Refactor: Should You Rewrite or Refactor Legacy Code

MP - Gridberry brief - 2016 V1.0
MP - Gridberry brief - 2016 V1.0MP - Gridberry brief - 2016 V1.0
MP - Gridberry brief - 2016 V1.0Mohammad Ereiqat
 
Brandwatch - NOAH15 London
Brandwatch - NOAH15 LondonBrandwatch - NOAH15 London
Brandwatch - NOAH15 LondonNOAH Advisors
 
Sales Recruitment Missteps and Mends
Sales Recruitment Missteps and MendsSales Recruitment Missteps and Mends
Sales Recruitment Missteps and MendsWilsonHCG
 
Best of the Web 2015 Awards
Best of the Web 2015 AwardsBest of the Web 2015 Awards
Best of the Web 2015 AwardsDynatrace
 
Facetime with an SEO Expert - Webmarketing123 webinar
Facetime with an SEO Expert - Webmarketing123 webinarFacetime with an SEO Expert - Webmarketing123 webinar
Facetime with an SEO Expert - Webmarketing123 webinarDemandWave
 
Introduction to BOT:Build, Operate and Transfer Offshoring
Introduction to BOT:Build, Operate and Transfer OffshoringIntroduction to BOT:Build, Operate and Transfer Offshoring
Introduction to BOT:Build, Operate and Transfer Offshoringewinterbottom
 
Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...
Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...
Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...Brandwatch
 
Marketing and Sales together at last
Marketing and Sales together at lastMarketing and Sales together at last
Marketing and Sales together at lastOSSCube
 
five one two Digital Limited - company credentials pack
five one two Digital Limited - company credentials packfive one two Digital Limited - company credentials pack
five one two Digital Limited - company credentials packChris Goodall
 
Success of foreign investment attraction by outsource/service companies.
Success of foreign investment attraction by outsource/service companies.Success of foreign investment attraction by outsource/service companies.
Success of foreign investment attraction by outsource/service companies.ITEM
 
04 A-Z of Fraud & Cybercrime (Workshop)
04   A-Z of Fraud & Cybercrime (Workshop)04   A-Z of Fraud & Cybercrime (Workshop)
04 A-Z of Fraud & Cybercrime (Workshop)#TheFraudTube
 
Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...
Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...
Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...Mike Morsch
 
How Deloitte Approaches Global Employer Branding
How Deloitte Approaches Global Employer BrandingHow Deloitte Approaches Global Employer Branding
How Deloitte Approaches Global Employer BrandingGlassdoor
 
Forrester bd webinar 6 Nov 2013
Forrester bd webinar 6 Nov 2013 Forrester bd webinar 6 Nov 2013
Forrester bd webinar 6 Nov 2013 Peter O'Neill
 
NS software product development
NS software product developmentNS software product development
NS software product developmentNet Solutions
 
How to use Customer Success to Drive Revenue Growth Through Up-Sells
How to use Customer Success to Drive Revenue Growth Through Up-SellsHow to use Customer Success to Drive Revenue Growth Through Up-Sells
How to use Customer Success to Drive Revenue Growth Through Up-SellsGainsight
 
Zero2Ten Corporate Overview 2014
Zero2Ten Corporate Overview 2014Zero2Ten Corporate Overview 2014
Zero2Ten Corporate Overview 2014Zero2Ten
 
Continuous Delivery: the Strongest Link in Your Value Chain
Continuous Delivery: the Strongest Link in Your Value ChainContinuous Delivery: the Strongest Link in Your Value Chain
Continuous Delivery: the Strongest Link in Your Value ChainCA Technologies
 

Similar to Rewrite or Refactor: Should You Rewrite or Refactor Legacy Code (20)

MP - Gridberry brief - 2016 V1.0
MP - Gridberry brief - 2016 V1.0MP - Gridberry brief - 2016 V1.0
MP - Gridberry brief - 2016 V1.0
 
Brandwatch - NOAH15 London
Brandwatch - NOAH15 LondonBrandwatch - NOAH15 London
Brandwatch - NOAH15 London
 
The WordStream Advisor Tour
The WordStream Advisor TourThe WordStream Advisor Tour
The WordStream Advisor Tour
 
Sales Recruitment Missteps and Mends
Sales Recruitment Missteps and MendsSales Recruitment Missteps and Mends
Sales Recruitment Missteps and Mends
 
Best of the Web 2015 Awards
Best of the Web 2015 AwardsBest of the Web 2015 Awards
Best of the Web 2015 Awards
 
Facetime with an SEO Expert - Webmarketing123 webinar
Facetime with an SEO Expert - Webmarketing123 webinarFacetime with an SEO Expert - Webmarketing123 webinar
Facetime with an SEO Expert - Webmarketing123 webinar
 
Introduction to BOT:Build, Operate and Transfer Offshoring
Introduction to BOT:Build, Operate and Transfer OffshoringIntroduction to BOT:Build, Operate and Transfer Offshoring
Introduction to BOT:Build, Operate and Transfer Offshoring
 
Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...
Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...
Creating a Social Enterprise: Segmentation’s Critical Role in Uncovering Soci...
 
Marketing and Sales together at last
Marketing and Sales together at lastMarketing and Sales together at last
Marketing and Sales together at last
 
five one two Digital Limited - company credentials pack
five one two Digital Limited - company credentials packfive one two Digital Limited - company credentials pack
five one two Digital Limited - company credentials pack
 
Gvmr credentials
Gvmr credentialsGvmr credentials
Gvmr credentials
 
Success of foreign investment attraction by outsource/service companies.
Success of foreign investment attraction by outsource/service companies.Success of foreign investment attraction by outsource/service companies.
Success of foreign investment attraction by outsource/service companies.
 
04 A-Z of Fraud & Cybercrime (Workshop)
04   A-Z of Fraud & Cybercrime (Workshop)04   A-Z of Fraud & Cybercrime (Workshop)
04 A-Z of Fraud & Cybercrime (Workshop)
 
Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...
Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...
Mike Morsch - Gartner Supply Chain Peer Forum Presentation on Transforming Fu...
 
How Deloitte Approaches Global Employer Branding
How Deloitte Approaches Global Employer BrandingHow Deloitte Approaches Global Employer Branding
How Deloitte Approaches Global Employer Branding
 
Forrester bd webinar 6 Nov 2013
Forrester bd webinar 6 Nov 2013 Forrester bd webinar 6 Nov 2013
Forrester bd webinar 6 Nov 2013
 
NS software product development
NS software product developmentNS software product development
NS software product development
 
How to use Customer Success to Drive Revenue Growth Through Up-Sells
How to use Customer Success to Drive Revenue Growth Through Up-SellsHow to use Customer Success to Drive Revenue Growth Through Up-Sells
How to use Customer Success to Drive Revenue Growth Through Up-Sells
 
Zero2Ten Corporate Overview 2014
Zero2Ten Corporate Overview 2014Zero2Ten Corporate Overview 2014
Zero2Ten Corporate Overview 2014
 
Continuous Delivery: the Strongest Link in Your Value Chain
Continuous Delivery: the Strongest Link in Your Value ChainContinuous Delivery: the Strongest Link in Your Value Chain
Continuous Delivery: the Strongest Link in Your Value Chain
 

Recently uploaded

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 

Recently uploaded (20)

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 

Rewrite or Refactor: Should You Rewrite or Refactor Legacy Code