The Two Paradigms of Software Design
This work addresses foundational philosophical conflicts in software design, impacting research, practice, and education in information systems and software engineering.
The paper contrasts the Rational Design Paradigm, which treats software development as a methodical and plan-centered process, with an Alternative Design Paradigm that views it as an amethodical and improvisational process, framing the problem and building artifacts simultaneously.
The dominant view of design in information systems and software engineering, the Rational Design Paradigm, views software development as a methodical, plan-centered, approximately rational process of optimizing a design candidate for known constraints and objectives. This paper synthesizes an Alternative Design Paradigm, which views software development as an amethodical, improvisational, emotional process of simultaneously framing the problem and building artifacts to address it. These conflicting paradigms are manifestations of a deeper philosophical conflict between rationalism and empiricism. The paper clarifies the nature, components and assumptions of each paradigm and explores the implications of the paradigmatic conflict for research, practice and education.