Paul Cook,
Back

Donald Rumsfeld

As we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns—the ones we don’t know we don’t know.

–Donald Rumsfeld

Entering into any new domain or field can be bewildering. Web development is no different in this regards.

The number of topics is vast and overwhelming.

From day one you’re confronted with question after question, and with each new issue there arises a dozen more questions. How can a new web developer navigate such a maze?

As these various topics arise they become “known unknowns.” Things we know that we don’t know.

The moment you know you don’t know what Angular is you become able to find out what Angular is. You can see the gap in your knowledge and move to fill it.

However, if something is in the category of “unknown unknowns” then you can’t address that gap, at all. How could you if you don’t even know what it is?

This is the importance of building context.

Context is King

In any domain there’s a certain level of background knowledge needed in order to be able to speak intelligently or reason well in that field of study.

As an example, I have a friend who has an amateur interest in logic and philosophy. He’s had classes on the topics in college, and has spent a decent amount of time reading and studying philosophy on his own. He was telling me recently how he was only just now understanding certain difficult works on philosophy. Why? Because had done enough reading in philosophy and logic to be introduced to many of the basic concepts.

He’s able to read an academic work in philosophy, and he’s not lost by all the references to ancillary topics.

He has context.

Context is important in web development, too. You might not be an expert in React or Vue, but you’re familiar with Angular and Backbone and you have a good understanding of JavaScript itself. Because of that context you can more effectively evaluate the merits of one framework or another without being an expert in them.

However, if you have no idea what a JavaScript framework is you probably won’t understand why you would even need one in the first place.

In order to build context you have to begin to be at least familiar with a lot of background issues. You don’t need to be an expert in every single area, but the more you’re at least _aware _of, the better.

Awareness here is a good word for describing what we’re aiming for. It’s easier to have conversations about topics you’re aware of then those you aren’t. This seems self-evident, but is important for us.

The more topics you’re aware of in any particular field the more “hooks” you have to hang new information.

I know for myself there are many topics that I ran across early in learning web development that went in one ear and out the other. Why? Because my mental model of the domain was severely limited, I didn’t have the hooks to hang the knowledge on.

To return to the topics of JavaScript frameworks, someone just entering web development might be hand coding their HTML. They don’t really have a concept of why you would need a framework to manage the state and logic of an application. They see Bootstrap is nice because it takes away the need to write all the CSS from scratch, but what is application state and why do you need to manage it?

This is really where context comes into play. Even if you don’t have an intuitive understanding of why JavaScript is useful (because you’ve never built a large application before), you’ll at least be familiar with some of the problems they solve, or, at minimum, that using one is considered to be a best practice in the industry.

That alone can save you a lot of time.

Building context in a particular domain is a lot like hooks on a coat rack. The more context you build the more hooks you have to hang future knowledge.

If you lack those hooks than new pieces of knowledge you hear or run across will be lost rather quickly because you don’t have the proper mental model to place it in.’

I can remember studying Koine Greek in college. Very early on in the class I would learn things that would fly right over my head. The early chapters of the textbook there was very little I truly understood.

But within 3-4 weeks of pressing on in the class I would go back to earlier chapters and a lot of these bits and pieces I didn’t understand suddenly were clear to me. The understanding only came after enough contextual knowledge was “layered” on, so to speak.

The further I got along into class the more “hooks” I had to add new knowledge and organize old knowledge.

This what I’m basically advocating: start placing hooks in your mind to hang new knowledge. Build the context you need for future work, today.

Resources for building context

So, how do we build up context? I can recommend a few strategies and resources that have worked very well for me.

Podcasts

Podcasts were hugely beneficial to me, especially before I got a job in the field. I was working as an administrative assistant at a church I would listen to podcast after podcast related to web development.

The great thing about podcasts is that listening to them is something you can do while you’re cleaning the house or doing any other menial task that doesn’t require your full focus.

You won’t understand half of what is being said, but bit by bit you will build up the context you need to speak intelligently.

Podcast recommendations

Websites

Gather up a list of sites that post articles regularly, whether that be tutorials or general articles on web development.

Put them in your RSS feed, and then read what interests you. You’ll build a ton of context this way.

Website recommendations

Newsletters

There’s a ton of good developer newsletters out there that aggregate articles, tutorials, podcasts, etc.

I subscribe to a number that are sent out weekly or monthly, and I just read what interests me. Sometimes by just reading the descriptions of resources you can get a good read on what’s popular.

Meet people

Find the tech meetups near you and just go. Be around people who are building things, and are interested in becoming even better.

Check out Meetup to see what kinds of groups there are near you.

And don’t worry about feeling like an imposter or like you don’t belong. Just go and tell people what you’re doing, and people will want to help you.

Join Slack, Discord, or IRC channels. React has their own Discord community. My local tech community louisville.io has their own forums and Slack. There’s definitely more out there like this if you’re looking.

Follow peeps on Twitter

Twitter has a unique place in the tech community. Tons of people are there talking about important topics, what they’re building, what they’re interested in, and more.

Here’s a few people to follow to get you started.