From the course: Building a Resilient Web

Core materials

- [Instructor] When you open up a web application or website or anything else web-related in your browser, what you're seeing is always content mark up with HTML, styled with CSS, and possibly enhanced with some JavaScript. It doesn't matter what framework or build process or language or CMS or operating system or server architecture or anything else you're using to generate the thing. What you're seeing is always HTML, CSS, and maybe some JavaScript. This is important to remember because the tools we use to build the modern web add more and more abstraction layers between the work we do and the final product the browser and the visitor sees. It's easy to forget that our react components written in JSX, processed and parsed and compressed and uglified through Babel and Webpack, and served on the edge of a serverless host still reach the web-using public as the same basic HTML the original websites we used to build were built with. The difference is we're no longer working all the way down at the declarative product level of the platform, painstakingly writing and optimizing the code the visitor sees. Instead, we're working at a more imperative distance, writing instructions for the computer to compile the code the user sees. And as that distance increases, so does the risk of introducing fragility into the system. And that fragility introduces cracks in the resiliency of the web. When we talk about resiliency on the web it's important to remember that our developer experience is secondary to the user's experience. Remember that HTML design principle called priority of constituents? Here's the full text directly from the definition. "In case of conflict, consider users over authors over implementers over specifiers over theoretical purity. In other words, cost or difficulties to the user should be given more weight than costs to the authors, which in turn should be given more weight than cost to the implementers which should be given more weight than cost to the authors of the spec itself, which should be given more weight than those proposing changes for theoretical reasons alone. Of course, it is preferred to make things better for multiple constituents at once." Much of the fragility, the irresiliency we see on the web today can in part be attributed to our focus and priority on tooling and DX, developer experience, over user experience. This is a real problem and it's a problem that has an easy solution. Keep the tools and make sure the tools preserve resiliency. As you'll see through this course that process is already underway and it is our responsibility to embrace it.

Contents