Occasionally, standard software or cloud computing services aren't able to meet your business requirements.
If that’s the case, you might need to build your own from scratch, or modify existing software so it fits your needs.
Software developed especially for a single business is usually called tailored or bespoke software.
The big advantage of bespoke software is that you can build it to contain exactly the functions you need. You can alter the software as your business changes and you don’t have to settle for any of the compromises you might get with pre-packaged software.
However, there are drawbacks. Developing custom software usually costs much more than buying, setting up and supporting a standard package. It also takes time to develop software — perhaps six months or more — and the non-standard nature means you may be tied to an expensive support contract provided by the company that developed it.
Additionally, these days many businesses want connected applications that share data and can be accessed from any location. Developing these apps can be more challenging than building a standalone package, especially for smaller companies with limited resources.
Rather than tackle the ambitious task of building custom software, often it’s easier to take a standard software package or cloud service and adapt or extend it to fit your needs.
Software packages are often designed for this, giving you powerful ways to build on core functions. This means you don’t have to reinvent the wheel – you can just customise the things that are unique to your business.
For example, instead of building a customer database from scratch, you can adapt a standard database application, adding your own record structure, forms, interface screens and reports so it does what you need it to.
The rise of online services and cloud computing provides many opportunities in this area.
For example, many web hosting companies now offer packages that come with a suite of applications to install and customise. These can include CRM systems, project management packages, collaboration tools and more.
Adapting an existing software package usually requires detailed knowledge of the software and significant technical work. Unless you have the right experience in your business, it’s a good idea to work with an IT supplier or software development company.
You should only look at developing bespoke software from scratch once you're certain you can't do the job with one or more off-the-shelf packages.
Be wary of taking advice on this from a single software development firm, especially if they have an incentive to encourage you to embark on a development project. Search online, check with your usual IT supplier and approach other similar businesses to see how they've solved the problem you're facing.
Any software development process needs to start with your requirements. These will influence everything about your custom software, so determine exactly what you want to be able to do with the software before starting any development.
Express your requirements using terms that mean something to your business. For instance ‘search for a customer by surname’ is better than ‘search records for a particular word’. A good software developer will help you refine your requirements.
Take great care choosing a developer to work with on a custom software project. Make sure your contract with them specifies that you own the software.
If you don’t acquire ownership of the underlying source code and all associated intellectual property, you will be reliant on the same supplier to make changes to the custom software at a later date.
Some software development companies will be reluctant to hand over the source code, particularly if it contains their trade secrets. In these circumstances, you can use a software escrow service to ensure you can continue to adapt and update the software, even if your development company goes bust.
Additionally, creating effective software requires a close working relationship. So even if you work with an external developer, you will still need to invest significant time and effort to help them understand what you're trying to achieve.