Web fundamentals and the importance of context
Tags: webdev, javascript, career, writing
Published: 2022-07-13 09:03:13


There was a very interesting [talk](https://youtu.be/hWjT_OOBdOc) at the WWC22 conference by Laurie Voss that has sparked some discourse in the web developer community. The talk was great and I highly recommend you watch it. 

Laurie takes us on a journey through the many, many cycles of the web and how we got to where we are and he predicts the future. While I agree with a lot of Laurie's points, I disagree with one fundamental (pun intended) thing, he states: 

> 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 is a sweeping statement and no doubt a pointedly provocative one but it's also in my opinion incorrect and potentially damaging. Now I know by even writing this I am falling right into the stereotype that the talk pokes fun at.

![The Simpsons meme of newspaper with Abe Simpson shaking his fist at a cloud and headline reads old man yells at cloud](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w2rsw1w9w2il3u0nh6q.jpeg)

However I believe this topic is more nuanced and I want to explore this statement a bit. First of all gatekeeping **is** an issue in web and software engineering in general but **advocating for fundamentals is not gatekeeping**. 

But here's the thing, what are the fundamentals? And in this, I agree with the sentiment raised in the talk. The web is ever changing, things get abstracted away and we no longer have to think about them and that's great because there is already too much to have to think about. 

At each stage of abstraction though you do have fundamentals. You have the core knowledge required for you to do your job well and effectively. And of course which fundamentals apply depend on what kind of work you are doing, where in the stack you are and the scale of the project you are working on. Context matters.

This is why it's so important for senior engineers and thought leaders to advocate for the fundamentals of their space, **not to gate keep but to empower.** 

Let's take the React Framework as an example. You can build a web app with React without ever learning underlying JavaScript concepts of course but I don't encourage this. Your life will be a lot easier if you spend some time learning JavaScript and it's core concepts before moving onto abstractions like React or Vue or *insert framework name here*. Because understanding JavaScript will help you understand React and so improve your code and make debugging a whole lot easier. 

But let's step back from this argument, even without learning vanilla JavaScript and going straight to React. React also has fundamentals. There are core concepts and patterns to React that will make your life a lot easier if you take the time to understand them. For instance, how state works, how to handle events etc. Again context matters. 

Fundamentals will evolve as the web evolves. And context will always define them. That doesn't mean they are not important, in fact I'd argue it means they are even more important because they are the foundation that we build upon. Maybe in the future we will all be writing Rust web components and I won't advocate for JavaScript anymore but I will advocate for the core concepts of Rust (which disclaimer right now I have no idea about so no questions at this time 😅). 

The point is **the more you understand what you are working with, the better developer you will be and so the better the product you are building will be**. Context matters. 

One last point I want to touch on is the idea of low code or no code builders being the future of web. I think this is an interesting concept and I agree to an extent. I think these kind of solutions will gain traction and eventually become a part of what we do -- once they figure out accessibility issues (I hope). However, I only see these solutions working well for things like static sites and low complexity apps. And I'm sure when they do, there will some fundamentals to know to ensure you are doing it well. 

Saying that, there will always be complex apps such as banking applications, trading applications, flight applications etc. These will always require custom solutions and they will always have problems that can't be solved with a drag and drop component. **And so there will always be code.**

So if you take one thing away from this post I hope it's that: _**fundamentals matter but in context and they should empower not gate keep.**_

Thanks for reading! ❤️