Delivering bespoke software for clients can be a difficult situation for all parties involved. For a client – the leap of faith is huge – entrusting what can be a significant part of the infrastructure for their existing business or growth strategy with a potentially unknown third party.
As a software developer, I have managed many projects over the years that I have been involved in the industry. I have come to the conclusion that the most critical part of a project – the beginning – is often when both parties – the customer requiring software development, and the software developer implementing the project, are at their most inexperienced.
This inexperience has many side effects – most notably in the field of assumption. The client may take some of the industry knowledge they have for granted – leaving the developer to reverse engineer decades of experience in a matter of days or weeks – before beginning to lay the foundations for a more complex system. Misunderstandings at this stage can lead to cost overruns, cancellation, or systems being implemented that are clearly not fit-for-purpose.
So what steps can the client of a development project take to help improve the chance of success, and how can they find a developer who can develop their project?
I’ve created a simple list of five considerations for potential clients to bear in mind when embarking on their first project:
- 1. Do your research –
- Off the shelf products are often cheaper, more bug free, and take less hassle than bespoke software development. Do you need a developer, or can you get by with an off the shelf service?
- 2. Find a developer with experience relevant to your industry –
- You are the expert in your problem domain – you may however, not be an expert in defining and communicating the challenges you wish to meet in a way that helps a software developer. Finding someone with industry experience will mean that you are spending less time on training a developer to understand your industry, and more time working with them to agree on how best to exploit the opportunity you have found.
- 3. Start Small –
- If you haven’t worked with a developer before, consider if it is worth managing the risk of your inexperience by starting with a small, well defined project – a test bed that isn’t going to cause too much of a problem if it is thrown away or is not delivered.
- 4. Aim to build a long term relationship –
- There is a lot of overhead in forming the relationship needed to ensure good two way communication and trust between client and developer. There is something to be said for minimising this overhead where possible.
- 5. Don’t expect perfection –
- Delivering software to time, on budget, to the right scope is covered by what is known as the “Project Management Triangle” – or often summed up as “Fast, Good and Cheap – pick any two”. All projects and deals have compromises and trade-offs to make them successful and worth doing to both parties. An adequate system that is delivered in a reasonable time-frame with sufficient support to work around any oddities is often more usable than a quest for perfection, doomed never to leave the lab.
As a developer – I am interested to know – how does your experience of negotiating deals with internet/ inbound marketing compare to mine in IT – do you have your own top 5 list? Let me know in the comments below.