As a software engineer, the chances of brainstorming and writing the perfect program without any concerns along the way is almost impossible. You will be facing a variety of problems such as not knowing where your program is causing an error, or not having an idea of how to form the structure of the code. Fortunately, the chances that the problem that you faced through programming being the problem that was just discovered in the programming environment is also almost impossible. The problems that you just witnessed during software engineering are probably similar or almost identical to the problems that came about by countless numbers of software engineers in the past already. Thankfully, in software engineering field, there exists the instruction manual (not exactly an instruction manual) for these software engineering related problem, also known as design pattern.
The term “design pattern” was first introduced in the article, “Using Pattern Languages for Object-Oriented Programs”, in 1987. Design pattern gained attention in 1995, when the “Gang of Four”, Erich Gamma, Richaard Helm, Ralph Johnson, and John Vlissides, listed 23 different types of solutions that can be used during software development. Other software engineers continued to refine and add more design patterns, and as a result, there exists thousands of design patterns out there that can be utilized during software engineering environment, rather than wrapping your head with frustration trying to figure out how to structure your project.
Having a general understanding in design patterns can be very helpful because it could also be used as a communication tool between other software engineers. For instance, if you are working as a group, which will probably be the realistic case working in the industry, instead of explaining step by step on how the group can implement the idea to their project, which could cause a possibility of not fully understanding each other’s idea, one can simply say “let’s use this specific design pattern” to better understand each other’s plan on the project.
The term design pattern can be a new topic that beginner software engineers never heard of. However, the chances of them using a design pattern is pretty common. For instance, myself and my group are currently working on a project named Roomniverse, which is supposed to provide similar experience to using famously known social media platform such as Facebook, but specifically for UH manoa users in this case. After finishing milestone 2 for this project and reading through design pattern related topics, I have realized that our group was utilizing the MVC(Model View Control) pattern, which controls the representation of information to the user and accepting the information from the user using the controller. What made me surprised is that our group was using this design pattern, without even knowing that methods we used has a name called MVC.
Design pattern is a very strong concept that can be utilized to help our way through as a software engineer. However, instead of searching for what design pattern to use for this problem, it is essential to understand the factors that has to be considered when it comes to handling the issue, and why these design pattern recommended are considered to be effective for this specific set of problems. Becoming a good programmer is not about how fast you can come up with writing codes. It is about how critically thinking about how to solve a problem using a variety of techniques, while understanding how the techniques utilized works and its effectiveness.