As a small company, and the chief technologist (old engineer) I like to gather all the known specifications from the client, make a few suggestions, have them consider some limitations or restrictions, and then push him/her to nail the specifications/requirements down a solidly as possible. Then I have something to work with that isn't a moving target.
Then I take out a blank sheet of paper (my favorite part) and start putting subassemblies together to see how it might just come together.
One of the issues in design is the question of when a "project" is started. Most of the responses you mention assume that the "customer" has a solid list of requirements. In projects involving mostly hardware that seems to be the case. The "customer" takes the time to figure out what they want. In the software world that is often not the case. There are various methods used to deal with this situation. I hear tell of them making their way into the engineering world. I am not sure that is a good thing.
Great question to pose and it will be interesting to hear the community's response. I'm also curious how much of that brainstorming and feedback is being transferred over to some of the newer collaboration technologies and Web-based platforms as opposed to happening in face-to-face meetings with pen and paper in hand. My guess is that since engineering teams no longer sit side by side in the same building, there needs to be some sort of forum for early ideation, and technology is certainly evolving to support that objective.
Focus on Fundamentals consists of 45-minute on-line classes that cover a host of technologies. You learn without leaving the comfort of your desk. All classes are taught by subject-matter experts and all are archived. So if you can't attend live, attend at your convenience.