Here is what we see over and over:
• Schedules and detailed requirements are set early
• The system concept and key technology decisions are made very early
• This begins a wide set of development tasks, in which are embedded a variety of decision-making
• Eventually, the critical knowledge gaps emerge as the later decisions are hampered by earlier ones
• Then the design loopbacks begin and continue for the life of the project
• Much learning ensues, but generally very-specific to that particular design point
• The next project proceeds the same way, as very little of the prior learning is leveraged
And the results from this behavior are generally the same. Most projects have cost and schedule overruns, 70% of engineering effort and innovation is poured into fire-fighting, and the organizations aren't able to leverage the learning from past projects to dramatically improve the following development cycles.
There are many that advocate investing more effort up front due to the criticality of those early decisions. But rarely do they suggest how you would do that... what would you have them do. As practiced, the front end of product development is called the "Fuzzy Front End". The typical goal is to get through it fast, to move onto the less fuzzy development.
The decision-making in that Fuzzy Front End generally looks something like this:

There's a lot of wishful thinking about what this next product could and should be. And there's a lot of guesses about how those wishes could be fulfilled. However, the only known way to confirm those guesses is to attempt a design and see whether or not those wishes end up fulfilled. The problem with that approach is it takes a long time to complete that design, when all the problems will have been flushed out and dealt with. And that dealing with the wrong guesses late in the process is extremely expensive.
What is needed is a way to replace the guessing and fuzziness with concrete provable knowledge. The challenge there is that early in the process, before many of the decisions have been made, there's just many options that are still on the table... ranges of possibilities. How do you eliminate fuzziness in that situation?
You need to be able to reason about sets... sets of possibilities... sets of customer interests... in a concrete way. You need to be able to make decisions that can work with a large set of future decisions. You need Set-Based Thinking™...
