Ease of learning ECS?

So I was reading about ECS systems (versus DOTS in Unity - turns out they're a subset), and ran across this article: Is ECS a game-changer? with the following quotes:

One of the main advantages of the Entity Component System (ECS) approach is the architectural design it promotes. Object-oriented programming (OOP) carries a significant legacy with patterns like inheritance and encapsulation, and even experienced programmers can make architectural mistakes in the heat of development, leading to refactoring or tangled logic in long-term projects.

In contrast, ECS provides a simple and intuitive architecture. Everything falls naturally into isolated components and systems, making it easier to understand and develop using this approach; even novice developers quickly grasp this approach with minimal errors.

Uh, wow - I've never seen seen it described that way before - usually it's the difficulty or complexity of the idea. For instance, Please don't put ECS in your engine

(Not to pick on anyone in that thread, it's just one of several that I ran across, when searching for ECS in this forum).

Now, I had no problems with ECS (in Bevy) - but I've also been programming a long time, including developing in SQL databases. ECS is just an exploded relational-database, after all.

So I'm wondering how true it is really, about the ECS learning curve? For one thing, I suspect that the people learning things like Bevy or Rust, are already used to a steep learning curve. So ECS isn't all that big a deal. :slight_smile:

But there's also things like

I think there's a couple of different levels at which to think about things, and exactly what you define as "ECS" will change what you think of the ease.

At one level, the vague idea isn't that different from new VehicleInfoStruct[50000] that you index by ushorts stored in various places that people do in Unity all the time, and it's clearly easy. After all, why store 8-byte pointers that the GC will have to follow if you only need tens of thousands anyway?

But there's also things like "what's the right way to accomplish this goal using the ECS?" which is arguably just as hard as when you learned how to do that in a not-ECS engine, since you need to learn approaches you didn't know before. Or if you treat "ECS" as "how can I usefully parallelize my game logic across everything without races or excessive locking?" then of course it's hard because that's an difficult problem -- of course, one that's probably even harder without the ECS, to the extent that people often don't even try.