Refactoring – Basics for Management

10 Mins Read

Refactoring – Basics for Management

Refactoring is the process of restructuring existing code to improve the design, structure, and/or implementation of the software while preserving its functionality.

Always leave the code behind in a better state than you found it.

Robert C. Martin

The Usual Process

Over the last few years while working in the role of Software Developer and eventually leading the team of software developers I got the chance of working on multiple varied sized projects. In each of these project, the life cycle of the project progress something like following –

  1. Business comes up with an idea that can save a million dollars for the company
  2. The highest priority for the business is to release this new idea as a product in the market to get the early feedback resulting in tight deadlines.
  3. Even the earliest prototype project becomes a big project with dozens of features.
  4. The software development team works on these tight deadlines leave behind multiple code-smells and design problems believing that these will be handled in the cooldown period after the big release.
  5. After the big bang release, the priorities changes and the focus changes to other projects and team members are redistributed for the next big idea in some other project
  6. The code is left in the same state in which it was developed and is revisited only when a new feature needs to be introduced.
  7. The business is now in dilemma – The cost of refactoring the codebase for better maintainability does not give any immediate benefits to the business but the new feature development is now taking longer and longer.
  8. Again because of deadlines the new feature development takes precedence over the refactoring the code
  9. The features are not completed within the deadlines and the development process starts slowing down considerably.

The Root Cause

The root cause of this problem is that code refactoring does not have a clear benefit that the management can see right away. And although everyone always talks about writing maintainable code, no Business wants to push the delivery date to accommodate the code -refactoring.

Business usually is forced to agrees on only Major refactoring when the system starts to show some major problems in the production or when the cost of adding new features becomes too high.

The business case for Refactoring

The strenuous responsibility of a tech head in a project is to convince the business to implement the code refactoring changes. Some times, the program managers also favor taking up new features as they add direct value to the customer.

A good tech manager can use the following pointers to convince the management of how the code improvement will benefit them

Consistent on-time delivery for new features

Inconsistent delivery time not only causes issues while doing the resource allocation for a team but also leads to badly planned project roadmap execution.

Usually, the inconsistency of delivery time while adding similar kinds of features in the code is a sign of code smell. This is a very common problem that occurs in almost every system.

Code refactoring will help team to give consistent timelines which can help business to better plan the resource allocation of the team to other projects but also in planning a better road map for the project.

Improvement in the dev cycle time with a reduction in Dev cost

Have your team or Business ever felt that the delivery time can not be justified because the change is should have been a really small change.

 

Reduced Risk of production bugs

explanation

Reduced Risk of dependency on individual developers

explanation

Improved Performance

explanation

Reduced overall Risk

explanation

Software Developer’s point of view

  1. To improve the design of software/application.
  2. To make software easier to understand.
  3. To find bugs
  4. To make the program run faster.
  5. To fix existing legacy database
  6. To support revolutionary development
  7. To provide greater consistency for the user.

References

  1. https://www.cuelogic.com/blog/what-is-refactoring-and-why-is-it-important
  2. https://skelia.com/articles/5-business-benefits-software-reengineering-refactoring/
  3. https://www.infoq.com/news/2010/06/decision-to-refactor/
  4. https://markhneedham.com/blog/2010/06/13/the-refactoring-dilemma/

Share this Insight

Share on linkedin
Share on twitter

Contact Us

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores