The Real Dark Web

We rarely acknowledge the vast majority of web developers.

Dark matter permeates the universe. In fact it does more than permeate. It is the universe. 85% percent of everything that exists is actually dark matter. We can't detect it, we can't see it. But it's there. In fact, the universe that we actually perceive, what you and I are made of, is the so-called Baryonic matter, a mere percentage froth on top of the deep dark universe that we are scarcely aware of.

I was perhaps thinking about dark matter when I read this tweet from Andy Bell.

The vast majority of respondents are still using Sass and vanilla CSS? Wow! This made me pause and think. Because I feel there's an analogy here between that unseen dark matter, and the huge crowd of web developers who are using such "boring" technology stacks.

These developers are quietly building their sites and apps, day in, day out. But they are rendered invisible as they are not making use of the cutting-edge technologies that the 1% of the bleeding edge love to talk about.

They are the 99% of the web universe that is quietly getting on, not blogging about their technology stack, not publishing amazing new tooling. Simply building things.

I call them the 1% with purpose, in a deliberate evocation of the privileged 1% who run our planet (because I love to jump analogy mid post and to distort numbers). To be on a cutting edge team is a privilege. It means having resources and money and a lack of accountability that most web developers simply don't have.

It means being able to try out and develop new and amazing technologies. It means being able to do that and knowing that you'll have the support from your org to do that. It means working at a user count where you are able to dismiss users who are inconvenient ("what, they're on an old phone? Phhh, sorry, we don't support them"), because you know a great crowd of others will be there to take their place and finance your JUST SHIP IT innovation spree.

These teams are typically producing apps that are engineering-heavy. Engineering is a word that features often with the 1%. It means thinking logically, it means Serious Stuff. As a title it sounds extremely impressive. It evokes images of white-shirted men hunched over computer consoles, guiding the first humans to the Moon. It makes one think of giant engineering projects that will change the world, of Victorian builders of world-changing technology.

The reality for most, well, web developers is very different from this. Most web developers are working on very "boring" teams. They're producing workhorse products that serve the organisation needs. They aren't trying to innovate. They aren't trying to impress the next recruiter with their CV. They simply want to get paid, produce a solution that works, and go home.

Yet they are told, mostly implicitly, sometimes directly, that if they're not innovating and using the latest tools that they are somehow a failure. This feeling of failure for not implementing the latest tech permeates our industry.

This feeling needs to end.

You'll notice that I didn't say "the 1% need to stop innovating". I say this very clearly because a 20-something white man will soon comment on this post and suggest that's what I meant.

No, they don't need to stop innovating. I want them to innovate. It's innovators in the web world that laid the cowpaths that we now all follow. jQuery demonstrated that JavaScript could be written in a more developer-friendly way. Sass innovated token-driven stylesheets that we take for granted now as CSS Custom Properties. Bootstrap popularised layout systems that we see natively in CSS Grid.

But those 1% do have to recognise - we ALL have to recognise - that they are enormously privileged. That they are lucky to be able to do what they do. That they have won a grand industry prize that allows them to ignore all the things that most teams have to deal with.

For most teams are not able to just do what they want. They are constrained by the organisation that they exist within. They must produce code that will reliably work and be easily maintained over the next several years. They can't afford to retain someone who will innovate a new codebase and then move on, leaving others to puzzle over it. They can't hire a 10x Engineer Ninja who will reimplement a brochure-ware website in a client-side framework and then ignore those users who are excluded by it.

No, most teams are very boring. I'm really glad about that. We need boring. Boring is what gives stability. Boring is what allows web teams to concentrate on building robust websites, and focussing on user needs. Boring is what allows teams to produce elegant long-life solutions that do not need to be babysat and stroked by a magical engineering gnome.

As I read that tweet and thought about dark matter, a darker analogy occurred to me. Because the 1% of developers who dominate our conversations and newsfeeds feel analogous to those who dominate our news headlines. On my more melancholic days they feel like the 1% who chant loudly about Brexit, who scream at rallies wearing MAGA hats. They distort the conversations that the vast majority of us have. Their views and experiences are lofted by the hot air of social media.

That I even thought of that analogy speaks volumes about how toxic some of the discourse in this area has become. People speak about "the old guard" and "stupid backwards techniques", forgetting that it's real humans, with real constraints who are working on these solutions. Most of us are working in a "stupid backwards way" because that "backwardsness" WORKS. It is something that is proven and is clearly documented. We can implement it confident that it will not disappear from fashion within a couple of years.

Perhaps more of us would use the latest and greatest code if it was well documented, and proven to be sustainable. If we thought that the people behind it thought about the coming 5 years, rather than the coming 5 job interviews.

I want to innovate. I love learning new things. It's what attracted so many of us to this industry. But let's take time to think about what we build, and how appropriate it is for any given situation.

Perhaps the client-side framework developed by a multi-billion dollar company isn't the one that you should be pushing into the browser of your local grocery website? Perhaps the buildchains that require ancient dark magick to invocate are not appropriate on a team that simply compiles some Sass to CSS?

Let's appreciate what the 1% does. But let's not allow the 1% to dominate the conversations and our collective headspace.

I've had some thoughts about the great ocean of web developers who we never talk about.


  • ❤️ (Likes) x 503
  • ♻️ (Reposts) x 194
  • 💬 (Replies) x 103
  • 🔖 (Bookmarked) x 2
How the hell are you getting all these replies on here, Charlie?

Ah, sweet summer child. It's time to send your own Webmention!



here's to boring, thanks for writing :)

2019/07/30, 21:10, CET

Jeremy Wagner

Holy shit, what a good read. Would you mind if I referred/link to this and credit you in a talk I'm giving at @JSConfUS? It dovetails with this post I wrote I while back:…

2019/07/30, 21:11, CET

dana byerly

This was a much needed read at the end of a boring day, thank you!

2019/07/30, 21:20, CET

Adam Norris

So much truth! 👏 are you available to hire for parties? 🤗

2019/07/30, 21:23, CET

Charlie Don't Surf

Thank you! And a likewise excellent read! Pease feel free to reference it. :)

2019/07/30, 21:26, CET

Rebecca König

Thanks so much for writing this.

2019/07/30, 21:29, CET


100%… So many people building the web are also one man bands who have to do many other roles and maintain sites over long time frames also.

2019/07/30, 21:30, CET

Jeremy Wagner

I read "bloody corker" in an aussie accent out loud, please don't unfollow me andy

2019/07/30, 21:30, CET


As my friend @webtw once put it so quote-worthy: if I could cuddle this blog post, I would. That’s how much I love it.

2019/07/30, 21:36, CET


excellent post, thanks for writing this

2019/07/30, 21:36, CET

Patrick Westerhoff

“Perhaps the client-side framework […] isn't the one that you should be pushing into the browser of your local grocery website?” That's the thing that bothers me most these days. These 1% innovations ignore that you should use the best tool for the job, not the fanciest.

2019/07/30, 21:45, CET


Here's to the boring devs. The maniacs who want to hit back and then forward and be absolutely certain that's not going to break everything.

2019/07/30, 21:46, CET

Dave Letorey

PS I love your new blog template! PPS I know the last sentence was not a real #PostScript

2019/07/30, 22:03, CET

Eric Bailey

Bless your heart, Charlie.

2019/07/30, 22:18, CET

Per Axbom

Really good writing. Thank you.

2019/07/30, 22:25, CET

Peter 🗺️ 🌎 Rushforth

I know why 1% is used, but it is likely numerically a couple of orders of magnitude too big. Our goal should be to help the other 99% get into the 1% space. And we can't do that by layering on complexity, fwiw.

2019/07/30, 22:35, CET

Shell Bryson

Interesting. CSS-in-JS is not my thing. I’m responsible for a commercial React shopping app, CMS-templated sites, & old school static html at a start up & frankly, reuse is key. Shared SCSS all the way. Context switching a project killer for tiny multi-project dev teams.

2019/07/30, 22:38, CET

Melanie Sumner 🐹

I've been yelling about this in my "older sister loves you but is disappointed in you and thinks you can do better" for a long time - def wrote into @ShopTalkShow on more than one occasion about it. :)

2019/07/30, 22:41, CET

Johan Alkstål

This topic and analogy of the "dark matter developers" has coincidentally been used before. It is a topic worth reflecting on.…

2019/07/30, 22:55, CET

Matt Hill

My entire career has been "boring" and I like it that way: boring generally equates to "simpler" and simpler things are easier to develop, easier to ship and better for users. Unfortunately, it's getting harder and harder to find jobs with this mindset.

2019/07/30, 23:08, CET

Chris Heilmann

That's one of the interesting bits about working where I do. You can meet them and see how they tick

2019/07/30, 23:28, CET


*sigh* been talking about that for years. Not as cool as the framework of the day unfortunately.

2019/07/30, 23:48, CET


BTW the "and go home" part is worth highlighting. Living and breathing code, working on side projects and maintaining an active github account etc is privilege too.

2019/07/30, 23:54, CET

Manon &c.

I have a feeling that's why I've been reluctant to learn how to use Node. I had the excuse that my old computer wouldn't install it correctly. Now have no excuse.

2019/07/31, 00:43, CET

Damon Muma

This was beautiful. Especially worth the long read to arrive at the phrase "stroked by a magical engineering gnome". Reading that was like unlocking an achievement.

2019/07/31, 02:24, CET

Aaron Miller

Another definition of "boring"... Something, anything that works 99.99999 of the time all the time.

2019/07/31, 02:38, CET

swyx 🌟

👋 i’m a new follower and i noticed your site loads suuuper fast and i was wondering “hmm does she use @netlify” so i checked and...

2019/07/31, 02:58, CET

Una Kravets 👩🏻‍💻

Loved this post ❤️❤️❤️

2019/07/31, 03:04, CET

Steven with a 3

God what I'd do for a simple build chain. Compiling node web app into executable. Had to write a script to codegen statements to include static assets into the exe, only way it would compile on build server. Sometimes the requirements add complexity, not much you can do.

2019/07/31, 04:20, CET

Maina Wycliffe

This just made realize thats it's easy to forget where you come from, when you sole focus is on where you are going. It's quite eye opening, I will be nicer to my boring developer friends.

2019/07/31, 04:22, CET

Oliver Erxleben

Innovation is not using latest tech stack.

2019/07/31, 04:42, CET

Claus Paludan

The ever present battle of keeping up with new tech while keeping all the green lights lit. :)

2019/07/31, 07:11, CET

Lucas Arundell 🇦🇺🇩🇪

Want to read but this is all I see. Am I doing something wrong?

2019/07/31, 07:18, CET

Laura Montgomery 🇮🇪🇪🇺

Nice post. And I think a brilliant sum-up of how some of us "boring" developers feel about the 1%. If you'd asked me this time last year, I would have said that I was afraid about falling behind. But now, with the cutting edge tools having changed 4 times in that time, but my...

2019/07/31, 08:36, CET

Chris M.

Full IE 11 support is still a *mandatory* client requirement for the product I manage, and as a safety-related, legacy (16+ years in production), Enterprise application, "boring" is very much where we _have_ to stay. The fanciest tech in the main application is some jQuery powered AJAX calls. It’s not glamorous web development, but it works reliably day in, day out, and more importantly for us, anyone with a background in the 3 fundamentals can join the team and contribute nearly immediately.

2019/07/31, 08:41, CET

Generic Cat Mom

Just read & agreed with this, and realise you follow me! 👋 I am probably one of these devs; I just use regular RoR and the company I work for at the mo doesn't spend ages innovating with new tech. Also I am "just" a developer after almost 20 years

2019/07/31, 09:58, CET

Andrea Lazzarotto

Geez, that's so true! Amazing post. Sometimes I think we give too much merit and attention to a few Twitter divas who love to brag about all the cool React/Node/[insert JS thing] stuff they use to do everything in life, instead of focusing on the real work. 😅

2019/07/31, 10:04, CET


Is it ok if I use this in a presentation for work?

2019/07/31, 10:08, CET

Pranav Bhaskar

This website is making a bold statement. I love the design and how it stands out.

2019/07/31, 10:25, CET


Excellent post. It inspired me to write this one:

2019/07/31, 10:29, CET


Couldn't agree more. I still use vanilla CSS, started using Sass w/ Laravel a few months ago though. Still use jQuery - apparently it's no longer "the done thing" but it does the job, and it being used by 73% of the top 10 million sites must mean it's still doing something right!

2019/07/31, 10:36, CET


Well she said what I meant very well 😃 Good stuff n

2019/07/31, 11:11, CET

Alan Plum

The only thing missing in these takes is understanding the nuance: not every React project is in the 1%, not every dev using nearly-cutting edge tech works on a vast userbase with unlimited budget. There's very much a VC funded bleeding edge but there's a gradient beyond that.

2019/07/31, 11:33, CET

Joshua Miller

Love this! So much emphasis is put on tooling and frameworks over actual output. When a new project starts people immediately jump to the tools they want to use rather than focusing on the outcome. The Modern-JS ecosystem is needlessly overcomplicated; CSS-in-JS is blasphemy.

2019/07/31, 11:48, CET

Steve Lee

great article but on my iPad I could only see the 1st paragraph :( #chuffinwebkit

2019/07/31, 14:07, CET

Charlie Don't Surf

I accidentally deployed a truncated version for 10 minutes, about 8 hours ago. Could you perhaps check again?

2019/07/31, 14:10, CET

Steve Lee

Ahah! will do later! Shame, I like to complain about webkit! :-P

2019/07/31, 14:13, CET

Charlie Don't Surf

Thank you Andy! Your tweet inspired it!

2019/07/31, 14:16, CET

Steve Lee

Sadly, it now displays perfectly :)

2019/07/31, 14:23, CET

Adam Kuhn

one of the finest posts I've read this year

2019/07/31, 14:32, CET

You know what's boring? Because it's so repetitive? CSS-in-JS.

2019/07/31, 14:34, CET

Andy Bell

bUt hOw dOEs yOuR cSs ScALe?

2019/07/31, 14:35, CET

Joshua Steele

"I say this very clearly because a 20-something white man will soon comment on this post and suggest that's what I meant." Why white? Why man? Great article, but attacking people's race/gender is not helpful. "Someone" would have been sufficient.

2019/07/31, 14:40, CET

Jeremy Wagner

i heard the word. anyone need some responsible javascriptin' up in here?

2019/07/31, 14:44, CET

Andy Bell

npm install 'responsibility';

2019/07/31, 14:47, CET

Tatiana Mac

missing dependencies privilege, self-awareness, humility

2019/07/31, 14:50, CET

Tatiana Mac

JS stands for Jeremy’s Spicy 🌶

2019/07/31, 14:50, CET

Jimmy Breck-McKye

I like the intent of this post but don't recognise your portrait of "1% teams". I've been in some and they were categorically not low-pressure, low-accountability playgrounds. I've also worked in "98%" teams - they were user-hostile and treated e.g. a11y as frippery

2019/07/31, 14:51, CET

greg gibson

Holy shit, that's a beautiful post! As the only designer/developer for a 3,000-employee school district, my life is "producing workhorse products that serve the organisation." Being boring means I (or my successor) can still maintain something from a decade ago, years from now.

2019/07/31, 14:51, CET

Jeremy Wagner

spicy callbacks ready for your spicy event listeners

2019/07/31, 14:51, CET

It does automatically, if I'm not writing new (redundant) CSS for each component!! 👍😎👺

2019/07/31, 14:53, CET

Tatiana Mac

Conference attendees are now event listeners I don’t make up the rules

2019/07/31, 14:53, CET

Jeremy Wagner

i will happily bind myself to my seat for your talk next week

2019/07/31, 14:55, CET

Dave 🧱

Hot damn, that was a good read

2019/07/31, 15:19, CET

Jon Walter

I really enjoyed that article. I've been freelance for a couple of years and really only started engaging in dev twitter in the last few months and it's made me feel like I'm well behind the curve because I've been too busy to try out all the stuff I see people post... (1/2)

2019/07/31, 15:25, CET

George Katsanos

This echoes my thoughts better than I would have expressed then myself. We're all victims of Facebook's marketing department which realized the best way to attract engineers and win the tech battle is to heavily promote the framework.

2019/07/31, 15:26, CET

greg gibson

Thank you for this. Seriously, it's amazing. And I want to print it and bring it to any tech interviews I do in the future to help justify why I've done the kind of work I do.

2019/07/31, 15:28, CET

Harald Kirschner 🔥🦊🛠

Wonderfully crafted ✨! Working on DevTools, I try to remind myself and the team of that hidden reality everyday to focus on what has impact. The balance of making developers more productive with their current & legacy stacks, while lighting the path for leveling up.

2019/07/31, 17:23, CET

Stusie Posting Birdfeed

Totally - these are the developers I had in mind when I wrote this post on WICG back in 2015:…

2019/07/31, 17:32, CET

Chris Perry #FBPE 🇪🇺

A “magical engineering gnome”; that’s what I want to be - you can keep your unicorns 🦄

2019/07/31, 18:16, CET

Mike Street

Great blog post - definitely needed saying 👍 My two pence worth:…

2019/07/31, 18:24, CET

Double Negative

Excellent article! A must read for all prospective employers, recruiters, and job hunters.

2019/07/31, 18:38, CET


Awesome read! Thanks for writing this. What are you using to show webmentions and replies on your blog?

2019/07/31, 19:28, CET


It's such a shame that people focus on shiny noisy trinkets instead of doing the things developers actually want. Like the parent selector. If there are too many updates caused by it, the parent selector could be delayed, to keep a page from hogging resources unnecessarily. #dev

2019/07/31, 20:06, CET

A-A-ron H

CSS in JS is awful. SASS is wonderful. The two can be made to work with another if the former group would spend a couple hours understanding how to include SASS modules, use selectors better, and stop assuming that JS is the solution to everything.

2019/07/31, 20:26, CET


Cool work on your site :) I want to write my own and I'm thinking of starting with just plain HTML files and an empty CSS file, I know nothing of front end development and want to learn. Feel free to send a couple of ressources if you know anything which can help!

2019/07/31, 20:58, CET

Neil Mather

Right on.  Hail the maintainers!

2019/07/31, 22:11, CET


This might come in helpful later, when you already know enough html, css and some javascript (which is different from java), and might seem like gibberish for a beginner:…

2019/07/31, 22:12, CET


Another interesting article to go with this one is the following, also looking at some other dark side of the web development, namely accessibility to low-earners in developing countries:…

2019/07/31, 22:13, CET

Sven Dowideit

So much truth. I've had the privilege of an extremely 1% career. I've worked almost exclusively on dev tools... for 25 years now. Moving that needle for the 90% that are actually making the stuff at the end of the pipe is really all its about.... without them, we're just spinning

2019/08/01, 01:04, CET

Boots-illa 🏢🔥🦖🏭

As a proud member of the 99%, I approve of this article. Thank you for so clearly illustrating what has been on my mind for a few years now. When you swim in those cutting edge waters, it's easy to lose touch with day-to-day reality. Good reminder. GREAT article! 🙌

2019/08/01, 01:38, CET

jeshiphryn burbnish

wow i love your nav and the design in general 😍

2019/08/01, 02:55, CET


Thanks for focussing on the people who keep the web running! BTW I’d love to subscribe to your blog via RSS but your feed doesn’t seem to work.

2019/08/01, 08:33, CET

Luc Princen

Loved your post Charlie! Thanks! Incidentally, I'm going to steal the phrase "stroked by a magical engineering gnome" for one of my D&D games 😉

2019/08/01, 09:01, CET


Great post! 💅🏽

2019/08/01, 09:11, CET

Radoslav Sharapanov

Thanks for the great article and good luck explaining it to HR ;-)

2019/08/01, 09:17, CET

Charlie Don't Surf

Thanks. But explaining what to HR?

2019/08/01, 09:47, CET

Charlie Don't Surf

Thank you! To assist your game please accept a photo of a slightly evil gnome that I saw in a shop recently.

2019/08/01, 09:54, CET

Aaron Davis

Charlie, this post reminds me of the importance of maintainers and how important they are as a foundation for innovation.

2019/08/02, 05:58, CET

Joe Pumpernick

In every tribe, the 1% is the most vocal always

2019/08/07, 22:02, CET