Everyone has their own ways of solving problems. Whether they are solving the problem inside the box, on the box, or outside of box; there are boundless of solutions for a problem. However, when there are problems which are similar to each other, their solutions would most certainly be similar. SO having a basic structure of a solution which can be applicable to such problems solves a lot of time. Rather than starting from stratch, there is a rough outline to begin with. For software engineering, this is known as desgin patterns. In which templates solutions to solving problems which are structurally similar. A comparison I see most fitting to design pattern to software engineering is character customizations to games. Given a base character we can then customize to solve the particular level of the game. While the game may have different problems, it is structured similarly enough that we can use our character and customize a bit to be able to succeed and pass the level.
There are three main types of design patterns: behavioral, creational, and structural. With the three main types, there are 23 common patterns, the most common ones being: factory: which is an interface creating objects, singleton: instance of a variable which is useful when needed through out the system, and model view controller: which an application has a data model which can be presented and controllable. By using these prewritten structures and patterns, software engineers can quicky find their solution as they have a basic solution to work off of.
Only learning of design patterns today, I did not realize that these patterns have been implemented in the solutions we have been using for our projects. The design pattern Model View Controller being one, as we use Meteor and MongoDB to build our project applications. The Model View Controller allows the user to see and interact with the information and data. For my final project, this can be seen as the application will load in the CLub information for the users to view and navigate.