MODERNIZING THROUGH
EVOLUTION NOT REVOLUTION
GUUST NIEUWENHUIS
Slide 2
Slide 2 text
ABOUT ME
Guust Nieuwenhuis
Managing Partner @ We Are North
Full Stack Web Wizard
Masa CMS
Born in The Netherlands
Living in Belgium
Soccer coach
Mountainbiker
Slide 3
Slide 3 text
MODERNIZING THROUGH
EVOLUTION NOT REVOLUTION
GUUST NIEUWENHUIS
Slide 4
Slide 4 text
10 YEARS
Average software lifetime
Slide 5
Slide 5 text
Spaghetti code
Outdated framework
Unsupported libraries
Deprecated integrations
No tests
Not documented
Difficult to develop
Hard to maintain
Slide 6
Slide 6 text
What’s next?
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
Flights booking engine
Performance issues
Decided to rewrite from the ground up
Kept adding new functionality to the “old” engine
Development of the “new” engine trying to catch up
Financial disaster
Slide 9
Slide 9 text
REWRITE CODE FROM SCRATCH
IS THE SINGLE WORST STRATEGIC
MISTAKE THAT ANY SOFTWARE
COMPANY CAN MAKE
Joel Spolsky
Co-founder Trello and Stack Over
fl
ow
Slide 10
Slide 10 text
A feeling isn’t sufficient
Rewrite delays the release of the project
More bugs and less functionality
Expensive
No guaranteed success
Slide 11
Slide 11 text
So, what’s next?
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
12+ years old web application
New separate API for mobile app
New report builder module
Integrated new module in old application
Sharing the database
Feature flags
Slide 14
Slide 14 text
12+ years old web application
New separate API for mobile app
New report builder module
Integrated new module in old
application
Sharing the database
Feature flags
Slide 15
Slide 15 text
12+ years old web application
New separate API for mobile app
New report builder module
Integrated new module in old
application
Sharing the database
Feature flags
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
25+ years old client-server app
Need to move to “The Cloud”
New module developed
Domain Driven Design
Microservices architecture
Events between “old” and “new”
Slide 18
Slide 18 text
25+ years old client-server app
Need to move to “The Cloud”
New module developed
Domain Driven Design
Microservices architecture
Events between “old” and “new”