Your product is ready for a rewrite if….

July 5, 2018

8 minutes

Table of Contents

The past few years have been witness to dramatic shifts in the software business. Globalization, new technologies, increased computing power, the rise of the digital economy and the expanding competitive landscape demands product companies to meet the ever-changing needs of today’s consumer. Meeting the evolving needs of the consumers of today becomes imperative for product companies to thrive in this competitive landscape in the age of digital transformation to drive product growth and profitability. After all, we are in the era of products that are future-ready and designed for evolution. With all the entropy that surrounds us, it can be tricky to identify if a product needs a rewrite. While it might be tempting to use the “why to fix it when it’s not broken” argument, isn’t neglecting product innovation a death knell in today’s fast-moving economy?

Keeping an eye on the future, here are a few compelling reasons to identify if you need to review your product status and determine if it is time for a version upgrade to take your product to the next level.

1. Customer satisfaction

The customer of today demands fast and robust products. Even in the enterprise space, software products have to offer consumer-grade experiences now. They have to be easy to use and bring several “eureka” or “aha” moments in the consumer journey. If your product is failing to do so, then it is going to impact the customer experience negatively. When you see sagging customer expectations and rising customer frustrations regarding your products, it’s time to head back to the drawing board and start rewrite process.

2. Technology changes

In the age of prolific technology change, having a product built on redundant technology can lead to failure. While the escalating pace of technological change can sometimes be hard to keep pace with, using obsolete or sometimes even legacy technology can impede success. Newer technologies give product companies the bandwidth to disrupt, innovate and bring in new features with ease. It also becomes much harder to provide support if you are leveraging old technology. Along with this is the uphill task of finding people proficient in legacy technologies. If your current technology makes any redesign a herculean task, makes product updates hard to execute, and does not provide the support you and your customers need, then you need to look at a product overhaul.

3. Engineering landmines

Product companies of today have to be driven by innovation and continuously watch out for disruption. They have to stay in step and sometimes even ahead of the curve when it comes to mapping customer expectations. However, as a product company you find it challenging to move product development to match the speed of demand, then you are giving the customers a chance to question your product relevance. Product companies have to focus on building products that lend themselves readily to evolution…this means not only having the capability to develop, test and add product updates and features faster but also ensure that not spending too much time in production.

4. Complex spaghetti code

Development methodologies such as DevOps and Agile were designed to enable fast development of reliable code and consequently build robust and error-free products. Old programming languages are susceptible to spaghetti code. Spaghetti code is a colloquial term used to define a tangled web of programming source code. This kind of code is tough to control. In this event, it becomes intensely hard to manage program controls as it tends to jump from one place to another. This code also makes the program logic difficult to follow. Product maintenance consequently becomes very challenging when it comes to spaghetti code. With the rise of structured programming languages such as object-oriented programming languages, the prevalence of spaghetti code has reduced. If your development team is struggling with this kind of code considering a product rewrite can be the most sensible thing to do.

5. High maintenance costs

Today’s business environment demands software products that are easily maintainable. Did you know that an average company spends almost 60 to 80 percent of its IT budgets maintaining legacy applications? With companies looking for ways to reduce costs, this comes across as a disproportionate amount to spend on just maintenance. Legacy products ranked very poorly on the maintenance index because of the architecture used and deployed on the hardware and the infrastructure. They also have higher technical debt and hence have high code maintenance costs.

6. Poor integrations

The technologies used by legacy products lack web-enabled APIs that allow interoperability and product integrations with other software providers. This code design can be a big challenge as today the market demands products built for integrations especially over internet infrastructures. Building one-off integrations lead to higher maintenance costs both for the development company and the consumer. Platforming legacy products to leverage the open ecosystem can not only make implementations more cost-effective and easier to deploy but additionally helps in product differentiation making a compelling case for a product rewrite.

7. Outdated architectural concepts

We are in the age of multi-tenant architecture, and if your product still employs a single-tenant architecture model, then it’s time for a rewrite. Legacy applications are anything but agile and do not reflect the manner in which businesses work now. Given the escalating speed of change, frequent updates and deployment and product iterations having a single-tenant architecture is not a feasible model. Products need an architecture that comprises of several moving parts so that a change in one component does not impact the other parts negatively. Additionally, given that we are in the age of the cloud, leveraging its multiple benefits demands a multi-tenant architecture. And before you say it, even if you are not ready to move to the cloud, your users are.

8. Scalability is a challenge

Do you feel that your business needs are going to experience a dynamic upward swing but worry that product will not be able to scale? We know that scalability is a critical factor for businesses today. Those products that cannot scale are relegated to dust sooner than later. Software products today have to incorporate the bandwidth to manage a steep increase in workloads, simultaneous users and transactions with ease. Google estimates that 61% of users will not give an application a second chance if they had a bad experience the first time they used it. While it might be tempting to put scalability aside for speed of development, lack of scalability leads to product unreliability, and that in turn leads to churn.

9. Product maturity

A product might be very successful at launch, but you need to assess if your product has reached saturation in its product lifecycle. Once a product reaches maturity, it will head towards decline if you do not account for a defined upgrade path. If your product has reached maturity and cannot innovate further then, it is time to look at a radical rewrite to regenerate user interest in your product.

10. Poor UX

Consumers today want highly elevated user experiences. It should not be a surprise since the focus on UX has been making itself into the list of essentials of software product development repeatedly for the past two years. If your software product does not offer a seamless user experience or delivers a choppy UX, it’s time to consider a rewrite. These expectations also apply to B2B products and enterprise applications as UX expectations have proliferated into the B2B market as well and the digital natives and millennials using these products want to engage with these software products in the same way as they engage with say Netflix, Snapchat or Amazon.

11. When wrapper does not work

Wrappers are also another alternative to refine products and make them now-ready. This gives organizations the flexibility to take the existing product functionality and present a new API for accessing that functionality by using lightweight bits of code. This approach works for legacy code as it does not involve breaking the existing functionality. It also gives developers the flexibility to modernize the codebase without much effort. Wrappers can be used to give products the new technology upgrade when the cost of migrating a product or a rewrite is prohibitive. However, if the functionality in question cannot be addressed by a wrapper, or if the product needs a complete overhaul in terms of not only the functionality but the process as well, then opting for a rewrite is a good option.

With apologies to the car-classicist’s out there, if you had the option to drive a Tesla vis-à-vis a run down old Ford Mustang, which one would you choose? The same analogy applies to software products as well. In times where options are boundless, product organizations need to make sure that their products are serving the customer of today. Any deviations will only drive your customers into the arms of your competitor. So assess ruthlessly where your product stands and take the product rewrite plunge for a better tomorrow.
It’s fair to assume that there will always be a market for those with the experience and the skills to build software products. However, my view is that the ones that make it big will be those who possess a deep understanding of the product, the customer, and the resources, as well as the passion to reach the final solution. The product will only be as good as those that build it. By that token a company looking to build a great software product will seek great product development engineers –will that be you?

This blog was originally published on Linkedin Go to blog