Even if there hadn’t been prototype shuttles, the shuttle is still reducible to simpler components. Gall Law just articulates that before you can successfully design something like the space shuttle you have to understand how all of its simpler components work.
If an engineer (or even transhuman AI) had sat down and started trying to design the space shuttle, without knowledge of rocketry, aerodynamics, circuits, springs, or screws, it would be pulling from a poorly constrained section of the space of possible designs, and is unlikely to get something that works.
The way this problem is solved is to work backwards until you get to simple components. The shuttle designer realizes his shuttle will need wings, so starts to design the wing, realizes the wing has a materials requirement, so starts to develop the material. He continues to work back until he gets to the screws and rivets that hold the wing together, and other simple machines.
In engineering, once you place the first atom in your design, you have already made a choice about atomic mass and charge. Complex patterns of atoms like space shuttles will include many subdivisions (components) that must be designed, and Gall’s Law illustrates that they must be designed and understood before the designer has a decent chance of the space shuttle working.
I think you completely miss the point of Gall’s law. It’s not about understanding individual components. Big software projects still fail, even though we understand if-statements and for-loops pretty well.
It’s about an evolution from simpler systems to more complex systems. Various design phases of the space shuttle aren’t what falsify that example. It’s the evolution of rocket propulsion, aircraft, and spacecraft, and their components.
(EDIT: Also, at no point was I suggesting that understanding of components guarantees success in designing complex systems, but that it is neccessary. For a complex system to work it must have all working components, reduced down to the level of simple machines. Big software projects would certainly fail if the engineers didn’t have knowledge of if-statements and for-loops.)
Even if there hadn’t been prototype shuttles, the shuttle is still reducible to simpler components. Gall Law just articulates that before you can successfully design something like the space shuttle you have to understand how all of its simpler components work.
If an engineer (or even transhuman AI) had sat down and started trying to design the space shuttle, without knowledge of rocketry, aerodynamics, circuits, springs, or screws, it would be pulling from a poorly constrained section of the space of possible designs, and is unlikely to get something that works.
The way this problem is solved is to work backwards until you get to simple components. The shuttle designer realizes his shuttle will need wings, so starts to design the wing, realizes the wing has a materials requirement, so starts to develop the material. He continues to work back until he gets to the screws and rivets that hold the wing together, and other simple machines.
In engineering, once you place the first atom in your design, you have already made a choice about atomic mass and charge. Complex patterns of atoms like space shuttles will include many subdivisions (components) that must be designed, and Gall’s Law illustrates that they must be designed and understood before the designer has a decent chance of the space shuttle working.
I think you completely miss the point of Gall’s law. It’s not about understanding individual components. Big software projects still fail, even though we understand if-statements and for-loops pretty well.
I know that.
It’s about an evolution from simpler systems to more complex systems. Various design phases of the space shuttle aren’t what falsify that example. It’s the evolution of rocket propulsion, aircraft, and spacecraft, and their components.
(EDIT: Also, at no point was I suggesting that understanding of components guarantees success in designing complex systems, but that it is neccessary. For a complex system to work it must have all working components, reduced down to the level of simple machines. Big software projects would certainly fail if the engineers didn’t have knowledge of if-statements and for-loops.)