The world of software development on the client-side is like living in the eye of a hurricane. You get the false sense of safety when you get too comfortable, and when you don’t maintain your position within the change/chaos, your livelihood is uprooted from under you. This analogy is our industry in a nutshell.
Every few years, or months even, there’s a new technology or pattern that comes into play and is all the rage. Realistically, it’s all just a placebo. Quality engineering will always be the same. Today, we’ll touch on a few reasons to justify this.
The Wheel Never Changes
This year I had a pretty interesting conversation with another well-versed engineer. In comparing the frameworks of today and yesteryear, we came to the realization that all we’re doing is the same patterns with a different name. Think of React and the use of hooks.
A hook in React is where you would put a collection of logic relating to a particular context of your application. The use of a hook instead of putting said logic directly into a component is the better option because it offers more flexibility, improved ease of injection of data at different levels, and code readability. In essence, the component becomes presentation only, and the hook houses business logic.
Funny tho. Sounds just like the views and controllers we all probably learned programming on 🙂
Leaving Patterns Brings Poor Code Quality
Have you ever looked at how a lot of engineers who got started within the last few years use HTML? To say semantic HTML doesn’t matter anymore is an understatement. In fact, it’s gotten to the point where you’d be better served saying it’s like the 21st President of the United States. An important historical figure, a key cog in moving the industry forward, and only would know today with the help of Google search.
So of course this means we have a complete <Div /> overload everywhere on the web today, correlating with loss in understanding proper HTML patterns. The same can be said for the other clientside languages in CSS and JS.
Patterns Bring Easy Adaptability
I spend a lot of the situations I encounter in my life using the lessons I learned from studying martial arts the majority of my life. The biggest philosophy I utilize every day is all about perfecting form and technique. My motto has always been you perfect your technique not so you throw the perfect punch or kick every time. Instead, it’s about being able to apply those technique learnings in any circumstance so I can always throw the best possible punch or kick.
I look at engineering a lot in the same vein. Patterns aren’t meant so that you have to 100% follow them every time you code. They’re meant to act as a guide to help you find that symmetry so that even in the worse of the worse codebases, you can create a beautiful flow and symmetry inside the madness.
Patterns are always going to outlive any framework or library. Doesn’t matter the language, or superset, the core of how you code will always stay the same. So keep that in mind whenever you’re getting familiar with a new framework, or becoming too reliant on one. No matter the name, fancy conventions, or herd mentality, patterns always win.
They are the eye of the hurricane we call being an engineer.