Paul Cook

The Known and Unknown Unknowns of Web Development

September 07, 2017

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.

  • What’s HTTP? What about Angular?
  • Which framework should I choose?
  • Should I learn Python or JavaScript or something else?
  • Is PHP bad? I heard it was bad.
  • Should I go into web development or app development?
  • What in the world is a DOM?

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.

coat-hooksThe coat hooks of context

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

  • Shop Talk Show – My top podcast pick. I worked through this show’s backlog on a consistent basis for months. Set up in a Car Talk format about web development. The Rapidfire episodes are particularly good as its a Q&A format with two dudes who know a lot about the web. Plus the hosts are genuinely funny.
  • Software Engineering Daily – This will be one whose content goes over your head a lot of the time, and that’s okay. I like what the host says about listening to (another podcast) Software Engineering radio: “When I started listening to Software Engineering Radio in college, I understood 5% of every episode, but I found the personalities compelling and my understanding of software improved gradually every time I listened.” That’s the goal.
  • JavaScript Jabber – My next two recommendations come from the same podcast network, so there’s some overlap in host and other personalities involved. JS Jabber is a good one, but I’ve found I enjoy the conversation in the next podcast better.
  • Ruby Rogues – Disclaimer: I’ve not listened to thus podcasts in quite some time, and apparently there was some drama at some point that dramatically changed the make up of the show. That being said, the early episodes of this show are fantastic. Particularly the episodes that feature Avdi Grimm and James Edward Gray.
  • Breaking Into Startups – Inspiration for you while you work on breaking into tech. Stories of people from non-traditional background who are now working at startups (generally) in Silicon Valley. Two episode recommendations Haseeq Qureshi and Preethi Kasireddy.
  • The Bike Shop – Podcast that comes out of very respected dev shop Thoughtbot, so you know it’s gotta be good.
  • Immutable – A designer and a developer get together to talk life and tech.
  • JavaScipt Air
  • Syntax – Tasty Web Development Treats – A newer podcast, but so far it’s been really informative. Check out the latest (at the time of this writing) episode to see what it’s all about.
  • Programming Throwdown – Two smart dudes give a basic overview of a technology or programming language. Good introduction to technologies you might be interested in.
  • Full Stack Radio – Adam Wathan is fantastic.
  • The Laravel Podcast – Niche to if you’re interested in Laravel (which you should be).
  • Developer Tea – Filled with dev wisdom
  • Code Newbie – Another bit of inspiration for those of you who are just beginning your journey. Interviews with code newbies like you (and me).

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

  • Free Code Camp – Most popular Medium publication out there. Features a wide variety of different types of articles, not just for newbies. Check out freecodecamp.org while you’re at it.
  • Hacker Noon – Again, good variety of content. Has everything from articles/tutorials on code to general interest articles for people in the tech world.
  • Coding Horror – Blog of the one of the cofounders of Stack Overflow and Discourse.
  • JavaScript Scene – Blog of very smart developer Eric Elliot.
  • Smashing Magazine – High quality articles with a bend towards design topics
  • CSS Tricks – You’ll run across this place all the time when searching for CSS info anyways.
  • Dev.to – An aggregator of a lot of different people’s posts and podcasts. Extremely friendly community. Highly recommend.
  • Scotch – Excellent tutorials on cutting edge tech.
  • Hacker News – You won’t understand 95% of the conversations when you’re starting out, but there’s a lot of good articles posted here. Beyond that, the comments are often better than the articles
  • GitHub Explore –  Checkout out what’s trending. Look through what people are building. Read the code. Get inspired.
  • CodePen – More inspiration. People build some pretty amazing things here with CSS.
  • Quora – A Q&A site that has way more than tech related questions. But follow topics like computer science, programming, web development, etc.,  and you’ll start learning

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.