Skip to main content Accessibility Feedback

Fundamentals matter

A few weeks ago, Laurie Voss tweeted a screenshot from an upcoming talk of his that said…

There’s no such thing as fundamentals. If you take one thing away from this talk it should be that there’s no such thing as fundamentals. That’s gatekeeping nonsense.

This resulted in a lengthy, multi-week conversation between Laurie and I. Today, I wanted to unpack why I think Laurie’s statement is both wrong and harmful for the web.

Let’s dig in!

The talk

At one point in the conversation, Laurie asked me (and a few others) to wait until we’d seen the not-yet-delivered talk before reaching a conclusion.

This week, the talk finally went live on YouTube.

I would encourage you to watch it.

The talk is only 30 minutes long, and includes a lot of interesting stuff. In particular, Laurie’s cycle of technological change is an interesting model that I mostly agree with.

Frameworks and fundamentals

There’s a lot to Laurie’s talk, but what I want to focus on today is his central point: fundamentals don’t exist.

I’m going to share some specific quotes from the talk and respond to them. If you haven’t yet, I’d encourage you to watch the video first to get the full context.

They will say that people who use the framework are forgetting the fundamentals, and apparently forgetting the fundamentals is the worst thing you can do. And people who don’t know the fundamentals are going to build terrible software and they’re just bad people.

There’s a lot to unpack in this short quote.

Frameworks aren’t bad. And many people who build with frameworks do know the fundamentals. A lot of folks also use libraries and frameworks to learn, and then back into fundamentals. For someone who’s learning, if a framework helps you go from idea to “oh wow I built a thing!” faster, that’s great!

But, yes, people who don’t know the fundamentals do build terrible software.

(They’re not bad people, though. That’s absurd.)

The stack is too complex

One of the core themes of the talk is that fundamentals cannot exist because the web developer stack is too complex.

And if you look at web development as a whole, sure, maybe? But that’s like saying there are no fundamentals to being a doctor.

Surely dentists and surgeons and podiatrists all have fundamental skills they need to know. There’s likely some overlap, and certainly areas where those fundamental skills differ.

The same applies to different types of web developers and specialists: front end versus backend, JavaScript versus design systems, specialist versus generalist, and so on.

When technology changes, fundamentals do, too

Laurie also argues that because the web constantly evolves and what you need to know changes, fundamentals don’t exist.

For example, using a computer used to require knowing command line. Mouses and GUIs made that obsolete. Therefore, command line isn’t a fundamental skill.

This is, of course, logically absurd. In the pre-agricultural era, knowing how to find food was a critical skill for survival. Today, most of us can just go to a grocery store.

Does that mean foraging was not a fundamental skill?

Of course not! Technology changed, and the fundamentals did, too.

Command line was a fundamental skill at one point, too. Then an innovation came along to made it not one.

What are front end fundamentals?

One thing Laurie kept asking me in our chats on Twitter was what I think a fundamental skill for web developers is today?

Speaking specifically about front end developers: HTML, full stop. The web is HTML.

Laurie responded…

The idea that there is no way to put together a semantic application without writing HTML is simply a failure of imagination.

And in his talk, noted…

Imagine a world where… you could build a whole website without knowing any React. In fact, you could build a whole website without knowing any HTML.

My dude, that’s Squarespace. That’s Hell, that’s LiveJournal!

This technology has been around for decades. It’s played a critical role in bringing people into web development.

But being able to use a GUI to drag-and-drop some components doesn’t remove the need to know the fundamentals of HTML (and CSS, and JavaScript).

Those drag-and-drop tools? They’re built by people who know the fundamentals.

Websites suck

On this, Laurie and I agree, but for wildly different reasons.

Our websites suck. And the reason that our websites suck is that we don’t have time to build them well. And the reason that we don’t have time to build them well is cause there’s not enough of us. We need 10x as many web developers as we have so that the world can have the websites that it deserves.

No, that’s not the reason.

Our websites suck because people don’t know the fundamentals. We don’t have enough time to build them well because capitalism rewards speed over quality.

Without knowing the fundamentals how do you evaluate if a tool is good or not? How do you determine that the HTML it’s rendering is semantic, accessible, and does what all users need it to.

The people who show up in stage 8? They don’t know the fundamentals, they don’t care about the fundamentals, and somehow, they still get stuff done.

I can heat up a can of soup without knowing how to cook, but that doesn’t mean I’ve created a meal that works for everyone

Alex Tait said it better than I can…

Hard to see thought leaders in the JS space debating whether fundamentals matter in web dev when the community I serve can’t like do their banking, book appointments, talk to their doctor etc online because people aren’t getting the fundamentals right. Some fundamentals matter.

We have plenty of developers. We’re not struggling with a shortage of labor in our industry.

We’re struggling with a lack of fundamental skills.

Those websites that don’t load on slow connections, or break completely when a JS file fails to load, or don’t work for people with visual or physical impairments?

That’s not an issue of time. It’s an issue of fundamentals.

Fundamentals may change, but they always matter.