HM Courts and Tribunal Service announced earlier this month that its attempt to upgrade the IT system in the High Court had resulted in failure and was being decommissioned, costing the public purse almost £10 million. Even if not of the same scale, commissioning a bespoke software system can present businesses with a number of challenges. While the potential benefits of such projects can be substantial, there is also ample scope for misunderstanding, cost overrun and outright failure where a system does not deliver as hoped (or hyped) and does meet the functional requirements of the user. The history of bespoke software projects is littered with failures, from which some common themes emerge and lessons can be learned. Here are our top tips for a successful project:
Choose your software developer carefully
This sounds obvious, but too often businesses allow the decision to be driven too heavily by bottom-line price. A system that does not work is worthless to the business, regardless of how much it might have cost if successful. Ask potential partners for references, and get to the bottom of whether they have they done any similar projects for similar businesses involving the software in question. Take time to follow up on references – frank feedback from the developer’s other clients is infinitely more useful than a glossy brochure and a slick pitch.
Be clear on the methodology
You should expect potential partners to set out clearly and fully the methodologies that will be adopted to take the project right though to completion. Although they may seem rigid and overly-formal, the recognised methodologies exist for one simple reason: to increase the probability of the project’s succeeding. Make it your business to understand the difference between waterfall and agile models, and the specifics of what any particular methodology like PRINCE2 will involve in practice and how much resource and time investment it will require from your own project management perspective.
Get the right people on the job
One of the most common areas for disputes arising between software developers and their clients following a project’s running into trouble is that the developer is not receiving sufficient resource, instruction or feedback from the client’s key personnel. Address this issue from the outset by nominating project managers with sufficient time, expertise and authority to dedicate to the project internally. If the methodology requires a project committee to be appointed, make sure that it meets regularly and, more importantly, that minutes and appropriate actions are agreed shortly after each meeting – a series of short meetings noting everything is on track will be far less-time consuming in the long run than only meeting when a problem needs to be addressed or the project is failing. Likewise, make sure the user-acceptance testing phase involves the ultimate users of the system, adopting a clear testing and reporting process.
Don’t be held hostage on costs
Inevitably, the developer will want staged payments to be front-loaded, while the client business will want to as much of the price as possible to be paid once it is confident that the project will ultimately succeed. Paying the whole of the price before user acceptance testing will leave the client with little leverage in the event of persistent snagging items, and should be avoided if possible. Just as with any construction project, seek to backweight a significant portion of payment (as far as is reasonable) to provide a fair allocation of risk.
Don’t ignore the dispute resolution mechanism
Problems and issues are almost inevitable; get over it. Prepare for them in advance and ensure that there is an effective and clear procedure and mechanism for seeking to resolve challenges and unforeseen issues, as well as an appropriate escalation procedure for ensuring senior representatives have an opportunity to agree any thorny issues should they arise. Make sure, however, that you are not contractually bound to conduct endless rounds of dispute resolution meetings before having the opportunity to get tough. Always retain the right to issue proceedings or invoke arbitration (where appropriate), depending on the scale of risk involved and the potential harm that may be done.