When OTS (Off The Shelf) software doesn’t meet your needs, it’s time to go custom. Here are some tips to help ensure your next custom project ends up being a success.
1. Are you sure that OTS (Commercial or Open Source) doesn’t cut it?
- Usually the fastest and cheapest way to solve your IT needs is to buy OTS (or use an Open Source product). If you’ve done your homework and are convinced that OTS doesn’t meet your needs, is there an OTS product that comes close? Especially for Open Source products, minor customization (especially of the UI or workflow) may give you the 80% solution for 20% of the cost. Commercial products can also usually be customized, but may cost much more to do so than their Open Source counterparts.
2. Keep the key requirements to a minimum
An analogy with custom software development that I often use with our clients is house renovation or building. You make your wish list, you hire your architect and builder, sketches are made, and then you realize your dream home will cost you 200% more than you wanted to pay and take three times longer to build. At that point, the hard decisions need to be made. “Do I really need two fireplaces?”, you ask yourself, “or a three-car garage? or stain-grade wood windows?”, etc, etc. After prioritizing your needs and desires, hopefully you are much closer to your original vision, both in terms of cost/schedule, as well as the essential qualities you desire in your new house.
It’s the same with custom software development. After the initial brainstorming sessions, it’s time to whittle the project down to it’s essence - that core set of requirements and functionality that will provide you with the greatest business value, and allow you to grow the system (if necessary) over time. Our job is to give you the feedback along the way to help you with this process. We do this by questioning your need for feature x or requirement y. We tell you which requirements are hard to implement (and thus will cost more and take longer) vs. which are easy. This is usually a very enlightening process for our customers. Often, features that you think will cost the moon are trivial to implement using modern technology (many of these are User Interface-related), whereas others are much harder to do that they anticipated, or have cost and schedule ramifications for other parts of their system (complexities in the domain model are prime examples of these). The requirements and features that do not make the cut are kept in the “nice to have” pile, and are implemented as time and money allow, after the core requirements and functionality have been built.
3. Simplify
Do you really need your business rules to be so complex? Do they represent current processes (that are perhaps outmoded and need to be streamlined) or are they new processes that have yet to be implemented in your organization (and are perhaps untried and untested)? Our favourite quote from Einstein is “Things should be made as simple as possible, but no simpler.” This is exactly the attitude we try to take when examining requirements for custom software.
Usually, the people who are commissioning the creation of custom software are not it’s end users, thus their understanding of the real requirements will often be different from the understanding (and needs) of the end users.
In a situation like this, it can be a good idea to build a simpler system quickly, deploy it, and use it in day to day operations for a time, in order to help crystallize and reconcile the different perspectives of the project sponsors and the end users. Then, adding complexity where it is really needed is time and money well spent because you are working with real requirements, rather than hypothetical ones.
This is certainly not an exhaustive list of what to look out for when embarking on a custom software development project, but it should help to put the process in the proper perspective.