It’s a bit like building a house isn’t it?
Back in April, I blogged about how to make a good fix or change request as a result of some, shall we say, interesting ones that had come through to us. This month, I thought I would take a closer look at what makes a good software project specification.
Any regular readers will know that the boss loves a good analogy. A while ago, he wrote a blog about the difficulties of rewriting poorly constructed software, using a building analogy to illustrate his point. I am shamelessly stealing that analogy for similar purposes as I consider how to write a good software project specification.
No two companies are exactly the same and likewise no two software projects are the same. The beauty of having bespoke software developed for you, is that the software can do exactly what you want it to do. BUT to get the desired result means spending a little time on the foundations, ie the software project specification.
Let’s imagine for a moment that we are instructing a builder to construct a new house for us. We tell the builder that we want a 4 bedroomed house on the same plot as our existing detached garage. The builder makes a start, digging out the footings. Just as he has finished laying the foundations, we decide we want the garage to be integral instead of detached. Oops! Now we need different foundations altogether.
In coding this may not be as big a disaster as it would prove to be in building but it will still cause issues. This is why it is so important to have considered the functionality of not just the new software you want developing but the software and systems you already have.
The Fixtures & Fittings
In your instruction to the builder, you have asked for a window to be put in one of the walls. What are picturing as you make that request? Pound to a penny, it won’t be the same as the image in the builder’s mind! He needs more information: which wall do you want the window in and where – top, bottom? Do you want a window that opens? Should it open in or out? How big do you want the window to be? What colour should the frame be? What about security?
Drilling down to the detail when writing the specification will make a world of difference to the end result. With both a house and a software project, your builder may also be able to make suggestions about features and functionality that you aren’t aware of.
Now that the house is nearly finished, you invite the family down to have a look. They want to know where the utility room is and why there is only room for one car! These are the people who are going to live in the house on a daily basis and they need it to work for them.
End users are a really valuable source of information and ideas when defining your software requirements. They are the people who will use it (or not) when the completed project is delivered. The more involved they are from the outset, the more likely they are to buy in to the changes that will inevitably be involved in introducing new software.
I think that leaves one final point. You have decided you need a 10 bedroomed mansion with a double integral garage and a swimming pool (because, why not?). You haven’t really involved your builder in a lot of the discussion and decisions so you present him with your list of requirements – and a budget that will just about get you a rabbit hutch.
Software projects don’t need to be expensive but they do take time to develop and that time comes at a cost. A good software developer will be able to advise you on what is possible for the budget you have got to spend and also be able to plan a phased build and approach where you might not have all of the money available at the outset. The most expensive software developer is not necessarily the best but going with the cheapest isn’t always going to achieve the results you want either. Just as you wouldn’t instruct a builder without meeting him first, you should, wherever possible, meet the person who is going to build your software too.
Ready to start your next project? Our team of software developers are all based at our offices in the UK. If you would like to meet our team, discuss any aspect of software development, or would like a complimentary consultation, please get in touch.