Are you about to begin that big development project?
… the biggest problem is always deciding where to start.
You don’t want to end-up building the wrong product. Companies waste millions of dollars every year developing useless software products because they don’t take the time to correctly identify the problem that needs to be solved.
You MUST ABSOLUTELY discover exactly what needs to be developed before you develop it.
Here are 12 Tips that will help you identify your projects requirements so you get the solution right:
1. Identify the people involved with the work
You are developing an application or tool that will be used by users for a specific purpose. Who are these users? Identify them! Your product needs to make their lives easier, not worse.
2. How is the work done today?
You are being asked to develop an application to improve a business process. In order to find the best solution, you need to understand how users are currently solving the problem. What tools are they using to do the work right now?
3. Identify the processes involved with the work
You need to have a good understanding of all the processes needed to complete a task. If the work the users are doing involve multiple steps, you need to make sure the application coordinates all of these tasks effectively.
4. Identify the information required to enable work
You could make what appears to be an awesome application with a great interface and all sorts of fancy looking buttons… But out tool will be useless if it doesn’t provide users with the information they need to do their job.
You must identify the information the users will need and find a way to make it available within the application. If users need to look elsewhere for the information, they may look elsewhere for the entire solution as well.
5. The inputs/dependencies required to do the work
You need to find out exactly what sort of information will be input into the system before you begin creating the system. You don’t want to reach a point near the end of development and realize the entire thing is useless because users cannot include vital information! While a keyboard and mouse are also common input devices, you may find that your users specifically require a webcam or microphone input device to complete certain tasks. Or, you might find out the system needs to import data from several other databases for processing…
6. The outputs created by the work
Fairly logical, but still necessary to discover! How will you manipulate the users data to provide useful results? What is the end goal the users hope to achieve by using the application you are developing? Always define the outputs so there are no misunderstandings.
7. Create descriptions for all the different users
Do this by creating personas for all of the main groups of users that will be using the system.
8. Understand your users goals/objectives
By now you’ve collected a lot of information and have learned about the existing business processes, inputs, outputs, etc… Based on this information you need to start identifying the underlying goals and objectives your users are trying to accomplish. By understanding the true objectives that need to be achieved, you can find areas for improvement.
Remember, your new application is supposed to make life easier for your users. It’s not supposed to be a different way of doing exactly the same thing, it’s supposed to be a better way of accomplishing the same objectives.
9. Document, document, document!
We all hate writing tons of documents, but if you want to save time and money, get the job done right the first time by writing down as much as you can.
According to the Nine Causes of Software Error, faulty requirements and documentation errors are the leading causes of bugs and errors.
You need to have your step-by-step processes clearly defined so developers can create the proper functionality. It’s not necessary to write tons of text, just be clear and concise
10. Create different scenarios regarding how various aspects of the work are done
By now, you have identified different types of users, you know what each of their goals are with respect to using the system and you have written down step by step processes to achieving these goals. Now, how do you combine all this information logically?
Think about how the work is done by the users. If one user is using the system to enter available inventory and another is selling the inventory, the application needs to coordinate this logically such that the total inventory count is correct! What happens if you have 10 toasters and you sell one while Bob is counting boxes in the stock room? Then Bob goes to his computer and types in 10 toasters, while Joe hands one to a customer and there is really 9! Later that day, Joe will sell someone a toaster when there are none left!
11. Create charts and diagrams showing the work flow
If you’re working on a large project, you need charts to show the entire work flow. This makes it much easier to see and find the associations between various methods.
A picture is worth one-thousand words!
12. Trace the different scenarios, the different people, and their work descriptions through the charts and diagrams
Make sure all the users can in fact reach their goals by tracing paths through the charts you created. If all users can reach and accomplish all of their possible work tasks, you’re on the right track!
As you can see, when you’re working on a large project, there is plenty to do before you even write a single line of code!
Many people like to jump to coding or creating prototypes right away in order to get user feedback more quickly. This is a mistake. Prototypes and wireframes are incredibly useful to help elicit requirements, but always start by doing a little research first.
For more tips, take a look at the Introduction to Software Project Management.