So I’ve been making web stuff for a quarter of a century now

As I’m sitting down here on a NeXT computer (in honor of the machine the web was born on!) to write this—I admit, yes, computers are faster now. But the basics haven’t changed.

My NeXTstation color, yes that’s this article being edited

There’s still a bunch of companies trying to make things incompatible and pushing proprietary stuff on us (hi, AMP!).

You still need to test in every browser, though it’s been easier than it used to be, as there’s fewer bugs and decent debugging tools.

People still try to fix the perceived shortcomings of the client/server model by trying to make the client do everything.

Hello Java! Hello Flash! Hello Ext.js! Hello Angular! Hello React!

People still eventually give up and try the next thing that promises salvation.

We still constantly add more features to HTML, to CSS, to JavaScript and to HTTP itself. Often welcome stuff that makes things easier. Often bloat that no one really needs.

Yet with all the experience and all the new features and all the “new” client-side techniques, so many web sites and apps are horrible. Worse perhaps than 25 years ago.

I’m not a Luddite, however it’s a good idea to reflect sometimes if you actually need all the crap that supposedly makes things “better”.

Does it, objectively, improve lives of users?

Does more code and more complexity really make things easier to maintain? (The idea of componentized architectures pops up every half decade or so—is it really going to last this time? What’s different this time around?)

If you want to be really great at making web sites and apps—forget about frameworks.

These are and always will be ephemeral.

To be good at “Web” you’ll need to understand first and foremost about humans.

Any web site or web app is ultimately always about a human being wanting to achieve something.

Concentrate on this first. Make it easy to achieve that something.

Make things clear, quick, forgiving, enjoyable and get out of the way when the job is done.

To make things clear, learn about psychology. Learn about how (successful) education works. Have empathy. Be kind of users.

To make things quick, master the platform basics: HTML, CSS, DOM, JavaScript, HTTP. Learn how browsers work. What happens when you hand the browser a chunk of HTML, how does it get parsed, layouted, rendered? Staying on top of this will allow you to make well-informed technical choices, like the type of structure your web site or app has (from static pages, to server-side MVC to full-blown client-side apps; or a mixture of these). As you make apps that will (hopefully) be used for many years to come, deep knowledge on these subjects will come in more than handy when you need to maintain code later. Put a sticky note on your monitor with the old adage of “keep it simple, stupid”. (Will people in 10 years from now still know how to use React? Will they even get the toolchain to run?)

To make things forgiving, see what happens when users block trackers and ads. See what happens on slow and brittle connections. Load up the thing on a 10-year old computer. Test in text mode browser (is it at least somewhat comprehensible?), and test for colorblindness. With very little time investment you can show your users that you care. This will be much appreciated.

To make things enjoyable, learn about design. Learn about human-computer interactions. Learn about visual design, space, colors and typography. Design is not some innate magical ability people are born with.

tl;dr Make great sites and apps that help people kick ass & don’t get tangled up in the pursuit of technical “cleanliness”.

Here’s to the next 25 years of the web.

P.S. And for everybody’s sake, have fun creating things and don’t take everything super seriously.