Software development can be a tricky thing. In my previous article I explained what I believe to be the top 30 mistakes that are made by software development teams on a daily basis. In the next series of articles I will go into detail on each of the points, the first being “Not Understanding User Requirements”. Outlined in this article is:
- Realize you need details
- Focus my son
- Format and Authoring the documents
- Accuracy
Lets start this really basic. Why are you doing software development? we’ll, in most cases there is a problem you want to solve. In the business world, someone has come to you and said “Listen, I really need a system that can do xyz, can you build me something?”. Now this should be the first flag for you. The user here is assuming that he as some unique requirement, or unique problem that nobody has run into before and requires some custom software development. Instead, take a minute and review other software packages, changes are there is something out there that can help take you some way there, and maybe you can develop something using their sdk, or in some cases, modifying their source code. Ok, but for the purposes of this article lets just assume it is a unique problem.
Well, if it is a unique problem, then there are probably some very specific requirements here! You see your main goal in anything here has to be make the client/business member happy! How can you make them happy if you don’t know EXACTLY what they want. Wrap some scope around this puppy.
Realize you need details!
I love examples so lets pretend we are developing a brand new cash register software application for the customer. Lets take a bad example of how this might go:
John User: “Miguel, I would really like a nice cash register application, can you make me one!”
Miguel Developer: “Sure no problem… when do you need it by?”
John User: “ohhh.. in three weeks?:
Miguel Developer: “Oh.. heck that’s not a problem at all! I’ll bring it over in three weeks!”
Ok this is terrible…. Here’s how that should have gone:
John User: “Miguel, I would really like a nice cash register application, can you make me one!”
Miguel Developer: “That sounds like a great idea! Would really simplify your business! Do you know what functionality you want in it in terms of function keys, reports, things to track, receipt generation, etc…?”
John User: “Not really…”
Miguel Developer: “Do you currently use a cash register? Would you like it to do everything it currently does.. with some added functionality possibly”
John User: “Yup”
Miguel Developer: “Great! Is there a time that we can arrange where you can walk me through the system you currently use? After this, we can go through some “enhancements” you would like”
I think you get the idea. But this is only a small percentage of it!
Focus my son..
Although most requirements gathering advice will start at this point, I thought I would take it back a notch where most software development projects fail, Realize You Need them! Next you need to focus your thoughts! It’s not good enough to say “We are creating a computerized cash register.” We have to focus and clarify the thoughts! Don’t just assume the user wants small normal buttons.. clarify it… clarify the font! The positioning of items, etc. Most of you will say.. bllaaa who cares… lets clarify the performance… true… that is a good statement, but don’t forget the little things… because the little small details, will be what kills your timelines. After all the success of a project should be based on delivering a project ON TIME, meeting all the requirements! not just meeting all the requirements.
Ask questions like how many users will be using the application, from where, how will they access the application? Software development will go much smoother for you if you simply realize you need to ask the right questions, and focus your questions on getting clear, focused, accurate objectives and details.