upvote
I'm a tech lead and pushing back against accidental complexity is basically my fulltime job.
reply
I'm an Engineering Manager, and I think I have a similar role just applied to people processes rather than code. One nuance though - a lot of the time I suspect it's deliberate complexity designed to obfuscate how little people actually do.
reply
Thats projection.
reply
Well, maybe. It's projection, because I certainly don't make simple processes myself a lot of the time, but I do try to optimize them afterwards. I have a few decades of seeing people implement processes than I've had to use, and then had to simplify as I moved into more senior roles. I've had people push back quite forcefully when I've pointed out they do things like writing reports that no one reads or gathering data that teams ignore. People often fight for added complexity because their perception is that it's important, and that means they must be important because they're the one in control of it.

There is an element of projection because there is in most things people talk about; I'm speaking about this through my filters and biases after all. But it's grounded in a fair chunk of experience.

reply
This was really well written and I agree with you completely. Though I am not so optimistic as a species we have much runway left to get meaningfully much farther out of that infancy.

As tech progresses and those abstractions become substantially more potent, it only amplifies the ability of small groups to use them to massively shape the world to their vision.

On the more benign side of this is just corporate greed and extraordinary amplification of wealth inequality. On the other side is authoritarian governments and extremist groups.

reply
Wealth inequality is a direct cause of authoritarianism and is not benign.
reply
Perhaps, but generally annoying millions of technology people tends not to end well for firms. Usually the market simply evolves to better match the fiscal conditions.

https://en.wikipedia.org/wiki/Competitive_exclusion_principl...

The Internet itself will likely further fracture into different ecosystems. =3

reply
Can you provide some examples of these beautiful abstractions or tools?
reply
Memory garbage collection, borrow checker, compile-time static typing in dynamic languages (Typescript, Python).

Language specific for JavaScript: Strict comparison operator === that disables type coercion, together with banning ==.

== allows "5" equals 5.

reply
To get perspective(we know what worked), here’s some 50+ years abstractions:

A file is a simple stream of bytes in Unix. (If you think what else it might be then compare to Multics’ segments). Separate processes that may be connected using simple standard I/O streams [pipe] (vs everything is DLL in Multics) — the concept of shell itself (policy vs. mechanism separation http://www.catb.org/esr/writings/taoup/html/ch01s06.html ).

https://retrocomputing.stackexchange.com/questions/15685/wha...

For comparison, you need a new app on iOS for what might have been a shell pipeline (hierarchical file system is absent at user level).

reply
Take message queues. ZMQ and the like have basically solved message passing which was a ghastly thing to worry about for many years.
reply
Build tools that enforce hermeticity (cannot depend on files not declared as a dependency) and hashes files (as opposed to using timestamps). This eliminates whole classes of complaints against make.
reply
The actor model for concurrency.
reply
Read The Linux Programming Interface book
reply