Torvald's Theory of Developer Evolution

25 Apr 2024

A Confusing Concept

When asked to write a technical essay about “design patterns” my group and I ran into during the development of our final project (which can be found on uhm-lost-and-found.github.io), I initially had no idea what that meant. Was it something along the lines of patterns we recognized in the development that stemmed from other developments or previous developments on an individual level? Because of this confusion, I decided to do a very light amount of research into what “design patterns’ actually were and discovered a lot of things I considered normal and self-evident were actually products of the design patterns of other developers before me dealing with the same reoccurring roadblocks in their development path. Being made aware of this helped me to actually point out where in the process of the development of my group’s final project these “design patterns” showed up.

Like Evolution

Honestly, the closest thing I can compare what “design patterns” are in a more basic sense than what basic Google searches would give you is the process of human evolution. For example, at some point in human evolution, we discovered fire, but we didn’t know what we could do with it or how it even came to be. At the same time, humans evolved to understand the importance of safety and shelter from the natural environments to survive. Then you look centuries and centuries later down the line and we started using fire for smelting two minerals together to create steel that we use to make buildings!! Obviously from an outside perspective, you’d see that and think, “How the hell did we get here?”, but the process of getting there and the eventual understanding of what fire can be used for is very similar to the idea of design patterns in software development. Developers have a problem, which in the case of this metaphor would be the lack of strong shelter in the case of a heavy storm or hurricane, and over time they figure out how to use the tools around them, in this case, fire and metals/minerals from the earth, to create a stronger and more cohesive solution, in this case, buildings either made of steel or reinforced by metal bolts/rebar or something similar.

The Evolution of a Mock Website

The main example of a “design pattern” I have come to recognize in my own work being done on my final project mock website for a class I’m currently in would be an offshoot of the “Model-View-Controller” design pattern. This is essentially a design pattern that has grown to be more common in software development projects where pages would be split into different parts with interworking pieces to allow different developers with differing skill sets to all work on a project in a way that allows each developer to work on the aspect of a page that they are most comfortable with. For example, someone who prefers working with databases and the back-end would work with the “model” part of the page, and someone who prefers working with UI interfaces would work with the “view” part of the page, and so forth. In the end, instead of receiving just one product, it would be 3 products that all work together cohesively to create a page. This is exactly what happened during the development of the mock website with my group, as I preferred to work with databases and the back-end and another member preferred to work with the UI on the front-end, which culminated in a final product that worked and fit together well.

Closing Thoughts

Being able to identify commonly occurring roadblocks or issues in the development process is the first step in figuring out a working “design pattern” that solves different instances of this problem or roadblock should it inevitably occur again, even if those instances are all completely different from each other in purpose. This is how developers evolve and change to be more efficient and “safe in a stronger shelter”, to touch back on the metaphor again, so it is something that is most definitely worth looking into for aspiring software developers and even current ones who wish to improve themselves.