On Adding Features to a Large Existing Application
Designing a new application from scratch is often a much easier job than adding features to a large existing application that has been around for quite a few years. For a given new feature you have to consider how it interacts with all the existing features. How easy is it for an existing user with a huge database to use this feature, does he have to go through thousands of records entering new data? Or can this be done automatically? If an existing feature is close, can it be modified to the new desired functionality? Or will doing so disrupt a number of users, who use this existing feature for some unexpected purpose.
The trade-offs can be complex and will affect different user communities differently. For instance it might be easier to add a field onto the side so you don’t disrupt any functionality existing users may or may not be using. But then you could impose a heavy data conversion cost to users with large databases when they adopt the new users. Plus it can be confusing for new users to have to scratch their heads about the existing feature and whatever it does plus the new feature. When do they use which? Why do they need to fill in two fields for each new record? When new fields get added this year, over time this feature creep can make applications very complex. Keeping control of this with fewer more powerful features can be a major challenge.
There is also the question of making a new feature flexible versus making it easy (or automatic) to just work with no user configuration. If there is configuration, the feature can be quite flexible and provide quite a lot of functionality that is adaptable to different business needs. But the cost now is learning how to do this configuration, and having to actually do it. Ie the feature doesn’t just work out of the box. But when you do this, you have to make a lot of assumptions on what business’s need. Have you made the right decisions? Or have you made the new feature useless, since it doesn’t adapt to the businesses exact needs?
Just some of the fun things that need to be considered as we add new features to our existing applications.