A Rational Design Process: How and Why to Fake It

Persons who think that designing software is a rational and logical process are highly mistaken. Within the process of writing computer code, synonymity exists with the theory created in the 1970’s by Horst Rittel called a ‘Wicked Approach to Design Thinking’.  These similarities are aligned with this ‘chaos’ theory as writing code is never a logical ‘top down’ process, but rather quite chaotic, irrational, and usually begun with a cryptic goal or set of instructions; however, according to the article, designing software can actually be faked by following a consistent set of guidelines. Notwithstanding, before an understanding of why this process can be faked, the process of writing code must be better understood. Similar to architecture, the persons hiring a software designer often do not know what they want or how to explain their desires. Furthermore, “experience shows that human beings are unable to comprehend fully the plethora of details that must be taken into account in order to design and build a correct system”. In short, this statement reaffirms the notion that humans cannot comprehend large amounts of data that is not broken into segments or modules. As a result, the process of writing code is always one that is a product of reverse engineering or uninformed and vague requests that involve astronomical amounts of unsorted data. According to the article it is necessary to follow a strict set of rules in order to properly manage this data and show that the end product has been seemingly comprehended and concise from the start. The steps to achieve this start with establishing required documents (the process of organizing the large plethora of information that is given at commencement) and next to decide on the structure of the data in the form of modules. Next, a smaller scale version of the first two requirements is undertaken for the specific modules where a required documents and structuring of the modules is necessary. Finally, after all of this organization, the code can be written quickly and subsequently maintained. Although the set of rules that govern the writing of software can be seen as quite rational, it serves only to protect  and nurture the inherent irrationality of the process.