So, you have identified a need in your business for which you believe would be a great candidate for a software solution.
Now question is …
Do you “run off” and engage (one or more) developers to build this software system(s) for you?
Do you “run off” to “nearest” and/or your favorite on-/off-line software store and buy a commercial-off-the-shelf (COTS) package solution, and if so which one?, to meet these business needs?
Which one of these alternatives is most efficient and (overall) cost effective solution to satisfy your business needs as soon as possible?
That is “The Question”!, To Buy? or To Build?, isn’t it?
Getting answer to this question is actually not nearly as difficult as you might imagine! ;)
All you need to do is execute a “Buy vs. Build” analysis and/or a Software Selection process for type(s) of software that meet these of your business needs and chose best, most efficient and (overall) cost effective solution, right?
The “Big Boys”, larger companies and corporations, often perform, and/or engage consultants to perform, a formal “Buy vs. Build” analysis and/or a Software Selection process on many to all of their significant software purchases.
You should execute a “Buy vs. Build” analysis and/or a Software Selection process, for any significant software purchase, before you decide whether it would be most efficient and cost effective, in long run, to build an application “from scratch” vs. buy a COTS (commercial-off-the-shelf) package, and if so which one will best fit your current and future needs!
This may save you a significant amount of money, time, effort and *headaches* in both short term and in long run!
As otherwise, you may end up paying to “recreate wheel(s)”, which really doesn’t make sense, does it?, and therefore none of us wants to do, do we?
Purchasing a package only to find that it doesn’t (and possibly can’t) meet your needs and/or cost of modifying such a package to meet your needs is prohibitive, in which either case you will most likely “scrap” this package (now a.k.a. “shelfware”), you just bought and paid for, and pick or build another one and possibly repeat this whole (costly) cycle again, you know?
We will not have luxury of going into detail on either how to perform a formal “Buy vs. Build” analysis, as this would require extensive discussions of how to define, analyze and estimate software development projects for which there are many books on these subjects, and/or how to execute a formal Software Selection process, as this is a topic for which whole Methodologies have been developed and are used (I know, as I assisted in initial development and used just such a Software Selection Methodology for one of largest global software and services corporations ;)).
We will, however, in this article, attempt to outline some of factors that you should consider when performing your own “Buy vs. Build” analysis and/or Software Selection process(es) for yourself.
Firstly, in either case you will need to define (and prioritize) your requirements / selection criteria such that you may evaluate how each of these “Buy vs. Build” alternatives will meet your immediate and long-term business needs, right?
Further, throughout these processes, you will want to insure that you compare these options in terms of “apples to apples”, you know?
Therefore, I would recommend that you compare both(/all) of these options in terms (of “Total cost of ownership”) including total time and cost to get application into production and/or market and total cost of supporting and maintaining application for its expected lifespan.
The “formality” with which you execute these processes should be proportionate to your investment (in terms of long-term / “Total cost of ownership”) in application and its criticality in your business.
First, let us consider “Build” option.
Some of advantages of “Build” option include:
1) You get an application specifically developed to satisfy your business requirements/needs and designed to fit your specific business processes.
2) It is more likely that you will be able to adapt your software system(s) to changes in your business needs and/or processes, as you would either presumably have application source code and/or access to original developers of it, right?
3) You may develop your new application(s) to interface and “play nicely” with other software in your overall application architecture.
Some of disadvantages of “Build” option include:
1) The typical project duration from conception to production(/market), through complete software development life cycle, for a custom developed application may be significantly longer than that for implementing a package solution.
2) The initial development costs of producing first release(s) of your application(s), including associated documentation and training materials, are typically higher than those for purchasing a package solution.
Briefly here are just a few of additional factors that, IMHO (in my humble opinion), you may wish to consider in determining whether or not it is best to “Build” an application “from scratch”, including:
1) In addition to estimated “coding” time and cost, make sure you also consider all of time and possible costs to complete definition, analysis and design phases, prior to “coding”, and subsequent testing and implementation phases required to complete overall software development life cycle for you application.