16
Cleaning Up Legacy Creating fit and configurable platform Nikolay Novozhilov [email protected] www.novozhilov.co

Cleaning Up Legacy. Creating fit and configurable platform

Embed Size (px)

Citation preview

Page 1: Cleaning Up Legacy. Creating fit and configurable platform

Cleaning Up Legacy Creating fit and configurable platform

Nikolay Novozhilov

[email protected]

www.novozhilov.co

Page 2: Cleaning Up Legacy. Creating fit and configurable platform

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

…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

What is wrong with re-design? (1)

Page 5: Cleaning Up Legacy. Creating fit and configurable platform

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

What is wrong with re-design? (3)

Page 7: Cleaning Up Legacy. Creating fit and configurable platform

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

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

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

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

INSIDE ONE BRICK

Page 12: Cleaning Up Legacy. Creating fit and configurable platform

Don’t ask the user…

• No surveys

• Observations are everything!

Page 13: Cleaning Up Legacy. Creating fit and configurable platform

“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

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

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

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