Platforms like Wordpress, Drupal, and Ruby on Rails have ruled the web for a long time.
But often times, what initially seemed like a natural direction to grow can become a trap of unproductive work for work's sake.
How it starts
The story begins on a traditional server-rendered web framework, such as Rails, Django, or a multitude of others. Then, an intermediate or senior developer starts to wonder:
“I'm so excited to use this new and exotic framework!”
“I can’t wait to use all those fancy npm libraries!”
“I can’t wait to feel like a real application developer!”
“I’m so excited to have React on my resume!”
“I’m so excited to apply my skills to mobile and desktop platforms!”
How it ends
- Fiddling with an additional build pipeline
- Booting the React app with serialized state or an API call
- Implementing caching, tree shaking, and async module loading to handle the large JS bundle size
- Finding clever ways to handle the flash of un-styled content while the app loads
- Reconciling the traditional CSS from the server with the CSS-in-JS from the React app
- Adding API routes and controllers for the React app
- Debating with your team if the React app and the server should be in one git repo or two
- Adding a GraphQL layer to your back-end
- Finding "React compatible" libraries for animations, drag and drop, and select lists that come with their own performance trade-offs
- Cycles of deciding which state management library to use, changing your mind, and re-writing parts of your app
Substitute "React" for any front-end framework, and the result is the same.
What are some alternative ways to grow?
The opportunities that exist in the world are as far-ranging as your imagination can reach.
There’s no reason to limit your growth pathways to just the latest tool laid out by a rich FAANG, or keep yourself tied to an endless treadmill of tutorials.
Here are three suggestions to engage your creative mind, and grow from the inside-out:
- learn algorithms and data structures, and model parts of your application as a graph, a stack, or any number of alternatives, and express your own unique style through the choices you make
- become a leader for your team by modeling existing code in state charts, and accidentally fix bugs in the process
- master an obscure technical topic, and become a highly-paid expert in that community
These are just a few ideas I came up with after thinking for a couple seconds--you dont need to be constrained by huge software stacks and complicated dependency trees.
The real reason for this blog post
When I started my dev career, I relied on popular frameworks to bridge the gap between where my skills were at, and the projects I needed to accomplish. The problem is, those frameworks became a trap that limited me for far too long.
And so here I am, building products with state charts, the raw DOM, and the simplest software stack I can possibly use. I hope that an intermediate developer will one day sneer at my work, because it's not using the latest libraries, and then some time later find himself, thinking "Wait, that was actually a good idea!"