At some point, you’ll start to wonder…
“Should we add this new feature to our current software, or is it time for a new product?”
First, let’s be clear about what I mean when I say new product. I’m not talking about re-creating an existing product as-is. You should never “re-write the product from scratch.” If you have a functional software application that’s making customers happy, it’s almost always the best decision to keep incrementally enhancing that product rather than starting a re-write. Your product may have some warts and your developers may say, “The code is a mess!” Resist the urge to re-write the product. Instead, spend your time creating new software that solves more of your customers’ business problems rather than considering app modernization options.
Even with this in mind, the update vs. create question can be difficult since agile methodologies make software development so flexible and open-ended. Conceivably, you could just keep packing on new features, upgrading capacity, and improving performance indefinitely.
But when should you stop upgrading and start building something new?
Your own answer will depend on your situation. There are many factors when considering your app modernization options.
Questions to Ask Regarding Your App Modernization Options
- Do we need to shift to the cloud? The biggest reason for creating a new software product is when you’re moving your application from the desktop to the web. If you want to take advantage of the cloud, or other web technologies, you will need to create a new product from the ground up. But even then, you won’t be “starting from scratch.” You’ll be able to leverage the work of your existing product in many ways, from using existing code as-is to utilizing what you’ve learned from your customers about the right workflows, algorithms, calculations, etc. And, of course, you can continue selling your existing product while the cloud version is being built.
- Is the product “done?” It could take several years, but at some point, your product will reach a plateau where it works, and works well. At that point, you may want to put the product into maintenance mode, fix bugs as they come up, and perhaps make some minor improvements. That’s also when you should shift your software development resources back into creating new products – perhaps solving new or different problems for your customers.
- Are there opportunities for faster innovation? Sometimes your team will come up with innovative ideas, but executing them would be difficult with your current codebase. For example, if you have a Windows desktop product, you may find it difficult to impossible to simply wave a wand and provide direct access to the data for a tablet or smartphone application. But you could expose some of that data via the cloud to enable browser-based executive dashboards. Or you could create a mobile app that reaches into existing databases via cloud-hosted services to provide value to tablet and smartphone users, without changing the core product at all.
- Are the new features intended for existing customers or to attract new ones? Often, companies have built huge enterprise software packages that do too much for less-sophisticated customers. If your goal is to expand existing software in order to appeal to a whole new customer segment, you need to ask yourself: can we do this with our existing product? Or would it make more sense to go to market with two completely separate software products, each one targeted at a specific segment?
- Can you meet your current business strategy with the existing software? This may or may not be a simple up or downvote. If you can meet your strategy without building a new product, then most likely you’ll want to do that. If your software doesn’t support what you need to accomplish, however, it makes the decision to create a new solution easier. How might this happen? You could have built a product you thought was going to take off in the marketplace, but it fell flat with low demand and poor market acceptance. If you can’t salvage its performance (or reputation), it might be time to pivot and create a new product instead.
- What resources and timeframes would be expected for each option? Time and availability of resources can be a huge constraint when making your upgrade vs. extend decision.
- Where is your existing software product in its life cycle? Is this a relatively new product built on a modern platform? Or a customized legacy system that would need replacing soon anyway? What were your longevity expectations for it? And is there already a next-generation replacement plan in place? While you always want to avoid “re-writing” to the greatest extent possible, sometimes technology changes will force your hand. If you developed an app that only runs on a Blackberry, for example, you wouldn’t have much choice but to create a new product.
- What new technologies would you use if you redesigned it now? You might already have an idea of how you’d like to build the new software. You’ll want to consider what it would take to support those new technologies in your organization and whether you have the expertise available or need to hire it. Sometimes companies choose to upgrade simply because it requires fewer changes in the organization.
- Will the new features fit smoothly into the UI and workflow of the existing product? Sometimes new functionality might not be much of a technical challenge for your team, but implementing it would wreak havoc with your UI and workflow. In these cases, assess whether it’s worth making any sweeping alterations to the existing product, and how your existing customers would react to it. If your new ideas don’t fit – either conceptually or substantively – into the current product, consider creating a new app with just that set of features. Combining this new product with the older one could even become the start of a “product suite.”
Making Your Decision
As you can see from the questions above, the decision to create or extend is not so easily made. Hopefully, answering these questions will help you to better consider your app modernization options. If not, Ascendle is here to help. Our development teams specialize in designing and building new commercial software products. Contact us today to schedule a consultation to learn how to upgrade your existing software with mobile and cloud-based features.
Editor’s Note: This post was originally published on July 17, 2017, and has been updated for accuracy and comprehensiveness.