loading...
Cover image for The web without the web

The web without the web

walaura profile image Laura buns ・6 min read

1.

I built my first website when I was 14? It was a fansite for the Sims. It used tables and the colours wouldn't pass any accessibility (or aesthetics, for that matter) checklist. If I remember correctly it was a combination of making the visuals in dreamweaver to then copy/paste the generated HTML and CSS into a PHP backend that I made myself (you can imagine how that looked on the inside).

This was a very important website not just because it somehow got relatively popular but it was also important for me as it became my personal playground. I taught myself CSS to make the layout nicer, and in the process I picked up enough design skills to be employed as a designer for 4 years. I started doing banners and animations using Flash (from macromedia back then!).

The web 2.0 era arrived shortly after and I started hacking together mooFx scripts to make things move and be cool. I wasn't entirely sure about what was going on in my code and I missed to PHP standard library dearly but I powered through. Eventually picked up jQuery and for a buncha years that was all my understanding of the DOM really.

I learned more about HTML and CSS. I learned how to write semantic and accessible code. I learned how to scale up CSS architectures to prevent spaghetti code.

For a while I had this personal website that was like a Mario World stage and everything moved and it used CSS animation and some JS sprinkles to add infinite clouds and stuff.

I fell in love with all the cool shit I could build.

2.

I eventually became a somewhat respected frontend 'engineer'. I do talks and stuff. LinkedIn recruiters actually put effort in their greeting messages. It rules. I'm just bragging at this point. Stop me.

Now, despite all this you may have noticed I'm missing a lot of things from my intro to an engineering career.

I'm not really sure how functions map to mathematical constructs. I actually dropped out of maths when we started doing that algebra where instead of equality you deal with stuff like 2*n > x/3 and you have to find out what range n and x are (I have no idea if this particular one is solvable, I just came up with it)

I'm still just wrapping my head around the more complicated types you can do in stuff like typescript. For what is worth I don't use types in personal projects. I think they are good for making code self documenting and thus, good for teams. Too abstract though.

For a long time I never used any real frameworks for web development. I totally slid past the angular and ember era because I considered unacceptable to have a site not work without JS enabled. Writing your entire frontend in javascript felt incredibly unnecessary when we have semantic HTML.

3.

I love React. I love React because I know enough about scaling up HTML and CSS that I understand the value of single file components. I like the way CSS-in-JS gives you the enough abstraction to still use tricks like blind owl selectors while also giving you the full power of using JS to do stuff like container queries. I love how server side rendering React apps is trivial because it all compiles down to vanilla HTML rather than web components, effectively turning it into a kickass template engine that can come alive. I love the way you can very effectively still do progressive enhancement by using completely semantic markup and then letting hydration do more to it.

I also hate React. I hate React because these behaviours are not defaults. React is not gonna warn you if you make a form using divs and unlabelled textboxes and send the whole thing to a server. I hate React because CSS-in-JS approaches by default encourage you to write completely self contained one off components rather than trying to build a website UI up as a whole. I hate the way server side rendering and progressive enhancement are not defaults, but rather things you have to go out of your way to do.

But what I hate the most about React is that it paves over the land of HTML, CSS, and JS progressively layering on top of each other and replaces it with 'efficient' and 'clean' code.
Compared to vanilla HTML it's very easy to add type checking to a React app to really make sure you can't accidentally add "12" + "8" because how else would you know you aren't getting 20 here. By running your app? Absurd. It's also very easy to automate tests by taking component snapshots and effectively freezing them in time, evolving CSS layouts be dammed. With CSS-in-JS you can ignore those pesky CSS behaviours like the cascade. It's not like it's the first letter in the name or anything.
Not having that much first class DOM manipulation and a mandatory build step anyway means engineers can finally start paving over the ugly duckling and liability that is javascript for other languages, based on the purity and elegance of mathematics, like Elm or Reason.

Some people think these are good things. Other people think they are a masturbatory exercise in service of nerds finding actually coding websites too boring and needing to spice it up.

4.

I'm a surprisingly fast learner. I have caught up. I know my stuff around all this shit. I'm also a bit of a rarity. The best frontend developers I know are at a complete loss right now.

Most modern frontend codebases are no longer about HTML and CSS. In fact they are so far removed from it that the idk 20? people total who still care about HTML and CSS and can code websites and haven't become product designers or whatever have no clue where to even start.

Our 'clean' and 'elegant' frontends are now often more clean in the back than in the front now. Our perfectly typed 20 file redux store supporting a form that doesn't work with javascript off. Our CSS-in-JS modules with typed props hiding spaghetti CSS with completely static props as an implementation detail.

We are building toilets with world-class plumbing that people can't then sit on. And the people who know how to fix the toilets have no clue how to fit a toilet into our plumbing.

The designer that knows CSS can't update some colours in GitHub without breaking half of the tests. The Product manager can't replace a bunch of words in a page without figuring out the PropTypes of the map component. The accessibility expert can't replace divs with buttons because the visual regression testing says that Opera mini in Windows Phone 6.5 renders a border about them and we can't merge changes until it all goes green. The frontend dev can't implement an accordion (honestly, that one might be for the best) because the guy who's super into types won't let her store state outside of redux.

In elevating frontend to the land of Serious Code we have not just made things incredibly over-engineered but we have also set fire to all the ladders that we used to get up here in the first place.

5

I think a lot about how I started coding. About how I developed an understanding of the web. It was wild. I didn't touch code for ages while still making cool websites. We just made things work.
The web, by design, always has had a bit of 'best effort' sprinkled all over it. You would make your HTML accessible and semantic and then write your CSS in a resilient way so when it inevitably breaks in a different/older browser the page still works. And then you sprinkle your javascript on top and if it doesn't work? That's fine because it's not required to function. It's icing on the cake.

I love React because it lets me do my best work faster and more easily. I hate React because the culture around it more than the library itself actively prevents other people from doing their best work.

Posted on by:

walaura profile

Laura buns

@walaura

Heya! I have fun with ui code at facebook. before that i tainted the guardian and TNW – outside of things im paid for i have fun with words in twitter @freezydorito

Discussion

markdown guide
 

Bravo! I totally feel the same. Specially after being rejected in interviews by devs half my age (with half my experience) because "I don't know enough React" 😂 Anyway I do enjoy React and modern development, but the culture around it is toxic and destructive. It's a competition to always being right (while all the others are wrong), the over-opinionated era where best practices won't last a week. If you blink, everything changes, something new comes up, and all the community go crazy to refactor everything once again to follow the new golden hype. Nobody mentions standards anymore, or semantics, or accessibility... I really suffer from framework/hype fatigue to the point where I don't code anymore. It's just not fun, and not reliable. I don't mind learning but the feeling that what you learn will be obsolete next week is truly discouraging.

Anyway, thanks for putting these words together, someone had to say it!

 

Wow, very interesting read! I remember when I decided to become a web developer I just took a course on html/css/javascript. One night, after finishing in my laptop a website for my last assignment in a web dev class (a shitty one) I felt so proud of having become a web developer in such a short time. Next morning I decide to check my masterpiece on my desktop monitor to find out, to my horror, that all the elements had shifted. Fixed everything, then checked it on my laptop. The website looked whacked on my laptop now. After a quick google search, I found something called "responsive web design". That day I realized how little I knew and that there was an even bigger mountain to climb in front of me.

I'm glad I stuck out with web development. The new technologies are wonderful but sometimes I miss the simplicity.

 

It was the same for me. I used to design websites with Photoshop and at some point i have learned how to code it with HTML, CSS and JS with jQuery. Life was simple and fun. You could make something that works (and you can still) over night.

I remember it was okay to use CMS's and there was no problem using jQuery to speed up development. But at some point. Everything that helps the developer to code less, cleaner and faster it is the devil to JS community.

Today, over-engineering is priced and i'm (maybe) too old to understand why. I do not understand why jQuery is wrong, i do not understand why PHP is wrong, i do not understand why i need to use react, angular, flutter, vue or whatever is trend this week to make a simple three pages website for a local bakery.

I'm too old at 27 years old to understand what the hell is going on with web development these days.

 

Wow.. I needed to hear this. I've been forced into CSS in JS lately and I share so many of your sentiments, I miss the cascade and the structure of plain and simple CSS.

Beautifully written. Look forward to reading what comes next :-)

 

I don't understand these kind of posts. Every year we hear, how complex JS has become.

With all due respect, for me such posts always sound arrogant and portraying authors as people, who hope to never learn anything in their lives anymore, or believe that they've had their share of learning already, and just want to keep working 9 to 5 building primitive web pages, sprinkling them with JavaScript.

Noone forces noone to use frameworks or anything.
But the thing is – browsers evolve, they provide more and more features for developers to explore, allowing us to build more complex and powerful interfaces.
And businesses want to explore this opportunity.
Simple static websites simply cannot provide the same UX as a real web application. It solves completely different problems.

Browser is the most popular cross-platform solution, and if it's possible to use this platform to build something, that was previously only available on desktop, then why not take this opportunity?
Take a look at Figma, for example, is it bad that we have such an awesome web-service today?

Of course, with the progress of the web, the problems that web-developers face evolve as well, and every new framework tries to solve these problems in its own way.
Of course, we could still be using jQuery for everything, but it is just not that convenient than, say, React, when working on really large projects.

I also want to remind that HTML and CSS evolve as well. New properties and attributes appear every year, new specifications arrive, and personally I am very happy with it. There's an infinite number of possibilites to explore, and for a long time already frontend is not a single area, but many-many different domains. Anyone can find something of interest – animations, 3D graphics, complex web apps, Web Audio etc.

Don't take this personally, please. I just want to encourage everyone to keep learning new things, dive deeper into JS and others fields of web dev.

This forum is great for the purpose, by the way.

 

What does that have to do with people replacing CSS and HTML with JS? If they are evolving to meet web application needs better, why are we still using JavaScript only frameworks to paper over them with a low level, procedural, imperative language that's has to implement things like Suspense to accomplish things progressively enhanced HTML and CSS has been able to accomplish for a decade?

 

This is spot-on! Thank you, Laura, for sharing this.

 

Very interesting read. I remember programming with just HTML/CSS and a sprinkle of JavaScript just for being able to brag that "I'm using DHTML, yo! It's so rad!"

Still I think there's a place for us developers with self-taught talent for designing and sketching. Not every project needs to be a full Webpack fest with components that you have no idea where they came from.

I kinda feel relieved every time I need to make a custom WordPress theme because at most I'll be using some kind of SASS to CSS converter, then it's just my PSD/AI file, my browser and my code editor.

 

I don't know ... I've heard sentiments similar to this a lot recently: "Where are the good old times of geocities", something along those lines.

I'm not saying that React and Webpack are the end-all-be-all, but it would be sort of sad if we'd be coding web sites or web apps in the same way we did 30 years ago. My point is, even when using React or other JS frameworks it's still "web" and manipulating the DOM, just using a different syntax, and nobody is forcing anyone to use CSS-in-JS. It's just that we have way more options nowadays.

 

Yes, lots of people are forcing other people to use CSS in JS. I am forced to use it at work.

And it's not about "doing things the same way." Even without React, we would not be doing things the same way as 30 years ago. HTML had changed. CSS has changed. JavaScript has changed. None of them existed in 1990, by the way.

 

Haha you're right, 30 years ago none of this existed. The very first website in history was put live on 20 December 1990 by Tim Berners-Lee (en.wikipedia.org/wiki/Tim_Berners-Lee) so that's less than 30 years ago, and Javascript was nowhere to be seen (not even CSS probably).

Also true that even without React we wouldn't be doing things the same way, all of the standards and APIs have evolved, a lot. My point is that React is just a "tool" to get work done, and ultimately it's just the DOM with markup and CSS, only with a different syntax and some build tools.

 

Interesting rant. I can't say I yearn for the bubblegum and duct-tape days of yore. But I agree with the sentiment that our current technologies have heavily over-complicated the landscape. Elm and Reason mentions are a bit misplaced. I found it much simpler to make apps with the likes of these than with component-based frameworks, no fancy math involved.

 

I think a lot JS frameworks are wildly over-engineered. What's wrong with simple pages that are actually written in html?

 

JS frameworks are solving a completely different set of problems than simple HTML sites.

 

JS frameworks are made to be used in web applications. If you're using React to build a simple HTML & CSS page, then you're using the wrong tools for the job.

 
 

The Photoshop of webdelopement hehehe

 

I do remember it but never used it, though it was hyped at my college

 

I made my first website using dreamweaver 10 years ago.

 
 

This article is amazing. Btw frontpage ruled! I built my first site with it at age 12~ ish.
About part 4.: I get what you're saying (even though I'm a modern barbarian who started with React right away). But I think this can only change by changing from the top to bottom. We can't really go javascript-off when our clients want to follow the trend, and the trend is to have a ducking disco 🎆 on the frontend. :D

 

Macromedia, you just opened wounds that I thought where closed. I guess I'll have to go to repress some memories again,

And you had to put a picture of FrontPage, you cruel, cruel woman.

... I'll be crying under a cold shower if someone come looking for me.

 

JS frameworks tend to be the hammer that turns everything into a nail.

I still subscribe to the less is more approach.

 

Very interesting read. I remember programming with just HTML/CSS and a sprinkle of JavaScript just for being able to brag that "I'm using DHTML, yo! It's so rad!"

Still I think there's a place for us developers with self-taught talent for designing and sketching. Not every project needs to be a full Webpack fest with components that you have no idea where they came from.

I kinda feel relieved every time I need to make a custom WordPress theme because at most I'll be using some kind of SASS to CSS converter, then it's just my PSD/AI file, my browser and my code editor.

 

Yeah. React within the Node.js/npm ecosystem (much as I do like this or that about them) is the worst thing to happen to the the web and to frontend development in the 20 years I have been doing it. It wouldn't be so bad if it were less popular. If it were just one somewhat crappy option among several others, any of which had a nearly equal chance of being chosen, the web and frontend development might be okay.

But people really think it's the best. They think it's the best because it's so popular and because they hear that it rescued frontend development. They hear frontend development before React was awful. Newer developers are especially vulnerable to this bullshit narrative. Full stack developers or frontend developers who were educated and trained more like backend developers who have no idea what it's really like to develop for the web without trying to shoehorn it into traditional software engineering are understandably serving their own interests. Though they should be serving the end user instead, because that's what frontend is.

Because React isn't especially good and we know now exactly why and how. A few of years after it came out was its peak. Then new options took the best parts of React and gave back things React traded away. Bundle size, for example. Restored ladders, for example.

I see no reason to use React for a new project. If a company promised me I'd never have to use React again, I would let them hire me in a heartbeat. React chased all the people I loved working with away from web development. I managed, but its strong impact on web development has ripple effects that have slowly ground all the joy from my work. I also started as a designer, and can't work with design as effectively anymore. The products I work on have nice aesthetics, but that's the only real quality they give end users. Performance sucks, perceptual loading sucks, they eat bandwidth and device battery life, they lack resiliency to the various issues that go wrong with distributed UIs transferred over networks, they're responsive only in name, they're inaccessible, they're ridiculously huge and complex when the features are simple, etc.

And I, alone, can't do anything about it. I'm fighting the tsunami of React and of thinking of web frontend like it's backend or native. I'm just some old CSS person fighting progress in their minds. No one else mentors them about the unique needs of the web, about accessibility, or about empowering non engineers with the ability to contribute directly to production! It's different from their JavaScript comfort zone and they just want to be like their JavaScript thoughtleader idols, why do I have to nag them about stuff no one else cares about?

It's ironic, since the lack of available mentorship in these areas has been blamed for the situation. Those mentors? Bay area tech culture and its cargo cults ran them out of town with pitchforks.

 

In elevating frontend to the land of Serious Code we have not just made things incredibly over-engineered but we have also set fire to all the ladders that we used to get up here in the first place.

This is kind of a gatekeeping function that occurs in any engineering discipline. Gone are the days.

Durkheim and the rest wrote well on the subject.

 
 

Hi i love to see that you hate react please look into this and post feedback i would love to hear from you about your opinion my example only shows build in customElements but could easy get extended to use unknown html element as its base.

dev.to/frankdspeed/the-html-compon...

 

Then you will love unpoly js. Unobstrusive javascript at its best. Turbolinks on steroid which is the sweet spot for a lot of uses cases. IMHO

 
 
 

Switch to Angular. Clear HTML, CSS and TS file separation per module.

 

When I was 14 I hosted my site on GitHub pages (it's completely static). I didn't know much JS but the css was Soo overdone and looked quite stupid but looked amazing to be back then.

 

I am really grateful for your sharing, it is helping me right now! wordcounter.tools