Andrew Davis - Web Developer


You don't have JavaScript Fatigue, you have Software Fatigue

I recently saw a discussion about "human readable source code" started by this tweet:

Can we agree that, in 2018, human-readable "View Source" is a constraint the web can discard? I benefitted from "View Source" too, but today we have an embarrassment of resources and open source examples I would have killed for as a kid.

This tweet is questioning wether "view source" is still a relevant tool for learning modern web development and asking if we can do away with it. There were some strong reactions:

we most definitely, positively, profoundly, cannot. i weep at this thought.

And:

Hello, those of you who are about to start learning the web. i'm sorry, on behalf of all of us, that we've made it so much harder for you to do so. we keep inventing new ways to obfuscate what we're doing in the hapless pursuit of "performance" and "developer convenience".

There's also Everything Easy is Hard Again by Frank Chimero who says:

That breaks my heart, because so much of my start on the web came from being able to see and easily make sense of any site I’d visit. I had view source, but each year that goes by, it becomes less and less helpful as a way to investigate other people’s work.

He also laments:

simply npm your webpack via grunt with vue babel or bower to react asdfjkl;lkdhgxdlciuhw

These are the latest sentiments in the "JavaScript Fatigue" series that started over two years ago. JavaScript Fatigue is best described as the view that modern web development is:

I think it's important to have some empathy for those who see JavaScript Fatigue as a real issue. Therefore, I'll start with what I think are the valid points. On the way, we might discover why the sentiment is so persistent.

So, let's look at the "view source" for some major sites. Is it possible to learn from it?

Facebook

Facebook View Source

Amazon

Facebook View Source

That wasn't helpful. They're absolutely right. It seems impossible for a new comer to learn by using "view source". Does this mean that web development is "inaccessible to new comers" though?

Let's read this again:

"… So much of my start on the web came from being able to see and easily make sense of any site I’d visit"

What he's really saying here is that it isn't possible for new comers to get started in the same way he did. That's a key difference. He's correct in saying it.

No one can go back in time and learn the same way Frank, myself, and many of our generation did. We can't replicate the last 15 years of building for the web. Even if we could, would someone want to? I doubt that slicing up images to get rounded corners in IE6 was a terribly positive formative experience for me, despite the glow of nostalgia. 😅

It's also true that we're not building the same things we did 10 or even 5 years ago.

It is my suspicion that JavaScript Fatigue comes from forgetting that the web has changed.

The web is now about accessing applications and using services. Apps and services are software, not static sites. To get started writing software is a different, often more complex task. It's still possible, but it requires a different approach than using "view source".

It's easy to forget that the job description has also changed. Building a website and developing a web application are two completely different endeavors! Look at that last sentence and you'll notice even the language we use has shifted.


Let's look at a couple of other claims.

Writing software is definitely complex.

Applications are about handling and transforming data as well as responding to input. We need to think about managing state and user input. These are legitimately difficult problems to solve.

This increased complexity requires new ways of thinking and new tools, hence all of the new tools.

Tools like jQuery, SASS, Babel, Webpack, and React all evolved to help tame web app complexity and ease the developer experience. They solve real problems like managing state.

This could be said about many things in modern life, but web app developers in particular need to play catch up to decades and decades of traditional programming trial and error. Just look at a list of programming languages or operating systems and you won't feel so overwhelemed.

On top of that, the DOM's innate "weirdness" and the web's diversity make it a difficult platform for even the most experienced programmers.

So what are the solutions?

Practice the skill of evaluating solutions. There are tradeoffs and benefits to everything. Learning how to do the research is more important than knowledge any individual framework.

Ask questions! It's always the easiest to learn from a person and they'll probably learn something from teaching you. Everyone saves time and "fatigue".

Remember that things do get better. There was a hopeful note at the end of the original JavaScript Fatigue article:

2016 will likely involve a serious, focused conjoining of projects, tools, and language features to merge the best and brightest packages/tools/boilerplates into more formalized projects

It's easy to see the "convergence" that was foretold in the JS Fatigue article! There are tons of "jump right in" solutions like Create React App.

Finally, embrace the new ways of learning. There are literally limitless tutorial sites like Linda, Udemy, Pluralsight, Front End Masters, Egghead, YouTube talks. Learn to love them!

Best of luck in 2018!