Cleaning Up Legacy. Creating fit and configurable platform
-
Upload
nikolay-novozhilov -
Category
Software
-
view
187 -
download
3
Transcript of Cleaning Up Legacy. Creating fit and configurable platform
![Page 1: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/1.jpg)
Cleaning Up Legacy Creating fit and configurable platform
Nikolay Novozhilov
www.novozhilov.co
![Page 2: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/2.jpg)
Legacy…Typical situation for a start-up who “survived” A and B rounds of financing:
• No refactoring – ship as fast as you can
• Employees churn - a lot of code is “a black box”…in PHP
• Current product was build on top of the old one during the last pivot
• Data is stored in several databases…one of them is human-copypaste-machine
![Page 3: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/3.jpg)
…what do we do?
• Old API, new API, API for the product that doesn’t exist anymore…
• JIRA is full of bugs and no time for new features
• More developers close more bugs and introduce more new ones
Let’s “redesign” everything!
![Page 4: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/4.jpg)
What is wrong with re-design? (1)
![Page 5: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/5.jpg)
What is wrong with re-design? (2)
• Every time you change CTO you end-up with re-design
• Real need, not just migration from Java to Scala or from MySQL to Mongo
![Page 6: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/6.jpg)
What is wrong with re-design? (3)
![Page 7: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/7.jpg)
What is wrong with re-design?
• “Lets try building a new thing from scratch and move there”. Bad approach!
• Old code is result of long experience
• A good spec is better than commented code. It answers the question why we did it this way and what else we tried.
![Page 8: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/8.jpg)
Sharpen the axeGive me six hours to chop down a tree and I will spend the first
four sharpening the axe
Abraham Lincoln
• Stop bug fixing. Good solution has priority over fast solution
• What about super-urgentbugs? They are not!
• Everything is negotiable
![Page 9: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/9.jpg)
Divide and Conquer
• Separate and rewrite one by one…
• Divide by functions, not systems
• Gravitation law: Front-end is easy, database is hard
![Page 10: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/10.jpg)
Warranty
• Fix one area (with all bugs included) and put a warranty on it
• Move everybody to new system and fix all bugs real-time
• Then do the next piece
![Page 11: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/11.jpg)
INSIDE ONE BRICK
![Page 12: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/12.jpg)
Don’t ask the user…
• No surveys
• Observations are everything!
![Page 13: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/13.jpg)
“Give me final requirements…”
• You don’t know everything upfront, so what is the choice?
– Ask for maximum you could imagine
– Ask for minimum you need
• No matter what you choose - you end up asking what can’t be done at all
• Platform thinking. If you found what feature to add don’t just add! Make process of adding simple!!!
• How to sell it – “we never come to you again”
![Page 14: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/14.jpg)
Hit the user fast
• MVP is good. But you can do faster.
• Fake the solution!
• First goal is research, not final design
• For internal products – make developer explain to users
![Page 15: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/15.jpg)
Shipped is not done
• Not done after deployment. Maybe 50% done.
• LR effect tracking. How many of your A/B tests were good only for the 1st
week?
![Page 16: Cleaning Up Legacy. Creating fit and configurable platform](https://reader030.fdocuments.us/reader030/viewer/2022032714/55aab2d11a28abcf5b8b46ee/html5/thumbnails/16.jpg)
DONE!
• Stop bug fixing
• Divide and Conquer
• Fix one area and put a warranty on it
• Don’t ask the user
• Platform thinking, not “final requirements”
• Hit the user fast
• Shipped is not done