In software, so much of our history can be traced back to this man, Melvin E. Conway.
In 1968, he wrote what became a classic paper in our cannon, How Do Committees Invent? This was to be the first exploration of how organizational structure effects the technical outcomes of projects. The most quoted line of the paper is in its conclusion:
“organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations”
It later became to be known as Conway’s Law. Like all good “laws”, it is still as valid today as is was when it was first articulated. I don’t want to explore organizational structures here, however there is another illuminating but lesser known quote from the paper that I want to highlight:
“This point of view has produced the observation that there’s never enough time to do something right, but there’s always enough time to do it over”
Here Dr. Conway is talking about how systematic top-down design processes break down in the face of the uncertainty of discovering a software design. This breakdown causes us to “abondon our creations” with predictable regularity.
But how often do we get the opportunity to do our software over these days? Is it really common to throw away our projects and start again? How much time do we spend re-implementing systems compared to extending the systems we have?