I think this article actually misses the point of why all those layers exist. Let’s review here about why we make it so hard for junior devs to directly set global state http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/.
Yes, yes, now we have immutable global state, but the basic issue remains that if anyone can set global state from anywhere, they will, and immutability will *not* save you from the headaches of trying to track down the bug introduced by someone reaching out their hands and setting state without “going through channels.”
I think the issue is that we constantly scramble from framework to framework, without truly deeply understanding why we’re doing what we’re doing. So we repeat all the mistakes we made in the old framework that caused everyone to throw up their hands and abandon it — because it’s the problem. Certainly the problem isn’t us, the developers, who fail to learn just basic good software development principles.