Prior to taking Information and Computer Sciences (ICS) classes in college, I would have never known that we all use design patterns in our everyday lives. In general, design patterns refer to different methods of solving common problems; it’s a very flexible blueprint in a way, and the individual implementing the design pattern can mold it in the way they see fit based on the problem. If you want to read up more on Design Patterns, take a look at my essay, “Artists Use Design Patterns, Too.”
Growing up with an architect father, I had a lot of experience with design patterns, except it mostly had to do with architecture and buildings. It wasn’t until my exposure to software engineering that I learned about design patterns in programming as well. Apparently, I had used a type of design pattern in a game project without even knowing I did!
Design patterns are incredible, and if you know the concepts to even some of them, it really changes your world with software engineering. It helps you implement coding that allows you to work more efficiently and quickly. When machines and programs get too complicated, design patterns are your best friend. You could even utilize your fascinating friend in any part of your life. As I mentioned, my father is an architect, so he creates beautiful and practical buildings tailored to his clients’ requests and tastes. Usually, a lot of his work includes the same type of problems–“What would be the best placement for the stairs?” or “How could I make this look unique and also cohesive?” These questions pop up time and time again, and design patterns help my dad answer them. It usually follows the same thought process of where the windows, doors, or even dining table might be, but they’re never the same solution. Design patterns are not solutions, just different approaches or methods of finding solutions to recurring problems.
Moreover, my dad works with a team. There are multiple deadlines to many moving parts, and it’s honestly a headache, but he manages it by setting tasks for himself for every deadline with his team. It sounds eerily familiar to a concept called Issue Driven Project Management (IDPM), which is a style of agile project management that I used for my BowedIn app project. Agile project management in software development involves a process to bring about a project through a repetitive type of approach.
For example, in my BowedIn project, my team created individual tasks for each milestone. This allowed us to work as a team while working independently. It sounds like common sense, but it was extremely effective. You would be surprised by how much more you can get done when you divide your assignment into easier tasks. Obviously, my dad knew this too because this was his process with all of his projects. It kept him on track. It keeps me on track as well, and I know that I will most likely use it for any future projects, especially those involving teamwork.
Never thought I’d be doing what my dad is doing, hah! I guess it’s true what they say: like father, like daughter.