Software development hasn't truly changed at all in past 5/10/20/30 years. It's about all the same patterns / models / approaches that keep having their highs and lows alternately in cycles.

It may be an oversimplification, but it's true in surprisingly many cases - keep in mind recent renaissances of:

functional programming & lambda calculus

actor model

asynchronous (message-driven) communication

SOA (under the new, micro-name ...)

KV or object stores

LISP

Old ideas get refreshed, re-learned & people seem to notice (& appreciate) values they didn't find relevant (or just underestimated) before. Actually, it's not that easy to find a completely new, fresh idea that isn't really a refurbishment of something already tried before, and has made a real breakthrough.

Reactive Streams? Blockchain? Containers? Microkernels? Nope, they all have roots in something that has been invented before. I find the word "invented" very important here. Maybe the fact that we're continuously orbiting around same concepts, ideas & models has its reasoning in the origin of them.

Maybe they are not invented, but ...

... discovered?

Hopefully you get the difference intuitively:

invented is something that has been created by the inventor, brought to life with the power of someone's intellect - fully defined from scratch, as it didn't exist until then

discovered is something that did exist on its own, but lacked a proper definition / model / recognition - either wasn't named, had no clear purpose / use case or was completely ignored or unknown

If you think about that for a moment, so many (even sophisticated) programming models have their origin in behaviors, situations or patterns that happen within real life, in completely different areas of interest:

Event Sourcing - works exactly like accounting (& many, many other things)

OAuth 2 - compare it with the way your national ID is being issued & used

Hystrix - well, as it's known as a ciruit breaker ...

Gossip protocol - well ... uhm ... ok :)

Neural networks, simulated annealing, bubble sort ...

Ok, enough.

Maybe the correct question is - are we actually inventing anything new in Computer Science? Or is it about mimicking real-life, physical models & reproducing it in the form of source code? "Discovering" them again, but in a digital way. Is it even possible to invent something new in software development? The answer isn't really obvious for me.