The Dreaded ‘R’s: Refactor, Re-write, Re-build by Sally Brogan "Product people - Product managers, product designers, UX designers, UX researchers, Business analysts, developers, makers & entrepreneurs May 05 2020 True mtpengage manchester, rebuilding legacy, Mind the Product Mind the Product Ltd 778 Product Management 3.112

The Dreaded ‘R’s: Refactor, Re-write, Re-build by Sally Brogan

BY ON

Does plaster fall off the walls every time you paint your house? Do you have to walk through the kitchen to get to the shower? Do you have enough bedrooms for your family? In this MTP Engage Manchester talk, Sally Brogan uses many home improvement illustrations to help frame the refactor versus new build decision faced by legacy products, with tips on how to build a business case and get management buy-in.

Key Points:

  • Don’t be afraid of the three Rs: Refactor, Rewrite, Rebuild
  • Timing is key
  • Use data (including scary diagrams!) to get buy-in for your change
  • Balance the scope of the change

As product people, we’re filled with dread when developers use the phrase “we need to refactor this area of the code and I want to use XYZ new technology to achieve that”. Developers love using the latest technology and always want to get everything right, improving the tech stack and the code.

Here, with a 5-step guide, Sally takes us through some actions to remove the dread from these words, sprinkled with illustrations from own experiences of house building and home improvements. The example is of an entire system, but the advice applies equally to individual features.

1. Spotting the Signs

Sally talked about her experience of working at Big Sofa in a team continually building new features until she met someone at a Mind the Product event who challenged her thinking. They encouraged her to think about product using questions around housing analogies. For example:

  • Is your house drafty and cold? = Is there instability? Does your server meltdown?
  • Do tiles fall off the roof? = Do you get lots of bugs?
  • Do you need to walk through the kitchen to take a shower? = How bad is the user experience? Do you get lots of complaints?
  • Should you upgrade your double glazing? = New technology is always being introduced. Are you on top of upgrades or thinking about the technologies in use?
  • Does the plaster drop off the walls every time you paint? = Is your pace of development really slow?
  • Are there enough bedrooms? Can you accommodate a growing family? = Can you grow the number of users and handle the projected increase in volumes in line with business objectives?

2. The Right Time

Choosing the right time to refactor is important. Questions to ask yourself:

  • Vision – Do you know what your dream house looks like? How do you want your system to look in six months, in three years and in five years?
  • Team – Do you have a good builder? You need to ensure you have the right team in place before embarking on a large refactor project.
  • Money – Do you have the money? This is the most important consideration. You need to compare the trade-offs of refactoring and not building any new features compared to building those new features which could drive new revenue.

3. Get Buy-in

You’ll need to build a strong business case to get buy-in for any proposed change. Using the following data will strengthen your business case:

  • Bugs and Support Statistics
  • Product Data
  • User Feedback
  • Your Current Rate of Development
  •  A good indicator of a need to refactor is when estimates often don’t match actual time taken due to the system being difficult to work in
  • Scary Diagrams and how they can be simplified by a refactor

Sally showed an example of an infrastructure and database diagram, which clearly highlighted the area where the team had started prototyping and the number of reported bugs had reduced. This was a great visual representation of the benefits of the change, just like your house floor plan.

Sally Brogan speaking at MTP Engage Manchester.

4. Approaches

There are three possible approaches:

Build a New House

Leave the old house alone and start with a nice empty clean space. This approach incurs a high cost, as the old system still need to be maintained.

Take the Middle Ground

Rebuild large parts of the system but in a separate space. This approach is always tempting as there is no clean up later. Be aware that you may be limited by the old platform and there will be dependencies between the old system and your new development.

Make Do and Mend

Sometimes you may have no choice but to patch up the old system. You may just have to stay in the house you’ve got if there is not a lot of money.

5. The Right Balance

Keep in mind what you are trying to achieve. Consider the luxuries when redeveloping your home; a wine fridge is probably ok, but a home cinema may be too extravagant. Consider what is being used and what will add value and get rid of the rest.