I think I have discovered something very significant today…
While reading some articles dealing with measuring progress in a software project, I saw the S-curve being explained by David J. Anderson. The S-curve is the curve many project managers get when they plot the number of completed features against time. This curve seems to show us that a project team has trouble being productive both at the start and at the end of a project, while in the middle of the project they are completing the highest number of features per time frame. When I saw this I immediately recognized the curve from a number of books and articles on the subject of complex systems. For example: this is what Kevin Kelly explained in his book Out of Control:
If you delve somewhat deeper into this subject you will find that a software project is a complex system with many different types of nodes (artifacts, people, tools, features, qualities, assets…) Complexity theory shows us that a system is not complex because of the number of nodes, but because of the number of connections between the nodes. If you add connections to a system in a linear way the behavior of the system will show growth characteristics in the form of an S-curve. Therefore, even if the amount of effort in a project remains constant, you will always see an S-curve when you plot some derived characteristic like the number of features completed.
This would mean that, for an easier (linear) evaluation of the progress in building such a system, we should not be counting the number of completed nodes. We should be counting the number of connections!
Does the Nobel Prize committee have a category for software engineering?