DIY Software: What costs should be considered?
Occasionally, we hear that an EMS company is venturing into the development of their own custom software for a specific business purpose. This can be a great option, especially when the custom software is a strategic differentiator and there is nothing already available in the marketplace.
However, more often than not, we encounter EMS companies who have become frustrated by a failed custom software project. We’re bringing some transparency to the table to discuss the considerations and process of building a customer software for your business.
The primary driver behind building custom software is the misconception that it will be “cheaper” than paying the licensing costs of an already available solution . This may be true in some cases, but often times, it is because the accounting of a custom software project does not consider all of the peripheral costs.
PERIPHERAL COSTS
PEOPLE
If you are building a relatively simple, single purpose software tool, it may be very easy to build an ad hoc software solution for your needs by hiring a contracted developer. But more typically, anything on the scale of an enterprise software usually comes with several different costs during the development process, including the cost of having “people” to manage the project. While you may have one person fulfilling multiple roles, there are specific functions that are needed during the process of building a software.
- Executive Sponsor: An executive will make the final approval that a software is needed to fulfill a purpose that meets a business need. Typically, an executive would only be involved during major milestones and significant decisions that impact business.
- Project Manager: The project manager will be responsible for maintaining the scope, timeline and budget. They will also provide status updates to other parts of the organization when necessary. Depending on the size of the project, this may be a small, part-time responsibility or may require a team of project managers leading several streams. Here are a few example questions for a project manager: Is the project running on schedule? What risks have been identified to a successful implementation? Are there new items that should be added to the scope based on the analysts’ recommendations?
- Business/Technology Analyst: A business or technology analyst would help analyze the business process and translate it into requirements for the development team to build the product to spec. The analyst would also investigate and provide answers to questions that may come up during the development process. Here are a few example questions for an analyst: Should this field allow a negative number? How many characters long does this text box need to be? What color should the font be?
- Software Architect: The software architect is a critical roll to functionality develop how the software should be built from a technical standpoint. The objective here is to create the software in a way that minimizes future maintenance and failures. The architect is looking at the big picture, and thinking of potential future impacts. Here are a few example questions for a software architect: How will 10 years of use impact performance? What other uses of the software might there be down the line that need to be considered today?
- Developer: Developer here is used as a broad term to refer to technical people building the software. This can include front-end developers, UX designers, back-end developers, database analysts, etc. Depending on the size and total budget for the project, you could have an in-house or outsourced development team.
- Quality Assurance / Testing: The quality assurance individual will validate that the software functions without bugs and meets the specs as provided by the analyst.
LICENSING
Many people who are starting down the path of custom software development wrongly assume that they will not have to pay any licensing costs. The reality is that custom software usually builds on top of other software. Some of the related softwares are free (open source) but many come with license costs of their own.
- Database: If you’re building a software that requires a database, you would need to purchase a database, such as Microsoft SQL server.
- Operating System: If the software is built using C#, you would also need a Windows Server license.
- Third party UI Components/Libraries: Within the software module, if you are using a third-party library to build screens or functionality, there may be license costs associated. Many of the libraries require paid licenses for commercial use.
- Maintenance softwares: once you have built and deployed the software, depending on how critical the custom software is to your operations, you may need to maintain subscriptions for virus scanners, backup schedulers including off-site hosting.
SERVERS AND INFRASTRUCTURE
If your software application is deployed to a server as most modern applications are, you will incur server and infrastructure costs. Here is what you would need to consider in terms of cost:
- Servers: more than one if the system has a critical uptime requirement
- Storage: more than one to maintain backups and to prevent dataloss in case of hardware failure
- Firewall: if it is connected to an internet port
- Power supply: to protect your systems from being damage by unexpected power outages
- Server room: some place to keep your servers so they are not out in the open for anyone to mess with
- Fire prevention system: servers can generate a lot of heat and there are plenty of horror stories on the internet from people who used to think it was okay to hide a server in their coat closet
- Physical security: data theft might occur through hackers accessing your server over the internet. But old school physical theft is also something you should be protecting against
- Server rack or shelving: to keep the server off the ground in case of flo
- External Hard Drives: for a backup to tape
MAINTANENCE AND UPGRADES
Just like buying a home, your costs are not a one time expense. Software requires constant maintenance and upgrade.
- Software ecosystem: A custom built software application exists within an ecosystem of other softwares and needs to keep up with the changes around it. A desktop application would still need to run on an operating system. A web application would still need to run through a browser. A mobile application would need to keep up with the changes of iOS or Android.
- Business ecosystem: A custom built software also lives in the ecosystem of your business processes. It’s possible that you may have new fields needed for improved data flow or the order of operations needed to change. In business, changes are inevitable.
- Software upgrade: Good software, just like business processes, is subject to continuous improvement. Once your users get their hands on a piece of software, they will likely have feedback that could add to the size, scope and functionality of the project. This means you’re back to development mode and the expenses that come with that.
TRAINING AND SUPPORT
After a software is built and you’ve managed the ongoing maintenance and upgrades, there will always be initial and ongoing training an support. With an out-of-the box or custom built software, training is required to ensure it is being utilized to it’s full capabilities.
- Business Expert: Consider training the trainer. It’s important to identify the appropriate handoff from development to training. An individual (or group of individuals) should be trained on all aspects of the software. It is also crucial to maintain the knowledge in the form of documentation and cross training to become institutional knowledge.
- Support/help desk: With an in-house software application, it’s important to identify how to manage ongoing support and help desk questions. Hire an outside team? Dedicate an internal team member.
- Troubleshooting: Problems occur, it’s almost unavoidable. Identifying and troubleshooting issues can be much harder to review unless you have your original developer on staff.
In conclusion, with all of the peripheral costs that are typically overlooked, it’s crucial to decide if DIY software is the right solution for your business.