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 WordPress.com 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.

Progressive Enhancement is

Everyone has a definition for progressive enhancement these days, and many often misunderstand the concept. I like Scott Jehl’s thoughts on the principle:

Progressive Enhancement is less “but what if JavaScript is disabled?”, more “can our core services be more tolerant of everyday conditions”

When you look at it that way, progressive enhancement becomes synonymous with quality. Why wouldn’t you want to build sites and applications this way? In a way that gives people a quality experience no matter what.

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.

Remembering the Everyday Developer

I listened to this Web Ahead episode today about the everyday developer, and it resonated with me. I imagine many developers would identify with it because it hits on the fact that the tool chain for building websites has become increasingly complex. It’s getting harder and harder to “get started” with the Web. Any developer can become overwhelmed by what to learn next. That said, many seasoned Web workers know two of the main messages that Jen Simmons and Rachel Andrew talk about to combat the feelings of overload:

  1. Tools are just tools, not the raw material – the building blocks.
  2. Know how to teach yourself new skills.

Those are good messages to keep pinned to the top your text notes and read the next time you want to open that new shiny thing.