Custom Software Planning Requires an Open Mind
A few weeks ago, Entrance software consultants started a conversation on what quality looks like when developing the requirements for great custom software. This week, I’d like to add to Amit’s thoughts and discuss getting past your expectations to create truly innovative custom solutions.
We all approach every situation with our own set of preconceived notions and expectations, based on past experience, and current knowledge, and sometimes those perceptions can be misconceptions, or simply limited because of a lack of knowledge. We’re all guilty of this from time-to-time, and we know our customers are no different.
1. Unconscious Incompetence – We don’t know what we don’t know.
2. Conscious Incompetence – We know what we don’t know, but we don’t know how to do it.
3. Conscious Competence – We know what we know, and we know how to do it, but it still takes some effort.
4. Unconscious Competence – We know what we know, and we can do it without thinking about it. It just comes naturally.
Determining the Stage of Learning
When working with our clients to generate quality requirements for a custom software project, we need to determine where they are in these four stages of learning. If our customer is in the first two to three stages of understanding what they want/need, then we may get requirements that seem overly complicated or inefficient.
If we know there is a better, more efficient and productive way to do something, we need to be able to communicate that to our customers, because they may not be aware of the alternatives.
If we’re not getting enough detail from our clients, then they may be in the fourth stage of learning, and may unconsciously assume “everyone knows that” and so they neglect to go into enough detail. In this case we have to help them move back to a place where they can break things down for us.
Sometimes the Requirements Only Seem Obvious
Let me explain. I assume that everyone reading this knows how to tie a shoe lace. In fact, you can probably tie a shoe lace, in the dark, with your eyes closed. Now let me ask, have you ever had to teach a child how to tie their shoe lace?
If you did, you probably had a second or two where you had to stop and think about the process; that is, you had to move from the “Unconscious Competence” stage back to the “Conscious Competence” stage in order to recall the details about how to perform the process known as “tying your shoelace”.
Sometimes we have to guide our customers back to this phase as well when gathering custom software requirements. We may ask them, “If you had to hire someone off the street today, who has no previous experience in your industry, your company or your processes, what would they have to know, and do, in order to perform this task? What would be the sequence of events? And what would be the expected outcome?
The quality of the requirements we develop starts with a thorough understanding of our client’s needs, which are driven by core business drivers, key performance indicators, improvement goals, and changes in their industry. Even beyond that, we need to be able to draw out of them enough detail to create a series of requirements that will help us to help them reach their goals.
For more on planning your custom software project, read this post on starting with problems instead of rushing to a solution…