When coding, you are essentially trying to reach an end goal, or accomplish something using lines of commands. Some may look at it as a big puzzle, and with every puzzle, there is a pattern to go along with it. In coding, we call this a design pattern. Design patterns are solutions to general problems that us as software developers will face during development. These solutions were created through trial and error over a period of time, much like experiments in the scientific field. Code is often very lengthy and time consuming, so every edge we as programmers can get is a great asset to our arsenal. Time is money and the more time we can save, the more efficient we can be. From beginners to experienced developers, everyone should learn design patterns to speed up their workflow.
In general there are three basic types of design patterns. Those being structural, creational, and behavior. Structural are patterns that deal with relationships between entities, making it easier for these entities to work together. Creational patterns are those that provide mechanisms to make it easier to create objects in a way that pertains to the situation. And the last one is behavioral, which are patterns that are used in communication between entities and makes it easier and more flexible for these to communicate. Looking over these patterns, I believe I have used a version of each of these before, even without me realizing it.