14 ms·
> People are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient i
by MrBuddyCasino 3y ago
> People are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient interfaces.
This happens over and over again because it appears so alluring and friendly that it attracts newcomers like flies.
DSLs (looking at you, Kotlin flavoured Gradle), magic annotations (Spring Boot) and ORM frameworks are great in theory, but pray shit doesn't hit the fan, because then you're off debugging the intricate internals of said leaky abstractions.
I suspect it was part of the reasons Scala died, and while I can't say I love Golang, they seem to be only ones with a culture that actively discourages this.
- SkyPuncher 3y agoI love Rails, but the author's complaint is also my most frequent complaint. The "convention over configuration" kind of sucks since it's far too easy to break from "convention".
- MrBuddyCasino 3y agoI'm not sure "convention over configuration" is in itself a problem. Opinionated defaults and patterns don't have to lead to incomprehensible abstractions, but I guess it takes some restraints.
- perceptronas 3y ago>I suspect it was part of the reasons Scala died Scala is quite inspect-able, you can always use static analysis tools and IDE to find how everything works. Usually just one cmd+click away. Even metaprogramming, although can be hard to understand – its easy to search for. If you are referring to 'Dynamic' (call methods which do not exist during compile time), to be honest, its extremely rarely used in code. Good luck figuring what's happening in Ruby metaprogramming where you don't know what to search. I read somewhere in linkedin: Scala is dead because average developer is sad. I think there might be some truth to that statement. In my experience, Scala works wonderfully with motivated engineers
- MrBuddyCasino 3y agoThe same is true about Gradle's Kotlin DSL, and it is hard to understand what exactly is happening under the hood and what the correct way to invoke things really is. With Scala this problem is even more pronounced, because its type system is more powerful, so you can build even more intractable abstractions. The "Scala works wonderfully with motivated engineers" is basically damning with faint praise. "Smart languages" always work well with single high IQ engineers, the litmus test is does it work in a team of engineers with varying talents, which is simply how the real world works. Even if everyone is above average, those types of engineers are often very opinionated and prefer different slices of the cake, which results is social friction and incidental complexity. The C++ guys know exactly what that is like.