I tweeted out my perspective on what I think is causing so much angst and it seems to have resonated:
What I think is happening. Devlprs are freaking out cuz theyre looking at what they need to do to stay relevant & it’s hard to pick a route.
— Rey Bango (@reybango) October 4, 2016
Since I only had 140 chars to say that in, let me elaborate a bit.
The Good Old Days
Here are some examples from Twitter:
“@reybango The rest of us are looking for some GD stability. To, you know, make shit. For like a year or two, at least.”
“Make all the analogies you want, but it’s willfully ignorant to claim the fragmentation & churn of JS tooling isn’t overwhelming to outsiders”
“@reybango for beginners i think it is easy, the old dogs, now they have to learn new tricks, difficult but not impossible. 1 step at a time”
“@reybango reminds me society that buys cool shoes every season. Looks silly. Devs should just do their real stuff with less frameworks.”
“@reybango also stacks keep changing so fast. I’m not a fan of constant “updates”, seems lazy, unplanned and bug-ridden.”
This reinforces my thoughts that many developers want to be able to pick a route and feel assured that by learning it they’ll have some stability and a sense of relevancy for a decent period of time. I definitely think that’d be nice to have since the churn can be exhausting.
Evolution was Inevitable
John Shewchuk, VP & Technical Fellow at Microsoft, said it nicely in a thread I was on:
This is probably a side effect of the rate of innovation here – and this innovation is often leading other programming environments.
Quincy Larson, founder of Free Code Camp, said:
We are trying to build applications that run right in a dozen browsers, look good on thousands of different devices, load fast enough for impatient commuters in the subway, and are still accessible enough that blind people can use them.
And he’s absolutely right. Web applications are becoming more involved and developers are trying to meet the needs of these applications. This translates to the need for better and more feature-rich tools that are more easily able to solve complex problems. And in many cases, these tools are being built to fill the holes that deployment platforms are missing.
As I’ve been going through the process of learning Node.js & Express, I’ve started to have a better understanding of why this new tooling is important. Like many developers, I’ve experienced the frustration of having to learn about so many new moving parts just to scaffold an application and at times cursed at having to work with so many different tools. But as I’ve continued on, I’ve started to get a better understanding of how and why they’re necessary and appreciate the functionality they provide. I’m not saying that I like having to use so many different tools to build an app but I will admit that I understand the need when you want to push the web forward.
You Don’t Have to Know Everything
A lot of the discomfort we’re feeling is the belief that we need to know how to use every new framework or tool that comes out. It’s really not the case. There will always be someone building a new tool or library and of course you’ll have the early adopters that will flock to it saying that it’s the cool thing that everyone should be using.
My colleague Bill Barnes really articulated this well:
This gets to an important and underappreciated soft skill of development, which is the ability to predict winners. More experienced developers consider a number of factors including:
- Industry trends (both in functionality and implementation)
- Aesthetics in API design
- Currency of maintenance
- Quality of contributors
Experienced developers can simply sense an emerging consensus faster than new developers.
I think the best thing we can do to help new developers is not just guiding them in what to learn, but also helping them understand what factors went into that choice. Let’s teach them to how to fish. And shop.
I agree with this assessment and it ties into the “you don’t have to know everything” statement.
My teammate Aaron Gustafson adds:
One other thing we haven’t really discussed (and was a central conceit of the piece that gets a little lost amid the absurdity) is that we are overcomplicating things. There are absolutely certain instances where an Angular or a React or any other framework or library can be the exact right tool for the job, but I think that folks building for the Web have a tendency to reach for a library or a framework immediately without actually asking if it’s needed. Without going too far down the React/Angular/Flavor of the Month rabbit hole, consider the ubiquity of jQuery. There are many web designers & developers out there who drop it into every project they build without a second though, never asking themselves why. It’s just part of their template. In many cases, the don’t need it.
He’s absolutely correct. We should be asking why we need a framework or a tool before just dropping it in. It’s not to say that you shouldn’t learn new things. YOU ABSOLUTELY SHOULD BE CONTINUOUSLY LEARNING! But you should ensure that you have a solid base to work from. The general consensus is that you should get good at plain ole JS, learn ES6, HTML, CSS and dive into at least one top framework. This gives you the foundational skills of web development that can be easily applied to almost any modern web project.
You Can’t Get Comfortable Anymore
I’ve personally chosen to learn Node.js/Express + React + Functional Programming to build apps because that seems to be the the emerging consensus of how to build modern web apps (thanks Bill). That will mean that I’ll need to learn the tooling that goes with it (uncomfortable) but I’m going into it feeling like I have good foundational skills and an understanding that it’s a continuous learning process.
Keep saying this as I learn Node/Express: "Don't stress the syntax, just learn the concepts & flow. Syntax will come with repetition."
— Rey Bango (@reybango) October 6, 2016
I know it can be hard but I’m here to tell you to keep at it. It does get easier with each step. Embrace being uncomfortable and learning new things because the things you’ll build with these new tools can be absolutely amazing.