CRUNCHY OR SMOOTH?
A systems engineer interviewing for a position was given 15 minutes to document the requirements for a peanut butter sandwich. In the systems world "getting it right" is vital to the success of a software project. It also helps in many other facets of life. When George Eastman, the great industrialist who founded Kodak (remember film?), did not like the shape of his conservatory situated in the middle of his grand 35,000 sq. ft. home, he spent over $20 million (in todays dollars) to have his house cut in half and reshaped by 15 feet. Talking about Feng Shui!
The fact is, not "getting it right" up front can lead to expensive backtracking. "There is never enough time to do it right, but there is always enough time to to do it over". More than half the IT development projects undertaken in the United States come in late and over budget, and this is largely to due to not getting a clear idea of what is being asked for (1).
WHAT WE HAVE HERE IS A PROBLEM TO...
Communicate? To get things right you need to be a great listener, and this means listening with an open mind, especially when you are an expert in your field and have already done twelve projects "just like this one". Edward de Bono writes of a 60 second test to see if you are genius. How would you divide a cake into eight pieces with just three cuts of the knife? The answer (email me ) demonstrates how sometimes we need to break out of our "thought ruts" to see what is really going on around us. As Mark Twain put it, "To a man with hammer, everything looks like a nail".
BEGIN WITH THE END IN MIND
On your next project, be it upgrading your company's database or planning your daughter's wedding, make the investment to get a clear picture of the requirement before you begin. Here are a few things to consider in defining the requirements for your next project:
- Start with getting a clear picture of WHY you are doing what you are doing.
- Next try to define the objectives of the project. What needs to happen for us to consider this project a success?
- Distinguish between Needs and Wants. Not everything is critical. Identity those results that are most important.
- Knowing you can always add more functionality (complexity), identify core objectives and eliminate anything that can be addressed later.
- Spend more time thinking about what results you want rather than getting bogged down into the details of HOW to achieve them. You can worry about that later.
- Identify time, money, quality and other constraints. You may need to tailor your objectives in light of these.
- One technique used in software engineering is to create "Use Cases". Use Cases describe a sequence of events or a scenario that conveys how the system should interact with the users (called actors) to achieve a specific goal or function. One use case for a wedding may be: Band plays "Its Only Just Begun", Groom and Bride proceed to dance floor. Components required: Band, Song, Groom, Bride, dance floor...
- With most projects there is a lot of information to pull together and make sense of. Using a MindMap will help you manage all the details while still getting a fix on the big picture.
- Don't worry about getting a complete picture at the outset; just worry about knowing that there is a picture. An iterative approach is commonly used these days, because it is inevitable that as the project moves forward and more is known, new requirements will be discovered and priorities will change.