There are two major obstacles that need to be addressed by YDD. Both transcend Agile and apply to all approaches to developing software.
One: almost all software developers today already operate on the basis of a "default theory." Unfortunately this theory is wrong and counterproductive. Briefly stated, developers, especially those trained in classic computer science programs, use the implicit theory, "the world is a computer."
Things learned from mathematics and the physical sciences allowed, and continue to allow, us to make advances in the computers and the basics of computing. However, as Brooks noted, those same tools do little to help us understand the essential complexity of the applications and systems that employ computers. This is the primary reason I objected to Model Driven Development earlier. MDD (or MDA) insists on projecting the same formalisms onto the world at large as are used inside the computer, and this is a fundamental mistake. It is nevertheless a prevalent, though tacit, presupposition of most software developers.
Two: Software development is not a production process!
Naur wrote his paper on theory in large response to the prevailing use of the production metaphor of software that justified all the effort in the areas of project management and the devising of ever more formal and repeatable development methods.
Management would like to believe that software development can be organized and controlled like any other manufacturing process. They would like to believe that developers are interchangeable commodities to be acquired at the lowest possible cost from anywhere in our "flat world."
Agile appeases management with practices like estimates, planning games, and burn-down charts. These practices have a dual role: helping us develop our theory of the world, how our software works, and what we know and can do on the one hand; and giving management the illusion of control over a rational process. Unfortunately, most of the time it is the latter role that is stressed.
The adoption of Lean by the Agile community is also a double-edged sword. Lean values are deeply compatible with agility. Too many lean practices are misinterpreted as techniques for improving production.
Any approach to software development that fails to address Brooks' essential difficulties, and THE essential difficulty of the conceptual construct, cannot offer more than a band-aid improvement over the current state-of-the-practice.
Agile values, principles, and most of its practices (plus Lean values) provide the most promising foundation to date for tackling the essential difficulties. As practiced, however, Agile/Lean is failing to realize its potential. What we have today is an excellent first step - but we need more. YDD is a way to embellish, enhance, and refactor Agile into a much more powerful (yet simpler and more elegant) approach.
This short article is a "call to arms," an initial argument for needing YDD. It is not a full exposition, as the approach is still under development. You can expect to see a full treatment of this subject in the near future. You can also be a part of the effort to establish this approach. Contact the author for more information.
About the Author
Dave West has been a professional software developer for too many years to count, in roles ranging from programmer to Director of IT.For the past fifteen years he has split his time between consulting and academia.Currently Professor of Business, Innovation, and Technology at the College of Santa Fe: formerly at New Mexico Highlands University and the University of St. Thomas.His own education was an eclectic mix that included Asian Philosophy (undergraduate at Macalester College), Computer Science and Cultural Anthropology (graduate degrees at University of Wisconsin-Madison)