Unlike Plato, Aristotle’s view of reality is not at odds with our experience of the world. While Plato believes that there are two worlds—the perfect world of forms and the imperfect world that we perceive—Aristotle believes that there is only one world and only one reality, which is the world we perceive through our senses. Sense perceptions provide us with experiences, from which we generate forms either as mental images or words.
In the waterfall model, the perfect world of forms is the set of ideal organizational-defined processes for a typical project. The imperfect world, which can be perceived due to changes in the business reality, is addressed through process tailoring. In the agile model, the focus is on reality, which is the actual world perceived by a person working on a project.
For Plato, forms make up the primary aspect that the world around us is derived from them. Because we can only know these forms through reason that is independent of our experience, thinking precedes experience. In the case of software development, this is the predictive or waterfall model. Aristotle, however, believes that forms make up the secondary aspect that the world around us is derived from. Because we can only know these forms based on our experience, experience precedes thinking. As it relates to software development, this empirical model is akin to agile development.
This leads to an interesting analysis of how Plato and Aristotle think and how waterfall and agile software development work in the context of commercial software product development.
For Plato, our experiences—mere projections of what he considers reality—stand in the way of our knowledge of the truth, which is the world of forms. From this line of thinking, we should reject the experience that contradicts a belief we hold. For example, if experience shows that failure is necessary for success and the Platonic idea of the path to success is a straight journey, then we should reject our experience and accept our original belief. This is the way perfectionists form their worldview and is also the way waterfall model works: You must clearly define requirements up front, despite the reality of dealing with changing requirements. Because of this, you must therefore reject the reality of the situation and accept the model that postulates that requirements should be defined clearly before moving to the next phase of architecture and design.
For Aristotle, our experience of the world is fundamental for knowing the truth. Therefore, if an experience contradicts a certain idea that we hold, we should then reject the idea and not the experience. If we discover that the path to success contains repeated trial and error on our parts, then we should reject the idea—whether it is ours or other people’s—that the path to success can be free of failure. This is the way optimists form their worldview and is also the way the agile development model works. Because requirements are always changing, you need to start with a few clear requirements and then subsequently go to architecture, design, and so on. These activities are seamless without having a clear distinction of a phase as in the waterfall model. Thus, agile aligns with reality and rejects the idea that requirements can be clearly defined up front, especially in the context of commercial software product development.