E63: Reflect on Design Patterns

04 Dec 2024

I would like to bring into question the parlance of “Design Patterns” as it is most commonly used. The term (in the context of computer programming) refers to common ways in which programmers solve repeatedly occurring problems and while it does accurately describe this happenstance I feel as though it is too broad of a term for what it describes. Design patterns develop as programmers have to solve problems in their jobs and they start to realize that they are writing similar code for the same problems and so they formally contextualize it. However programmers are solving problems that (for the most part) have solutions, they are writing code and designing systems that may occasionally be different but for the most part use a model and then add or adapt it.

However the word design in most contexts specifies a level of creativity and creationism that is rarely present in many aspects of computer science or programming. Unless you are performing research or are in a startup that is actually doing something new, you are writing code that has similar models to stuff that is already out there. In this way the statement of a design pattern seems contradictory, a design is a creation albeit usually more structured than say an art piece however it is still creative in nature. Yet a pattern is something that has a regulatory aspect, it must repeat at some point in order for it to be quantified as a pattern. In this sense a design pattern is something that is both creationary, structured, and repetitive. This is why I bring this idea into question, not because of the nature that design patterns describe but by the common interpretation of the phrase being so vast.

Let us take an example of a design pattern that I have used in many of the assignments in this class, the “Model, View, Controller” pattern that is used in almost all web applications and fundamentally describes how an app models, views (shows to the user), and controls data. This most certainly quantifies the notion of a pattern, as mentioned it is widely used in web applications in some aspects. I would like to question the inherent creativity of this approach, while it is a marvel of design it doesn’t seem quite so inventive or creationary more just a necessity to achieve a desired outcome. So while it probably satisfies the base requirements to be a design, it fails to show individuality or creativity in the solution. I will admit this argument is somewhat flawed and my definition of design is quite pedantic but it is still an interesting thought experiment into what we do or do not describe as creative.