Dan Zajdband

On keeping Web Development weird for the next generation

Enjoying a Spring Friday in December, looking for ways to ruin my existence, I was inclined to read a couple of pending resources from the excellent Rust Docs. Catching errors at compile time, Static type-checking, immutable bindings, we can do these things now in JavaScript — that’s amazing!

But wait! Rust is a System Programming Language, its main goal is to make programs work as intended, super fast and avoiding memory management issues. I'd love my payment processor, self-driving car, or my OS to be written in a language based on these principles. Don’t get me wrong it's not that I don’t want my home banking website to mistakenly empty my account or Amazon to offer me a product again as soon as I buy it ?. The issue here is that in order to guarantee all the promises we get from a language we must concede some freedom at development time.

Your program correctness and memory safety is based on following a number of unbreakable rules. If you try to break them, you’ll get a message from the compiler and your program won’t run. In web development, we don’t usually have these limitations. If you ever used the Internet you’ll know that this freedom can lead to a lot of broken sites and apps. Because of that, it is great that every day we get new tools for improving our websites and apps.

Messi

Messi can be Messy and awesome, like web development

It worries me that we are focusing too much on making the web correct, fast and scalable that we forget that part of the beauty in Web Dev is about being able to transmit your ideas and unleash your creativity with the tiniest possible friction. I love to use (p)react, Typescript, Flow, Babel and Webpack for my apps. But I also love to be able to throw a bunch of script tags and create a weird VR scene or a crazy Web Audio API experiment.

I don’t want part of the next generation of web developers to think that you need to transpile, type-check, use a package manager, a framework for UI, another framework for global state, and a Service Worker automatic generation tool to be able to play around or to do an interactive piece. I think these concepts are important for some part of the web, but not for the web ecosystem as a whole. Being messy is a big part of learning, even to learn that it’s not the best path.

The question will then be: Are we keeping web development weird enough?

Manatee drawing by Jimmie.

Thanks Sandhya for the spell and grammar check 🙂