Marvin Minsky's opinions about CSS-in-JS


I’m currently re-reading Marvin Minsky’s The Society of Mind, first published in 1985, which I first read (well, skim-read) during my frenetic revision for undergraduate psychology exams. It’s far more enjoyable to return to it in a relaxed state of mind.

The Society of Mind is an easy-to-read collection of short essays that build up to a coherent theory of how the mind works. This is how I hoped these emails would work out, but that’s a much harder exercise than it seemed at the beginning.

In the essay Novelists and Reductionists this passage appears:

It’s always best when mysteries can be explained in terms of things we know. But when we find this hard to do, we must decide whether to keep trying to make old theories work or to discard them and try new ones. I think this is partly a matter of personality. Let’s call “Reductionists” those people who prefer to build on old ideas, and “Novelists” the ones who like to champion new hypotheses. Reductionists are usually right – at least at science’s cautious core, where novelists rarely survive for long. Outside that realm, though, novelists reign, since older ideas had more time to show their flaws.

This might be a stretch, but I read this and immediately thought of the debate around CSS-in-JS. Comparing CSS to the inner workings of the human mind is of course a facile exercise, but that’s the leap my brain made.

The parallels are obvious. “Reductionist” old school types prefer to keep CSS separate and out of JavaScript’s mitts. “Novelist” advocates enjoy the component-level isolation, avoidance of global namespace pollution and the end of the specificity wars.

There’s also a concept of abstraction here. Later in the essay, Minksy talks about ‘levels’ of agents. Lower levels are more mechanical. Higher level agents are involved more in orchestration, abstracting away the mechanisms below.

In order to make our work useful, whether it’s as a cognitive scientist or software developer (and Minsky was a bit of both), we need to choose appropriate levels of abstraction for what we’re trying to achieve.

And this is why sit firmly on the fence when it comes to bike-shedding about approaches like CSS-in-JS. For me they’re just different things with different purposes, and not always competing solutions to the same exact problem.

I’m sure you have a different outlook. Do you have a strong opinion about CSS-in-JS you’d like to share? I could probably do with being persuaded to come off the fence in one direction or another.

All the best,

– Jim

Receive emails like this in your inbox

I write about front-end engineering leadership every weekday.

Sign up now and get my Front-End Engineering Responsibilities Laundry List PDF for free.

You'll get regular emails about front-end development. Unsubscribe at any time.