4 ms·
In my experience (24 years in a large company doing a lot of large projects), the coupling of different pieces of the program is severely underestimated. The r
by gvb 17y ago
In my experience (24 years in a large company doing a lot of large projects), the coupling of different pieces of the program is severely underestimated. The result is that The Plan lays out the schedule with Alice and Bob working in parallel, but in reality they end up requiring a lot of interaction before the project is done.
Typically in a large project, Alice and Bob work independently but make different assumptions and have to rework a significant amount of their code when they finally get together to integrate their two parts.
In my experience, large teams can shrink calendar schedule time by brute forcing the dependency failures. The trade-off to achieve schedule compression is substantial inefficiencies and often a loss of quality and maintainability. I am convinced that a lot of schedule slippage in large projects is due to incorrect assumptions with respect to the independence of the pieces. While it is possible to compress the schedule this way, all schedule compression that exceeds the true parallelism in the project requires exponentially increasing effort to overcome the inefficiencies due to the coupling.
This is behind Brook's Law http://en.wikipedia.org/wiki/Brookss_law http://en.wikipedia.org/wiki/Brookss_law "2. Communication overheads increase as the number of people increases." Communication overhead is the indication of coupling of the pieces. If Alice and Bob's pieces were truly independent, they would not need to communicate and Brook's Law would not apply.
The physical analogy to the effort required to shrink calendar time is the "hull speed" of boats.
http://en.wikipedia.org/wiki/Hull_speed http://en.wikipedia.org/wiki/Hull_speed and
http://en.wikipedia.org/wiki/Wave_making_resistance http://en.wikipedia.org/wiki/Wave_making_resistance.
While it is possible to "escape your bow and stern waves" (i.e plane), it takes an exponential amount of power to do so. (The first wikipedia page links to another nice explanation:
http://www.antrimdesign.com/articles/hullspeed.html. http://www.antrimdesign.com/articles/hullspeed.html.)