JavaScript is filled with obstacles.

Most of us treat obstacles as “Those things that are blocking my way. I need to get past them ASAP.”

And as developers we face many obstacles every day.

We might be asked to meet impossible project deadlines. Or we’re stuck in an hour long debug session, trying to figure out why the damn thing works on Android but not on iOS.

We find ourselves encountering code that doesn’t work and doesn’t make any sense. Or code that does work, but still doesn’t make any sense.

And sometimes we face real life obstacles. With no compiler or interpreter present to tell us what we’re doing wrong.

I’ve always viewed obstacles as inherently bad things. I believed obstacles should be avoided when possible. I think most of us share that belief.

But I’ve recently come to question this thinking paradigm. Hear me out.

The Obstacle is the Way

My girlfriend and I recently broke up. That means I’ve had more time than usual to reflect on life, the universe and of course JavaScript 😃

I started reading The Obstacle is the Way. A book that talks about how incredible people like Edison, Roosevelt, Rockefeller, and Washington faced their obstacles.

The point of the book is that awesome people do more than overcoming obstacles. Awesome people learn from obstacles and become much more capable because of them.

Creating incredible things along the way.

The main takeaway is that the most inspiring people you know probably became that way precisely because of the way they overcame their obstacles.

JavaScript Obstacles

Granted, our day to day challenges are not as epic as those that Washington and Roosevelt faced. But our lives as developers, and especially JavaScript developers, are still filled with obstacles we have to overcome.

And in our defense, George Washington never had to create a functioning webpack configuration file. So no living soul on earth can tell if leading the American Revolution was a harder task. I’m betting on a close tie 😉.

Truth be told we don’t have to look that far to find examples of how overcoming examples can lead to amazing things.

JavaScript Obstacles at Facebook

Jordan Walke is a developer at Facebook. Several years ago he was part of a team who was working on the Facebook ads management UI. If you wanted to create a new Facebook ad, that’s what you’d use.

The web app Jordan worked on allowed you filter your target audience according to the entire Facebook knowledge graph. And as you can imagine Facebook knows a lot of things about us. So the web app grew and quickly became a very complex code project.

The team at Facebook realized they created something fairly fragile, which was error prone. No one wanted to touch it.

This fragility happened even though Jordan’s team was using established best practices at the time. And doing their best.

Jordan overcame this obstacle by creating a new JavaScript library inside Facebook. The library he created was inspired by a Facebook’s PHP library called XHP.

Jordan created a JavaScript library which wasn’t similar to anything that came before it. The syntax was weird, and it represented a departure from what everyone else was doing at the time.

You may have heard of the library Jordan created. When Facebook later open sourced it, they decided to name it “React”.

JavaScript Obstacles in the Early Days

Douglas Crockford is another man who seems to improve himself and the world around with every new obstacle he encounters.

Some consider him a JavaScript god. Others say he’s the JavaScript devil. But no one denies the pivotal role he played in JavaScript’s evolution.

Back in 2002, Douglas needed an easy way transfer data between the browser and the server. This way would play a key role in what his startup company, State Software was about to develop at the time.

Douglas decided to use a subset of JavaScript in order transfer messages. It worked. He thought It was great.

But no one else wanted anything to do with it.

The companies Douglas approached rejected him and his new messaging protocol for several reasons. The responses he got were variations of these three:

“We’ve Never heard of it.” “Our company just committed to XML.” “Your messaging protocol is not a standard.”

So Douglas went ahead and created a single page website. Not a single page web application like we know today. I’m talking about a single, lonely, ugly HTML page.

That one page consisted of 442 words, 6 links, and 2 images.

And that’s how the JSON messaging protocol was born.

The Good Parts

In 2007 while working at Yahoo Douglas faced another obstacle.

At this point in his career, poor Douglas had been running around telling everyone how great the JavaScript language is. But only a few believed him.

This was about 2 years after someone named Jessie James published what was considered as a revolutionary idea at the time.

Jessie titled his manifesto “Ajax: A New Approach to Web Applications.” Thus Cementing the foundation on which all modern web apps are built today.

What followed was a massive influx of programmers who didn’t want to develop in JavaScript but had to. They didn’t want to learn the language. But the web was exploding, and that’s what developers were told to do.

JavaScript hating was at an all time high.

It didn’t help that all the JavaScript books at the were plain awful. Douglas couldn’t bring himself to recommend any of them. He realized that’s part of the reason why JavaScript was so misunderstood.

And so, about a year later on May 2008, JavaScript: The Good Parts was first published.

And the rest is history.

Facing Obstacles Head On

A team at Facebook was blocked by an obstacle preventing them from growing their web app. They ended up creating a JavaScript library which is now being called “The new jQuery.”

Douglas Crockford was blocked by several obstacles throughout the years.

One time he ended up creating a messaging protocol every developer now knows and uses.

Another time when Douglas faced an obstacle, he ended up creating the de facto JavaScript learning book. A book to which all other JavaScript books are compared.

So lately there’s a question I’ve been asking myself quite a bit. And hopefully you’ll start asking yourself too.

What obstacle is blocking you?