The Power of the Web

The Web has never been a place of purity. Yet people often want to turn it into that.

In The Case Against Progressive Enhancement’s Flimsy Moral Foundation, Josh Korr lays out his case that progressive enhancement has a giant flaw. “Progressive enhancement is a philosophical, moral argument disguised as a practical approach to web development,” he says. He goes onto to poke holes in the moral case for progressive enhancement, saying that those advocating for progressive enhancement are: “Pushing an incoherent moral philosophy in the guise of a practical discussion, and kinda being a jerk about it.”

Korr has also wrote a follow-up post, clarifying his tone snd points. He says:

“The purpose of my post was not to assess progressive enhancement as an approach to web development. (Hence my not-a-dev-disclaimer.) And yes, PE is undeniably a practical approach to web development.

The purpose was to offer an explanation for the PE discussion’s dynamic: how it’s highly combustible and seems to go around in frustrating circles.”

I can understand why Korr makes his main point. The discussion around some topics in the web world do go in circles, and get contentious. This happens in the accessibility community too.

Progressive enhancement, like most principles on the Web doesn’t have an always-optimal approach. To succeed with it depends on your users and your project. A site can have okay accessibility and still deliver a passable experience to users with disabilities. A project can do a decent job with performance, and still be production ready. The Web is messy. It moves fast and slow. Think of how fast responsive design took hold. Now, remember what a monumental change happened when images hit the Web in Mosaic. But we’re still trying to figure out to best deliver those images responsibly today. The Web is a fragile environment. The entire thing relies on connections, which can be broken, interrupted or suboptimal. Progressive enhancement just helps you think critically about how to handle the variables. That way, your users don’t have to worry about them.

The power of the Web lies in its millions of different connections. All powered by people somewhere in the world. That provides all the fuel needed for a difference of opinion now and then. The circular conversations don’t matter as much as the acknowledgment that many paths to success exist when we hear each other out. We just need to stay open to new ideas and not get too caught up in semantics.

One Way to Learn JavaScript Deeply

At WordCamp U.S. 2015, Matt Mullenweg set a goal for everyone in the community: Learn JavaScript deeply. But how does one do that?

In this post, I’ll share what’s worked for me in the past six months or so as I’ve dove deeper into JavaScript.

How Do You Learn?

These days, you can go in many directions. From books and blog post tutorials to courses and bootcamps, you have many ways to learn something new. There’s no one right way for everyone. You have to experiment to figure out which method works best for you. Once you figure out which method works, stick with it, and don’t be afraid to mix and match as you go.

For me, working through courses on Code School and reading in-depth blog posts has stuck best. Blog posts have helped the most since I can consider about how the concepts might surface in my own projects.

And speaking of projects, let’s talk about those. After all, you can’t just read and listen to concepts if you want to truly learn something. Here are five things I recommend that have helped me further my skills with JavaScript:

Just Dive In

Just build. At every opportunity I’ve had, I’ve tried to build with vanilla JavaScript if it made sense to do so. Whether that’s fixing bugs in themes on or taking on new work, I’ve looked for ways to touch JavaScript.

Find a mentor. If you really want to learn, you need a teacher. Someone that can take your questions, hear your frustrations and be there to push you. For me, that’s been my colleague at Automattic, Ernesto Mendez. He’s found a way to teach me something almost every day and challenged me in a way I couldn’t have done myself.

Start small. You might be tempted to jump into a big project when going deeper into a topic. I wanted to experiment with building a JavaScript-powered WordPress theme. But the more I researched and looked into it, the more complex it became. That’s not to say building something like that isn’t beneficial, but keeping what you’re working on manageable means you can control the complexity and get to the “Aha” moments faster.

Redo a project or code snippet you know. The best way to learn something new is to focus on it. You can do this by rewriting jQuery plugins and bits of code in vanilla JavaScript. I’ve done it with a JavaScript file on this site, and several other recent projects. It has forced me to see parts of JavaScript I’m unfamiliar with, and as a result, I’ve picked a lot of new knowledge.

Work on something consistently. Benjamin Franklin famously woke early to read and write. He set goals and measured them, always experimenting and dedicating time to those tasks every day. I’ve tried to do the same, finding projects and tinkering a little each day. It’s helped me progress steadily. I break the work up into two periods, one at the beginning, and one at the end of each day. Sometimes, that means I feel like I don’t get very far. Otherwise, the short amounts of time on tasks give me bursts of energy and excitement. It’s a balance.

I hope this helps you take on JavaScript sooner rather than later. WordPress needs you.

jQuery’s Relevancy

Lately, as I’ve built out the latest WordPress theme I’m working on, I’ve thought, “Do I really need to use jQuery for this?” I’ve had a hard time answering it.

I finally read the blog post, jQuery’s Relevancy – There and Back Again, and it has helped me think about the question in a clearer context. Like most questions in web development, the answer is, “It depends.” Writing a few bits of functionality in vanilla JavaScript has helped me understand it better, and also see the need for jQuery in a lot of circumstances.

That said, for my latest WordPress theme, the answer is still, “Maybe.” I still have to explore some functionality that may be better accomplished with the help of jQuery. Anyway, I recommend giving the post a read because if anything, it will help you think about some of the misconceptions and advantages of jQuery.

The Ryanair Approach to Progressive Enhancement

Use progressive enhancement as a means to reward your users. Don’t expect them to do things for you just to use your product. If the tools you use means your users have to have a “modern” browser and load a lot of script you share your problems with them.

Christian Heilmann in a post about how using progressive enhancement poorly can become frustrating for users.

The Abundance of JavaScript Libraries

Instead of actively trying to learn a new library, I try to observe the actual ideas and patterns behind them. So instead of concentrating on a specific implementation, I believe it’s more important to understand the implications of the underlying idea. Observing the adoption or rejection of an idea or a pattern is vital. The adoption of technology reaching critical mass, the “tipping point”, is getting faster and faster. As is the rejection of previously hot ideas.

Joonas Pajunen in the abundance of JavaScript libraries.