Do you know what the cost of software development is? When you provide a brief to a consultant or development firm and then ask “what will this cost me”, are you expecting an accurate number right there on the spot? Maybe even a ballpark number (that you hope is closer to the real thing)?
If you are, I’m sorry to say it really doesn’t work that way.
After a quick debrief or reviewing any documentation that you may provide them, it’s still very very difficult to estimate an accurate price. People don’t realise how complicated software is and how many unknowns there are in trying to understand a brief. Each team that you approach will have their own processes, experiences and skillsets that will ultimately guide their decision on how your idea will be turned into software. For this reason alone it’s quite difficult to compare quotes between developers, even if they are providing estimates against the same “line-items” from yourself; the implementation and functionality will vary greatly.
It’s best to go through the initial process in a creative and agile way with a team and plan out exactly what your system will do. Break down all your requirements, find any integrations, prototype where possible and set it up to meet your 3-year expectations. Don’t plan and build for now, but think about this now so you can begin to lay out the roadmap.
You should initially develop an MVP which provides the most impact and value. This will allow you to see immediate ROI and then you can grow and expand the development towards that 3-year plan. Don’t be afraid to change the plan along the way; treat your releases like experiments, assess them to determine what worked, what didn’t work and adjust the plan to maximise impact and value.
Now, if you follow this process you will be able to attain a rough budget from your team for the overall system. Working in smaller chunks will allow them to provide either fixed price quotes or more controlled budgets for each deliverable which also makes it easier for you to receive funding for your project. You can measure the results and then use those to proceed forward.
When going through the process most people only think about “What is the development going to cost me” but there are many other factors that need to be considered and budgeted for:
- Software Maintenance
- Software Support
- Logo & Branding
- 3rd Party Services
- Staff Training & User Education
“Sometimes we see people consider hosting but very rarely are they thinking about the others.”
Now, once you release your software, other development costs appear that most people don’t consider: hosting, training, support and maintenance. Your users need to be trained on how to use the software, what new features are being released and what it can do for them. Every time your system has a new release with new features, you will need to train your users on how to use them, otherwise, it may go unused.
You don’t want to go around and train each user in person. Take advantage of technology and host webinars, create training videos and write how-to guides, and send newsletters to your user base with this information. These are all simple ways to get training material to your staff and are easily achieved.
Hosting is most likely something your development needs, unless you’re developing a completely standalone app. Hosting is required to provide centralisation and APIs that are used by your platforms. While the costs can begin quite low they can rise with the number of users using your app or depending on the complexity of the code and processing that needs to take place.
We’ve now completely entered the age of the When referencing computing, the term 'cloud' refers to the generalisation of interconnected computers and services running on the Internet,..., and using Azure is a cloud platform by Microsoft that provides you with many different services that you can consume on a..., AWS is an acronym for Amazon Web Services. This is Amazon's cloud computing infrastructure. AWS is similar to Microsoft Azure... or GCP there are various options for purchasing your hosting e.g. Pay-as-you-use or upfront. While a Pay-as-you-use model might sound ridiculous initially as you won’t know your costs and it’s difficult to manage, they can also save costs, as when they are being under-utilised or not utilised at all, you don’t have to pay full price. If you were to pay upfront, you would know your costs but could have resources allocated when they aren’t used.
Which model you pick will depend on your development and how it’s deployed.
When you physically build something there is always routine maintenance that happens, as over time things get worn out and need to be repaired or updated. The same applies to software; any development that has occurred will require maintenance. Things don’t get worn out but they do get updated or deprecated. Any library, framework or plugin will be updated in its own schedule outside of yours and will need to be factored in. These updates provide security fixes, performance improvements and new functionality that you can leverage. Best practice should be to factor in a maintenance budget and always stay up to date with these so that you don’t let your software get too far behind. There are many reasons for maintenance and we’ve outlined them all here at What is software maintenance and Why Your Software Needs Support
Support is something that most products you buy have, whether you use it or not is a different story but the people creating the product must support it. You have to provide support and information to your users. Bugs etc should be covered through the developer’s warranty but there will be times when users will have issues and you need to have avenues available for them to resolve their issue and get the help they need.
Even though your developers offer support, there will also be times that there are issues that are out of scope or out of warranty and they will need to be worked on to minimise the impact on the system.
Have a look at our article describing all the ways your software can be supported, What is Software Support.
Logo & Branding
This is another important aspect when beginning a project. Depending on what sort of budget you can allocate will change the quality and type of assets that you can purchase or create.
Now the best option is always the fully customised Logo, Branding and App designs but these are costly. If you can afford to get a full-blown branding, logo and app designs etc designed for you, then go for it, as it will separate your app from the others, provide you with your own distinctive look and feel; your brand.
If you can’t dedicate a large budget then at a minimum you need a logo designed. Logo designs vary in price depending on if you’re working with a freelancer or an agency but you can also use many of the logo design service apps like www.99designs.com or www.freelancer.com and get a cheaper option.
Once you have a logo we would suggest you look at using a template that matches your branding or something that can be modified to fit with your new logo and start to feel like your brand. This is always a great option, to begin with, and can get you off-the-ground running and save you a lot of time and effort.
3rd Party Services
You won’t want to develop everything your app does, it’s best to leverage external services where you can to get the functionality you need. If you don’t follow this model you could be setting yourself up for multiple multi-year projects. Why develop your own Artificial Intelligence (AI) is a very large and broad spectrum of technologies which most people would be familiar with through... Image Recognition An algorithm is a process or logic definition that is followed to perform a task or to transform data within... when you can leverage Google or Azure’s for a fraction of the cost.
There are now more services than ever and it’s very easy to provide some exciting technology into your application like:
- Image Recognition
- Natural language Processes
- Optical Character Recognition
- Voice to Text
- Augmented Reality
- Virtual Reality
- and many many more
Staff Training & User Education
What’s the last thing you want when you deploy your software? No one using it! All systems should be easy to use but there is still training and education of users that needs to happen. Some users can figure it out on their own but you need to spend time developing supporting material as well as training.
There are various models you can follow for training, depending on your business. We’ve conducted direct user training with the handful of people using a system as well as training Key Account Managers, or a Regional Manager who then go on to train the staff beneath them.
To be able to support the training and provide further assistance you need to have supporting material such as user guides, videos, how-to, support tickets etc. See our articles on What is Software Support.
Now, when you see this list and start factoring these items in you might think you don’t have the budget for that. You need to stick to your budgets and the goal is to deliver the maximum impact and value possible through software for the money you’re spending. These are real costs that are a result of development and need to be factored in.
No one ever likes to disclose their budgets as they feel it gives them the lower hand in a negotiation and the preconceived notion that if I tell someone how much money I have, they will say it’s that much. But in development terms, it’s very important to be upfront and transparent. If you say you have X budget, your system will be designed to fit within X; while this is true it’s important that it’s clear and as many high-value items as possible are picked and delivered. If you only ever tell them a low ball number, they won’t know you have the scope to expand and be flexible in the process, which is what software development needs.
If you don’t disclose your budget, you will be wasting their time as they may plan and design a system you can’t afford. It’s best to go through the above process with a disclosed budget so that you can then plan which components of the system are absolutely mandatory and will deliver a good return on investment (ROI).
These components might be only 20% of the system, but this 20% will let you do what you need to and provide you with an immediate impact and ROI. Once you start seeing the ROI and the impact and value the app or system has brought, you can then continue expanding and adding new features and modules to continually add more value.
It’s always great to keep in mind that software isn’t a do it once and it’s done scenario. Your system won’t have a single fixed price cost, it will need constant development and updates over time due to the following reasons:
- You will have new ideas or new systems to integrate with
- Your users will have new ideas
- You will be forced to make updates from time to time based on the technology used
- New technology will become available and you will want to take advantage of it
- The assumptions that were made and developed for didn’t work and need to be adjusted or improved.
If you still want to get a fixed price quote for your entire development, I wish you good luck. We know this approach rarely works: your ideas, your assumptions and your business is constantly changing. Don’t lock yourself into something that should be flexible. If you’re really worried about the cost of custom development look for an off-the-shelf platform that will work for you and allow you to expand and integrate with in the future.
Keep these in mind next time you are looking at a custom development:
- Development is an iterative process
- Focus on small deliverables that provide the most impact and value
- Don’t forget about the supporting element costs
Following these rules and you will then be able to maximise the ROI for your budgets and see a massive and immediate impact.