Changing Core Technologies: Introduction

This is a 3 part series discussing issues around replacing core technology in a software product or software-based service. My intention is to lay out the risks and issues, and illustrate both some of the obvious issues, but also discuss some of things that are overlooked. When I talk about core technology, I am talking about changing things like:

  • The underlying operating system support
  • The hardware the software runs  on
  • Frameworks
  • Messaging fabric and middleware
  • Databases
  • The programming language the system is implemented in

This isn’t a discussion about areas around architecture or design change (although many of the same issues apply), or around upgrades to existing components. This is about fundamental change of underlying technology.

When a system is first built, a number of decisions are made around the technology. Some of the decisions are based on cost, some on available resources (including people who know the technologies) or simply because “it looks cool”. These decisions offer opportunities and benefits, but they also close off certain avenues for your product or service. How many avenues are closed depends on how far down the stack the technology is. Selecting Java, for example, opens up a wide variety of platforms, but tends to limit you to Java-based and Java-enabled technologies. Selecting a particular operating system or hardware platform can be more limiting. If you were to select Windows, then you are limited to Intel-based machines. Selecting Linux would allow the use of Intel or PowerPC.

There are times, though, when there is a significant shift in requirements or the business environment. Perhaps you have a system that was geared to a modest number of users and lower performance targets, and the customers decide that they want orders of magnitude more users and significantly higher throughput. The technologies you selected could limit how far you can scale up, and to go further requires a major change.

As another example, perhaps the vendor you are using is discontinuing a piece of technology, or going out of business altogether. Unless you are comfortable running on unsupported technologies, this too requires you select an alternative and move to it.

The next three parts will discuss the following topics around change:

  1. The Cost of Change, including more than just upfront dollar costs
  2. The Risk of Change, talking about areas like business and technical risk
  3. Cultural Roadblocks that can delay change, or make it difficult to accomplish

Finally, the series will wrap up what has been discussed.