One of the things I really love about Segue is our ability to take over and succeed where others have failed. We’ve done this for enterprise Air Force systems, small mobile applications, and everywhere in between. One of the things that I think contributes to our success with taking over these projects (aside from the awesome people who work here) is our ability to identify what’s really going on, analyze the existing code/system/processes, and recommend a course of action to get our customers to the finish line. We don’t just sign a contract and start coding the same way everyone before us did. If a project failed, it failed for a reason and we work to understand why before moving forward.
In other posts, we talk about Strategic IT planning, specifically our Identify, Analyze, and Recommend (IAR) process, so I’m not going to get into the details of that here. However, one of the key recommendations we make when we inherit a mobile app project from another developer is whether to keep the existing code, refactor the existing code, or start over completely.
When to Start Over in Developing a Mobile App
Sometimes we get an application that has gone through many iterations with many developers and many back-end architectures. An app like this would be a prime candidate for starting over. Because many apps start off as proof of concepts built using hybrid development tools (e.g. PhoneGap, Cordova, etc.) or throwaway code, many times the underlying structure is more costly to update and maintain than to start over and rebuild natively. iOS and Android development tools are continuing to reduce the time and costs associated with native apps. In addition, each iteration of the iOS and Android operating systems widens the gap between them.
The Cost vs. Benefits of Starting Over for a Mobile App
When we take over a code base for analysis, we’ll look at a number of things. We’ll identify how well it was written, what documentation is available (Did the developers comment well? Did they write custom libraries rather than using existing code? etc.), and determine whether we can safely make incremental updates to add functionality or fix defects.
However, sunk costs aside, sometimes it’s cheaper to start from scratch. Factors that influence the decision:
- Remaining work – how many features or defects need to be addressed?
- Maintainability of the existing code – how much effort is it to implement these changes?
- Scalability – how well will the current application work in an expanding list of devices and operating system versions? Tablets and large-screen phones are becoming more popular, but many apps are not optimized for these screens.
- Repackaging Options – Many of our customers find they may want to rebrand their application and release it as a new app. If an application is architected from the beginning to do so, the effort to release different variants is significantly lower and reduces the overall amount of code needed to be maintained.
The total cost of ownership, therefore, could be much less if we were to start over, re-implement your existing functionality, and finish development than it would be to use an existing complex code.
Starting Over Doesn’t Necessarily Mean “Square One”
In most cases, when we say start over, it’s not all the way back to the beginning. You already spent time identifying what you wanted your app to do, created business rules, perhaps have a back-end system to interface with, and have some idea of how the app should look. We can re-use your business rules, APIs, and other services to quickly re-deliver the existing functionality.
If you think of this in terms of a home renovation, we use your floor plan as a guide. Then we build a new foundation with plumbing and utility lines that work better. Finally, we re-hang your paintings in the exact same places they were before. From there, we can quickly start adding new rooms (or new functionality) faster, cheaper, and at a higher quality than we ever could have in your old house.
It doesn’t always make sense to start over from scratch, but when it does, it can still be a positive experience for everyone.