In contrast, someone putting the bricks down to build a house has a much more defined task. The architects for real world houses were really the only ones doing design and that for 99% of them, they were good at it only when they were essentially designing a house that they had seen most of the parts already built in the past.
While design is not very easy, it is very hard (and way too abstract) to do design^2. Humans are just not very good at it. And that we should be very careful being a software designer or as the OP suggests building a framework without a concrete product built first.
Note: When I mean software designer above, I mean someone trying to spend a large percentage of their development specing out all the details that the coders (i.e. the designers of the software world) should be working on. I am not referring to Graphic Design.