Scenario: You have an idea for custom software to help improve your business processes. Your concept is solid, and your software is a strategic differentiator. You’ve done your research, and there is nothing like it currently on the market. Sounds perfect, right?
Many EMS companies find themselves in precisely this situation – they have unique ideas and make concrete plans to move forward. So why do so many of these ideas crash and burn before they ever get a real start? We’ll let you in on a secret – the answer is unanticipated costs. 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. In this blog, we’ll take a deeper dive into the peripheral costs associated with creating DIY software, so you can avoid the pitfalls of hidden costs the next time inspiration strikes.
PERIPHERAL COSTS: BROKEN DOWN
If you are building a simple, single purpose software tool, it may be simple to build an ad hoc software solution for your needs by hiring a contracted developer. But more commonly, anything on the scale of an enterprise software solution comes with several different costs during the development process. While you may have one person fulfilling multiple roles, these are the functions you need to ensure you are meeting your goals most efficiently:
- Executive Sponsor – This person is responsible for implementing strategy at the highest levels of the project. They are involved in all the major milestones throughout the development process, and serve as the final source of approval, guaranteeing the software fulfills its purpose and can be successfully deployed. While overall involvement in the day-to-day labor of this project will be minimal, this role is crucial to ensure details are not being overlooked and the project stays on track, and true to the larger vision at hand.
- Project Manager - The project manager is responsible for maintaining the scope, timeline and budget of the project. They provide status updates to other parts of the organization, as necessary, and are very involved in the day-to-day aspects of development. Depending on the size of the project, this role may vary in size and responsibility. Project Managers ask questions such as “Is the project running on schedule? And, “Which risks have we identified to implementation?”
- Business/Technology Analyst - The Analyst will examine the business process and translate it into requirements which allow the development team to build a product to spec. The analyst also investigates and provides answers to questions that may come up during the development process. Potential questions include, “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 lays out how the software should be built. This individual plans software development in a way that will minimize future maintenance and failures. The architect looks at the big picture and solves problems that have yet to arise. For instance, a Software Architect might ask “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 – Developers refer to the technical individuals building the software. This can include front-end developers, UX designers, back-end developers, and database analysts.
- Quality Assurance / Testing - QA are the people validating the software’s functionality. Your QA individual or team guarantees the software functions without bugs and meets the specs as provided by the analyst.
When venturing down the path of custom software development, many wrongly assume that they will be able to avoid paying licensing costs. This is untrue. Custom software usually builds on top of other (existing) software. Some of the related software is free (known as opensource,) but many of them (especially Windows-environment software) come with license costs of their own. Here are the different types of software licenses worth considering. How does your idea fit in?
- Database - if you build software with a database, you may need a database like Microsoft SQL server – this is an additional cost.
- Operating System - if the software is built using C#, you will 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 software, depending on how critical the custom software is to your operations, you may need to maintain subscriptions for virus scanners and backup schedulers, including off-site hosting.
SERVERS AND INFRASTRUCTURES:
Modern software simplifies storage by offering a cloud-hosted option instead of on-site deployment. If your software application is deployed to a server, as most modern applications are, then you may incur server and infrastructure costs. There are a few common forms of this model: on-site, cloud-based and hybrid.
- Servers – You may need more than one if the system has a critical uptime requirement.
- Storage – Again, you may require more than one to maintain backups and to prevent data loss in case of hardware failure.
- Firewall – A firewall may be necessary if it is connected to an internet port.
- Power Supply – Power supply is beneficial to protect your systems from being damage by unexpected power outages.
- Server Room – A server room is key if you need an area to hold your servers, so they are not out in the open posing a security risk.
- Fire Prevention System - Servers generate large amounts of heat, and the internet is full of horror stories from people who used to think it was okay to hide a server in their coat closet. Investing in a fire prevention system ensures the safety of your data (and environment.)
- Physical Security - Data theft is a large concern. While it is true hackers can access your server over the internet, old school physical theft is also something you should be protecting against. Constant vigilance is key when it comes to software protection.
- Server Rack or Shelving – Organization is key to keep your server off the ground in case of flooding or another natural disaster. Remember, you’re always better safe than sorry.
- External Hard Drives – When in doubt, keep a hard copy for back up.
MAINTENANCE AND UPGRADES:
Consider any major purchase – for instance, buying a car or home. Once you make your purchase, your expenses are only beginning. Similarly, software requires constant maintenance and upgrade.
- Software Ecosystem - Even if you custom build your software application independently, it still exists within an ecosystem of other software, and needs to keep up with the changes in the environment around it. For example, a desktop application may still need to run on a Windows operating system. A web application still requires a browser to run. A mobile application needs to keep up with the changes of iOS or Android.
- Business Ecosystem - Your software 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 needs to change. You may even need more granular permission management as your organization grows. It’s important to take these factors into consideration to ensure you are keeping your software as current as possible.
- Software Upgrades – Good software, like good 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 software. To ensure your software is living up to its potential, it is key to continue to stay in development mode and make continuous improvements.
TRAINING AND SUPPORT:
Solid, foundational training is paramount to building successful software. With this being said, training and support are additional costs. There are three primary areas to consider when it comes to education and support.
- Train the Trainer (the Business Expert) – Your development team may be in-house, but if you have outsourced to an external team, a handoff is crucial to ensure success. There needs to be a primary point of contact to provide the know-how, complete with documentation, and cross training,) to reduce risk. Maintaining institutional knowledge is key to ensuring a successful software launch.
- Support/Help Desk – Users will have questions when utilizing your software. It’s important to provide them with the resources they need for optimal success. If you are building your software with an outside team, you need to consider how you will handle support. Will you continue to outsource this to a similar organization? Having an idea in advance is helpful when you are working through this process.
- Troubleshooting / Debugging - All software requires upkeep. Which developer will you turn to when you are in need? Hire someone for consulting to review. Keep in mind, it is much harder for a developer to look into something if they did not build it themselves.
The peripheral costs of DIY software are typically overlooked when it comes to determining if a DIY approach is right for your business. Before you dive into building an internal software for your needs alone, analyze the potential time, costs, pros and cons of focusing your time and effort on a building a software. Spending time up front to analyze hidden expenses can will save your business time and money in the long run.