Designing the Future

25 Apr 2025

History and Technology Collide

Some of the greatest buildings in history have intricate and effective architecture. However such designs were not the idea of one person overnight, but rather methods and principles that were refined and redefined over generations. Akin to the saying “Rome wasn’t built in a day”, such marvels take time to perfect and improve, as is the same with any work or craft. Software development is no different, as design patterns serve as technological blueprints, with software being the craft in this example. Just as architects of the past pass down their knowledge for future architects to build upon, software developers don’t simply pass down solutions and rigid guidelines, but rather provide principles that can help pave the way to the future of software development.

Principles that’s Helped Me Pave My Way

Some design patterns that come to mind are the decorator pattern and observer pattern. In the decorator pattern it allows one to add responsibilites to objects dynamically which adds to the functional possibilites of certain UI components without changing the core structure. I once did a project where there would be “customers” and each would have a different order. The core structure of it was that the order would be a burger, with the added responsibilities being add ons to what one would typically ask on a burger, like lettuce or ketchup. So instead of creating new objects for each type of possible combination which would take way too much time and space the decorator pattern allows for there to be one core structure with the option to add on certain attributes. In the observer pattern it is similar to showing relevant feed to someone on a news app, pertaining to what they find interesting and updating it in real time. I recently did this in one of my ICS classes where we had to create an algorithm that would group posts in a media app by the traction it had, such as like and comments, and push it to those who found the topic interesting in order to boost interaction further in a positive feedback loop. The pattern allowed for objects, in this case observers or users, to be notified of changes in another object, which would be the said subject of interest.

What’s Next?

Similar to how different countries have different styles of architecture, many software developers have different patterns that they have learned and taught others. While I myself may not know a whole lot of patterns, it is part of my job to take what I am taught and use it in a way that will encompass everything I can and blend that knowledge to the best of my ability, similar to how architectual patterns were changed over time as well.

ChatGPT was used in this essay in order to find out the names of the patterns (decorator and observer) and was used to look up more examples to better understand how they work and how I have used it in the past.