Join the DZone community and get the full member experience.Join For Free
[Latest Guide] Ship faster because you know more, not because you are rushing. Get actionable insights from 7 million commits and 85,000+ software engineers, to increase your team's velocity. Brought to you in partnership with GitPrime.
So, you want to build a product?
The First Loop
The first thing you should do is to gather requirements. What is it that users want your product to be capable of? Do they want a long battery life? A high quality GUI? Automatic updates? A smooth grip? A sturdy case in the color pink? You go out of your way to get a decent list of features to increase your understanding of what is necessary to build the product. It also reduces the risk of welding the foobar to the plingle when users prefer to attach it to a vringle. (I just made that up.)
This is level 1 understanding. Or single-loop learning. Or anticipation. Or functional thinking. Planning and controlling any kind of project is impossible without a level 1 understanding of your product. This, according to philosopher Daniel Dennett, is how human beings cheat nature. We can envision how things work in the future and prepare for it.
The Second Loop
But you build your product to be successful in an ever-changing environment. There will be new competitors while you are building it. Users will annoy you with new requirements. Some features will not work out as intended, while others emerge that nobody had foreseen. In other words, you have to keep learning while building your product. And the more decisions you can postpone to the future, the better.
This is level 2 understanding. Or second-loop learning. Or adaptation. Or systems thinking. Your product is part of a larger socio-economical system, and therefore you must observe the environment, revise your goals, and let your product adapt in order to survive in it. You implement Agile practices to deal with this second level, with iterations, continuous deployments, user demos, and many more.
The Third Loop
But then you realize that your observation of the environment is also changing it. Your regular user demos are changing people's perspectives on the frequency of their product releases. Competitors are adapting to your adaptations. One customer hates you because you ask for input 12 times a week. While some other users love everything you do, simply you’re the first one to listen to them. It appears the manner in which you communicate, and the types of feedback loops you create, are influencing the product that is emerging!
This is level 3 understanding. Or third-loop learning. Or exploration. Or complexity thinking. You realize that your interactions are just as much part of the system as the product you are making. That all your observations are subjective. And that it is impossible for you to know everything. Because how can you know the knowable when the knowable shifts depending on how you try to know it?
All three levels of understanding are important when building a product. You cannot plan a product release without anticipation. You cannot embrace change without adaptation. And you cannot deal with the unknown without some exploration and imagination.
Published at DZone with permission of Jurgen Appelo . See the original article here.
Opinions expressed by DZone contributors are their own.