No large complex undertaking is going to have a 100% success rate. Construction projects are well known for having cost overruns and delays. Political campaigns can suddenly implode despite careful planning. And then there is bespoke software development – while there are a few horror stories around, and more than a few overruns in terms of time and expense, it really doesn’t have to be that way.
Based on long years of experience at Ballard Chalmers, here are five areas we have found that take the uncertainty out of custom software development and provide a far higher likelihood of success.
1. Gather Plenty of User Input
Too often, management views its own needs for software without fully considering the requirements of users. Case in point: a postal point of service application was developed a few years ago based on detailed specifications from management. It provided managers with tremendous functionality – a way to slice and dice branch, regional or national operations and drill down to find out what was happening, what changed and what was successful. But users hated it. Why? It slowed down every transaction by 30 seconds to one minute.
The smart custom software developer in this case would have surveyed management and users and taken both sides into account. This would have led to the realisation that one of the most major considerations was transaction speed. Management in this case never found out about the vital importance of that factor until after the point of sale system was deployed nationally.
Lesson learned: survey both managers and users extensively before setting application requirements in stone.
2. Show and Iterate
But user input can only take you so far. Imagine, for example, the creators of Facebook relying on that approach. They would never have succeeded as they were developing a social platform the world had never seen. So user input only takes you so far. If the function or application is breaking new ground, users are not likely to tell you what they want.
In this case, the smart approach is to build an early prototype, let some users play with it and gather their feedback for use in future iterations. Continue the feedback loop using an Agile methodology and refine the application until it is ready for prime time.
However, watch out for scope creep or users will have adding all sorts of things to the application. The key there is to keep the primary purpose of the software top of mind. Don’t let user requests result in a loss of focus upon the overall goal.
3. Test Often
While it may not be feasible to test every path and every line of code, it is nevertheless true that extensive testing should be done to detect and prevent serious bugs being introduced into the application. But as testing comes at a cost, the trick is finding the right balance between detecting defects and releasing the application. Most commercial software gets released with known defects which are fixed later. Similarly, it is unlikely that bespoke software will be perfect on its first release. Just make sure to test well enough so no serious bugs escape notice.
4. Pay for Quality
There are tens of millions of programmers available around the world. But reliable high quality software developers are not so common. Some studies indicate that the productivity of a top developer can be 25 to 30 times higher than that of others. The moral of the story is you usually get what you pay for. Low cost development from unseen personnel in a distant land may work for simple tasks. But when it comes to the bespoke field, it is asking for trouble. You want experienced developers you can talk to and interact with. They should be able to provide plenty of references from satisfied users. Talk to those users and reassure yourself that your potential development team can deliver.
5. Harness Pre-built Components
Just like many industries use prefabricated materials, parts and modules, it is becoming increasingly possible to harness software components that have been tried and tested on many other projects. Experienced developers should be able to take advantage of components created for other projects and thereby reduce the time taken up in the current project. This also has the advantage of utilising proven components that have already undergone rigorous testing. While bespoke development always contains a large amount of new code, there is no need to reinvent the wheel every project.
Ballard Chalmers has the expertise and experience to support your bespoke development requirements such as application modernisation, Custom Software Development for cloud or on-premises, migrating systems to the cloud, and integrating online and offline systems. For more information contact us using the form below or call 01342 410223.
By Drew Robb, Contributor
Drew Robb is a freelance editor and writer, specialising in the Information Technology sector.