Re-Writing a Mature Application: How to Succeed
Most people think about new markets and new users, but the fact is that mature products sell to existing customers, plus anyone new. These existing users (a.k.a. the people who keep your company afloat) have habits, expectations and – most importantly – integrations and legacy data. These users expect to continue using a new version similarly to the way they used the previous version. They’ll adjust to UI changes, but they won’t adjust to existing integrations or data being broken.
In addition to great project management and great developers, to successfully re-develop a mature application, I recommend you meet the following terms and conditions:
The application’s features and actions must be well known, well documented, and easily understood by the developers
If the developers don’t know exactly what the feature currently does, how can they redevelop that feature to perform all of the same functions? ‘Nuff said.
The application must not have undocumented features which are regularly exploited by customers
I’ve worked for companies where the employees believed that by refusing to document an unintended (and often dangerous) product feature, they were refusing to condone its existence and use. Well, maybe that’s true. But if you don’t quickly plug up that opening, users will exploit it. Again and again. Soon, they’re relying on it. So, if you develop the new product without this critical, undocumented feature, no one will use your new product.
Existing features must not be re-implemented to work differently, unless differently is defined to be a superset of the previous behavior.
The user can learn a new way to do something. But if he can no longer accomplish something he needs to accomplish, he’ll refuse to use your upgrade. Better isn’t good enough. You need to offer everything you offered before and then some.
The Engineers must be eager and able to refer to the original product’s codebase during the implementation process
No matter how good your documentation is, nothing can speak nuance as clearly as the code. In what order did the rules execute? What happened when no such conditions were found? What were the minimum acceptable data elements? These sorts of questions and many others are best answered in the existing implementation.
Don’t end up with customers who refuse your product. Check out this post from Coding Sanity about “Upgrading” from Vista to Windows XP.

Comments