When weighing options for a software solution, custom development is the most complex to compare. In addition to the different technological alternatives, there are numerous combinations of hybrid options and project plans: Should we start by developing a prototype or a complete working system? Should the most complex parts be split into a separate project? Which features should be implemented immediately versus which ones should be postponed? The complexity of these questions is often exacerbated by the fact that software is not a tangible good that is easily understood by non-practitioners.
The intention of this article is to provide insight into the effort required for custom software development (or even the configuration of existing software). Specifically, I will describe a common progression of software complexity that often translates to increased effort for each feature under development. With this information in mind, you can have a sense of what may be involved in your project and what high-level plans and solutions will work for you.
I will start from the simplest category and work to the most complex. You will immediately notice that the increase in complexity is largely the result of an increase in the number of dependencies and coordination between features. This naturally translates in a higher cost per feature. This is a typical progression of complexity that we have encountered with business software, others are also possible, however.