Evolving Legacy Software and Legacy Minds
Presentation given at Domain-Driven Design Exchange at SkillsMatter in London (2017) (https://skillsmatter.com/conferences/8231-ddd-exchange-2017) and at Build Stuff Summer 2017 in Mallorca Spain (http://buildstuff.lt/summer/)
Tips for helping legacy developers prepare their minds to rewrite their legacy software using modern practices and patterns. Guidance and strategies for consultants and team members.
6. My favorite computer book is the
book by Eric Evans:
"Domain-Driven Design".
It's like poetry I think.
It's not just great content, but you
can read it many times and it
reads like poetry.
-Jimmy Nilssoninfoq.com/interviews/jimmy-nilsson-linq
16. Re-writing a legacy app
Want new app to benefit from modern practices
Recognize they are stuck in old thinking
Already have buy-in from management
MY TYPICAL CLIENTS
Already have buy-in from management
17. I think we went through a pretty
amazing process.
I would be happy if others could
learn from it.
- “Client B”
“
”
18. Day of Review of their problem/domain/existing apps
Multiple Days of Mob-Style [Refactoring] [Modeling]
Review and Plan for Future
..or something totally different, defined by the challenge
Typical Consulting Engagement Overview
19. Breaking down problems into digestible problems
Gaining new perspective on their own problem domain
Organizing Flow of Data
What I Try to Achieve While On Site
25. “Guidance”
“Ideas that helped me”
“Learning some ideas will lead
to understanding others”
“Rules”
“Every programmer must know”
“DDD is big. Buckle up!”
“Rules”
“Every programmer must know”
“DDD is big. Buckle up!”
32. Everything is related!
We have to call these methods!
You’re breaking everything!!!!
BUT OMG!
You still have FKs to pass around
DDD has proven patterns for interaction
My favorite “broken arm” analogy
33. We need Customer everywhere!
We’ll be duplicating everything!
BUT OMG!
34. Customer is a great domain type to explore
Sales Orders
Customer
Management
Inventory
Shipping
Human
Resources
Customer
Customer
Customer
Service
Customer
Customer
49. Database is not the model
Database table names are not entity names
Forget the database
Forget the database
Focus on the domain
Forget the database. We aren’t inserting new clients.
What happens if a debtor moves to a new company
What happens when a debtor’s debt is paid off?