Different ways of developing enterprise software
Software is a great way to automate and standardise many business processes. And depending on the size of your business there are several approaches you can take. Picking the best approach for your business and industry can give you an advantage over your competitors.
It is important to separate your business needs from any processes or requirements that are only there to support existing paper or spreadsheet-based solutions. If you are finding that difficult then you may need to pick a supplier or external consultant that can help your teams with the requirements gathering process. Workshops to discuss current practice can be a good approach to do that.
The approach you select is based on costs (both time, resources and money) and the type of business you run. Plans for growth may also determine the approach.
In house expert
Often you have one person who knows the job well and also has some basic experience with software development. They can produce something themselves to meet a business need.
Advantages
- No need to transfer knowledge
- Fast turn around
- Low cost
Risks
- Quality and errors
- Conflicting priorities between work and software maintenance
- May not scale as the organisation grows
- Software becomes obsolete quickly once the person leaves
Recommendations
This can be a great approach for short-term fixes or one-off processes. Use high-level design tools to reduce maintenance issues. Ensure business-critical knowledge is captured separately to just the logic of the software or you could find the system is unsupportable in the furture. Be prepared to throw it away. Keep this kind of software stand-alone or well decoupled from other systems so that it can be swapped out.
In house team
By having a team some of the risks of a single expert are mitigated. Multiple staff members means that the business can be supported over holidays and sickness. Having more than one pair of eyes on the code can improve quality.
Advantages
- Close coupling between the business and development team
- Responsive to changes
- Own the support and maintenance
Risks
- IT team can become isolated from the business
- Recruitment is challenging as employees need to be both domain and software experts
- Training costs can be high
- Expense of team "sitting on the bench"
Recommendation
This can be a good approach of your business or industry is highly specialised and no commercial software is available. Implement governance for changes to ensure that conflicting requirements are handled and there is some overall direction for the software. Rotating the team between IT and business is one strategy to ensure everyone is up to speed on how the organisation works. Although the inhouse approach means that you can integrate with all your other corporate systems, keep the boundaries between these clear. That will allow you to independently develop or change these systems. Tightly coupled systems will add to maintenance overhead. Ensure your team are kept upto date on the latest technologies and be prepared to swap these in as older technologies become obsolete or costly to support.
Bespoke outsourced
There are many companies who provide software development services. These can be contracted to develop your software for you.
Advantages
- Software is tailored to your needs.
- Pay for what you use
- Own IP
Risks
- Expensive
- Transfer of domain knowledge takes time and introduces risk
- The software may become obsolete if it fails to keep up with the changing technology and business process
- Issue of support and maintenance
Recommendations
As with the in house team, this approach can work well if there is no commercially available software. However, be prepared to throw away the first version. Software development is a complex process and is unlikely to work the first time. Also, be prepared to have deep pockets, this approach is expensive and could take some time. Try to distinguish between the requirements you need for your business vs the nice to have features otherwise cost can spiral. Also, be aware that whilst you are tied up developing software, your competitors could be stealing an advantage. Don't forget to factor in the purchase and operating costs of services or hardware needed for this approach. Owning the IP also means you also have to maintain the system and you could be tied into the original supplier who may want paying for any changes. Be sure to understand these recurring costs and costs for changes. Ensure you partner with a company who are prepared for the long term.
Software as a service
For many established industries there is commercial software available to meet your business needs. The software is provided and hosted in return for a monthly fee. As the software is provided to multiple customers, the provider's costs are shared amongst multiple customers. This means that the provider typically has multiple developers and quality control staff working on the product.
Advantages
- Industry best practices
- Software is maintained and improved
- External investment in software
- No hidden costs
Risks
- Reduced influence over software direction
- Misalignment between business and software
Recommendation
This approach is good for a company which is growing but does not have the resources to sink into a bespoke development. Ensure you select a company with good knowledge of your industry to avoid misalignment between your business requirements and the functions of the software. To ensure you have input into future releases, participate in usergroups and provide feedback. If the out of the box software does not exactly match your needs then pick a supplier who provides customisations or APIs. This will allow you to integrate the software into your processes and other corporate systems. Sourcing enterprise software as a service means that you can scale your usage to meet your changing business needs but check your contract to see if scaling is allowed. Also, check that to see if training and onboarding are covered by your regular fee or are a separate charge.