Set-based design is an empirical approach where a problem space is explored simultaneously through the investigation of various solutions so that the most optimal solution can be chosen at the last moment that the decision needs to be made.
There are a few benefits to this:
- The longer that you can put off make a decision, the more informed the decision will be. Of course, you cannot procrastinate. It is important to first decide when you must absolutely make the decision.
- You generate a better understanding of the problem space by tackling it from different angles.
- By investigating multiple solutions to a problem in parallel, you are more likely to have something functional and ready to deliver in the end. This is effective risk management.
Some may consider this as a wasteful practice. Why invest so many resources in solving a particularly problem. However, in most cases the cost of missing a deadline or making an ill-informed decision is significantly higher. Even then, this may be difficult for some people to grasp when they are deep into the task at hand. When this happens, step back and consider the long term goals of the company and the product being development. I bet you will find the investment will be worth it.
You may come across customers who are hesitant to compromise on scope even when a deadline is set in stone and it is pretty clear to you that the current scope is not achievable by that deadline. Instead of running for the hills as some have suggested, consider set-based design. More often than not, the budget is there for it since the organization is more than willing to bring in as many people as it takes to get the job done. It could just be what is needed to get the customer to identify what feature-set is absolutely required to get the product to market.
To learn more about set-based design, have a look at the following resources:
- Bill Wake's Xploration on Set-Based Concurrent Engineering.
- Implementing Lean Software Development, From Concept To Cash by Mary and Tom Poppendieck.