Simply Complicated

26 Apr 2022

The Foundation

The way I like to look at design patterns is that they are a foundation for us to build on that has been created through past work and problem solving by other software engineers. I believe the quote, “If I have seen further it is by standing on the shoulders of giants”, from Issac Newton relates really well with this concept in that it gives current software engineers a greater starting point to build off of and grow from. Design patterns provide a general and reusable solution to a recurring problem that can be applied in a multitude of situations. Therefore, they are highly valuable in the world of software engineering. They also portray the progression and growth of software as well as it’s engineers in the form of having definitive and efficient solutions to commonly faced problems.

Learning from the Past

Prior to learning about them, I had no idea I was using design patterns in my code and didn’t recognize them as a concept. However, now that I am more familiar with them, I realize that they have played a very significant role in my work thus far, especially in my final project. A design concept that plays in big role in my team’s final project is MVC in Meteor. We have utilized multiple different collections for profiles as well as sessions/workouts for users of our application and this was easily implemented using MVC. The singleton pattern has also been essential to the implementation of our application. This is shown through the use of a “ProfileCollection” class that manages access to the MongoDB collection of profiles in the database. A single instance of said class is created and used in the rest of the application to manipulate the collection. These are just a couple of examples of me personally using design patterns.

Hindsight

After analyzing my code further I realized that without the availability of design patterns it would’ve been drastically harder to create an application in the way my team has done so. The design patterns play a vital role in the project and allow for a bypass of many problems that would’ve taken significantly more time to figure out. In hindsight, design patterns are the result of many hours of trial and error and give current software engineers more time and ability to focus on the problems specific to their project without having to worry about the basics.