This is why game designers must remove all repetitive, boring, yet effective strategies in order to make good games.
If there's something the player can do to gain advantage, no matter how boring or tedious it is, they will do it and they will ruin their fun and they will assign all blame for it on you, the designer.
MMOs and games in general have you experience content in roughly 5 different ways: authored (expensive), procedural (complex and generic), emergent (problems explode with size), repeated (the grind), or user generated. Each game, and each system and region inside a game, is a balance between those.
So I guess the lesson is more like: Game designers need to remove all effective strategies which short-circuit the core gameplay that your audience expects.
(Source: joined the Cocoa team in 2005.)
Having encountered a similar proliferation of config in "enterprise" C++ (where it's usually not implemented in terms of serialisation) it was mostly driven by a need to modify the behaviour of systems in production without having to go through software release processes that were often cumbersome and beaurocratic.
Additionally by going through NeXT manuals, or the Brad Cox book, I don't get where the author came to the idea everyone should be doing C.
Heck even the device drivers had a framework.
Even when it becomes evident doing it another way would have been better, usually it is still readable and consise, and quick to develop.
My biggest disappointment in this profession is that ruby isn't used much more outside of rails. My team use it for everything except low level driver stuff, and it feels like we have this huge unfair advantage over our competitors.
As one man company I feel you on this. May is subjective, but starting from watching people that spend literally weeks to combine some buggy wordpress plugins to build out a functionality that is essentially just CRUD to folks who build multi server, multi service apps for just a few hundred monthly users. Where we just run a few generators, add a few major gems and can start focus on the fun stuff.
Your code is gonna be full of standard library and framework code, your code might as well blend in and be roughly intuitive to people who already know them.
It had "Java" in the name.... right??? right!!??
Hmm, it seems then that the programmers at NeXTStep and Apple didn't understand ObjC either, because the highlevel macOS/iOS APIs almost never use C structs for grouping simple data items but instead expensive ObjC objects where even the most simple setter/getter operation involves an objc_msgSend call under the hood.
Hubris and laziness is the hallmark of developers, so the easy path is the most often used path, which becomes familiar, which then leads to a choice between familiarity vs FUD. You get a few mavericks, but unless they can prove a productivity change by some metric or miracle, they never make much headway.
Hard disagree that this is what we should cater to. Programmers should also know the ecosystem they are working in. Just because you learned python with really long chains of method calls, doesn’t mean you should use the same style in Java… though it’s “easy” because that’s what you are used to doing.
Long chains of method calls are no more idiomatic in Python than Java to start with (Ruby tends toward fluent style, but Python doesn't.)
I'm not much of a fan, because you still have to deal with how asp.net works once you build anything serious, and now that isn't something the quickstart tutorials expose you to.
another common one is: that's what we have been taught in school.
python has mostly replaced java in schools now but java used to be the introductory language of choice. one can even say that it was like a feedback loop, i.e., the industry dictating what students should learn...
We live in valleys, we go where taxes are low, we cut corners in parks.
Balancing structure and ease is an interesting art.