You can design by having a go.
The real problem is when you use this approach you need to be ruthless. If it turns out your design is lacking, bin it, and use the lesson. Don't rescue it, don't patch it, don't leave it for version 2.
Now in the commercial software world, when v1 with it's technical debt has been delivered, what has actually happened.
While I wholeheartedly agree with you that time spent designing before you put your two fingers on the keyboard is time well spent, businesses in the main do not share our opinion. As long as they can sell it, it will do. Spiraling maintenance costs and no longevity are out of scope.
It's another area where academia could improve as well with some more real life scenarios, than swap this bubble sort for something more efficient.
Keep Up with TechRepublic