Sooner or later we have to consider how to change our systems. This situation can come from growth in business, changes in technology (or requirements), or systems that have aged poorly. When we reach the point of deciding on a move we often have to decide on the incremental vs. all-in approach to achieve our goal. There are times when one choice or the other is obvious. However, I have found that we almost always have both of these options available. So let’s look at the risks and rewards commonly available to each decision.
An Incremental Approach
I find this option to be the most popular. In fact, you might be able to rattle off some rewards and a few risks faster than it takes to read this article. Nevertheless, it is helpful to go through the exercise and maybe a few items from either list will be new to your experience.
- The Risk is Reduced: Less change and more options to bail out or adapt.
- Less Time Before Starting: Smaller changes can allow for less upfront planning.
- Time To Bake In: Users have small changes to learn rather than large ones.
- Less to Consider: Small scope of changes means less to worry about with each change cycle.
- Easier to Budget: Tighter range of change and time frames make it easier to budget for changes and cash flow the project.
- Avoid Re-inventing the Wheel: This approach allows pieces of the original system to survive and remain untouched. Thus, business rules and proven validations do not have to be re-created.
- Total Cost is Higher: Overhead for each cycle adds up. Therefore, more testing, deployment, and other phases will be repeated for each incremental change.
- Longer Schedule: Much like the above item, the time to be done with changes is going to further in the future with an incremental approach.
- Legacy Decisions/Constraints of the System: An incremental approach will always be tied to the original system in some way. It does not allow for a fresh start or utterly new thinking.
- System Stability: Regular change can make the system appear unstable to users and might be the reality as repeated touching of the core system offers opportunities for simple mistakes and human error to degrade the system.
- Integrate Changes: No system is static. Changes are required for a variety of reasons, and an incremental approach does not allow us to ignore change requests. Extra effort is needed to manage change requirements and fixes along with the new/improved features being implemented.
An All-In Approach
This is a more courageous decision in almost every case. In fact, this approach often results (directly or indirectly) as one that makes or breaks a job (or career). The rewards are higher when this is correctly executed as there is more freedom to make huge strides. That said, there is a lot to worry about as well. Here are some of the pros and cons of this decision.
- Total Cost is Lower: A significant change requires a lot of testing and deployment work. However, it amounts to fewer cycles and general overhead than an incremental approach.
- Freedom to Innovate: The lack of ties to a legacy system allows us to learn from past successes while avoiding past mistakes. Substantial and meaningful changes can be made in this effort.
- Shorter Time to Completion: There is not a need to run in serial as is needed in the incremental approach. Resources can be poured into the all-in solution. Thus, progress can be made in parallel with the current systems continuing to run.
- More Stability For Users: This approach will result in a significant change when it goes live. However, other than that point in time, the users will experience a stable and reliable system.
- Less Elegant Utilities: A one-time step of significant change means the tools and utilities to do so only need to work once. This is the opposite of the design required to make the same tools work when you know there will be multiple, smaller, executions of them.
- The Risk is Higher: When you make a significant change and choose wrong, it can result in a crippling loss to the company. This can have productivity and financial repercussions.
- More Time Before Starting: Planning and design are needed for the entire system to properly execute the all-in approach. Every little detail needs to be addressed to reduce the risk of a complete failure.
- More significant and Impactful Change: The substantial change of an all-in approach is hard to hide. Often it will require training for the users to help them utilize the new system. Alterations of business rules and procedures are often part of the content for deploying this solution.
- Total Review and Design: The broad scope of changes require the entire system to be reviewed and understood.
- Large Budget: A substantial project like this is harder to estimate and often includes more funding in a short period. Incremental allows us to stretch out costs.
- Re-inventing the Wheel: Often this approach requires core functionality to be rebuilt or re-coded and tested again. This amounts to re-inventing the wheel for business rules and other functions.
As you can see, there is a lot to consider with either approach. The pros and cons balance out more often than we think they do. Therefore, it is worth it to leave both options on the table on at least a periodic basis. This will ensure we avoid knee-jerk reactions to one approach or the other. As always, the more we know, the more we consider, the higher the likelihood of a successful decision.
When you look at the pros and cons of this approach, there are some essential assumptions made. If you take a path that does not follow the premises, then the pros and cons will differ. The “time before starting” and “less to consider” pros, in particular, are impacted by your approach to design. The assumption for incremental changes is that you will plan and design as you go. This may not be the case. Some organizations prefer to create and plan out their entire series of changes up front. While this is a good approach, there are also valid reasons to hold off on a complete design when you are not sure far you want to progress.
Similarly, the time to bake in and system stability items may vary in your experience. There are ways to drag out an incremental approach so that the users do not experience noticeable changes. Instead, they see undergo the changes as occasional enhancements. However, this approach can significantly increase the time to completion and may increase the limits to what can be done (due to ties to the current system).
Finally, let’s look at the re-inventing the wheel item. An incremental approach can do this as well. Typically, an organization will avoid touching the things that “work.” The argument is that there is no reason to put effort into fixing something that is not broken. On the other hand, when a core functionality can be improved, then it may be worth taking on that change at some point. There is also the side effect that can occur where a core and stable piece of functionality is changed or even broken through changing other areas of the application.
It should be clear that the all-in approach, in this case, is deploying all the changes in virtually a single push to production. This can be a large number of changes to an existing solution, replacing one with another system, or starting from scratch. Each of these three options has a very different set of pros and cons along with those mentioned.
An important note about the all-in approach is that the sunk-cost fallacy should always be avoided. There are many cases where companies dismiss an all-in change because they start with the idea of value for the existing solution. Yes, there is knowledge and expertise and even momentum that the current system has. However, if those aspects are all driving you over a cliff then how valuable are they? Along with this, technology is always changing. The options we had a few years ago are not the same today. There are new solutions and standards available that might bring overwhelming value to an original or from-scratch system. It is easy to stay with the momentum we have, but sometimes all that provides us with is false confidence.
The bottom line in considering the pros and cons of these approaches is that your mileage may vary. In order to make these aspects real some intentionality is required. For example, if you want to reduce risk through an incremental approach to change, then each step needs to be examined thoroughly. This examination includes looking for potential side effects and downstream impact. None of these pros or cons are automatic, and the right approach can highlight the pros while reducing the cons.