The reincarnation decision
Whether it’s from age, functionality or neglect, all software eventually reaches its end of life. When we approach custom software with a client, we normally will evaluate several factors before deciding whether our engagement will be simple support, light rebuild or even a complete ground up reincarnation. Here are some of the factors we consider:
Cost
Cost is the factor that clients are interested in hearing our thoughts on; But it’s also one of the most difficult things to estimate. We’re firm believers in continuous improvement, but in order to get to a minimum viable product to be able to improve on, sometimes it will cost more to fix an existing app versus starting again from scratch. Our considerations on cost then steer towards:
- Is it going to cost more in the long run to get
to where we want to be if we must tread through an existing legacy application
first? - Knowing what we know now about the necessary
functionality, how difficult would it be to start over? - Is there an opportunity to improve the quality
of all features and the database contents through a ground-up rebuild?
Age
Age is the next factor we look at. This can lead to numerous issues in custom software, as the older an app gets, the higher likelihood that it has somehow been fragmented in some way from the original design and vision.
- When was the app first developed? Who developed
it? - Has it been converted from very early versions
of platform software, like FileMaker version 7 or older? - When was the last time the app received minor and
major updates? Who developed those changes? How were those updates requested
and documented? - Has the software been updated by many developers
over time, or just one?
Functionality
Functionality assessment is an important part of the decision as well. If there are many functions of the software that are not working properly, then it may be an easy choice to start fresh and develop new functions that work. Unused functions can clutter the app and also become dangerous dependencies during future changes.
- Do users frequently complain that functions
don’t work properly? - Do users complain that performance is slow?
- Does analysis
show a lot of items in the UI and schema that are broken? - Is there a lot of functionality that sits there
being unused?
Data
Data is one of the last things we consider, but also the most important. After all, most of the apps we develop have a pretty major database component underlying the interface.
- What are the current backup and record archiving
strategies? - Are there orphaned records in sub tables where
parent records were deleted? - Does the data schema represent performance
minded design (reducing index, calculation and summary fields)? - Are there tables that are not in use (zero
records). - Are there fields that are duplicated, redundant,
poorly named? - When was the last time the app was compacted?
After considering factors like these, it’s time to make the
choice! Sometimes it’s ok to choose to just provide basic support to keep
things up and running. Other times it makes sense to approach a new project.
It’s an exciting prospect that can also make many people nervous. Documenting
and researching a system to make an informed decision on how to proceed is a
great first step.
About the Author
Mike Beargie has been with MainSpring since 2013 and has over 10 years of application development experience. As a developer, he creates solutions for clients in a wide variety of sectors across the U.S. and abroad. Prior to working at MainSpring, Mike worked as the lead developer for a consulting company, serving high profile political, special interest and nonprofit clients in the Washington, D.C., and Columbus, Ohio, markets. Mike regularly presents solutions and best practices to the FileMaker development community around the country, and is well known as an answer man online as well. In 2014 and 2016, Mike was recognized with the FileMaker Excellence Award for community contributions. Mike is a man of many hobbies, including woodworking, home brewing, art and music.