news.ycombinator.com
The usual response to this complaint in the Ruby/Rails ...
Excerpt
The whole language (and Rails) also pushes you towards a less efficient path. For instance you’re probably iterating over those six plans and inserting them individually in the DB. Another approach would’ve been to accumulate all of them in memory then build and perform a single query. That’s not something people really consider because it’s “micro” optimization and makes the code look worse. But if you miss out on hundreds of these micro optimizations then you get a worse system. … Excessive abstraction at the ORM can also make it extremely difficult to optimize db queries, so each user request can trigger way more DB queries than necessary, and this will require more db power. I have seen this happening over and over due to abstraction layers such as Trailblazer, but anything that is too layered clean-code style will cause issues and requires constant observation. And refactoring is made difficult due to “magic”. Even LLMs might find it too much. Another problem with the slowness is that it slows down local development too. The biggest test suite I ever saw took 2 hours to run in a 60-machine cluster, so 120 hours of CI. Impossible to run locally, so major refactoring was borderline impossible without a huge feedback cycle. The solution for the slow development ends up being hiring more developers, of course, with each one responsible for a smaller part of the app. In other companies these kind of features I saw would be written by people over days, not by team over months. The terseness of both Ruby and Rails is also IMO countered by the culture of turning 10-line methods into bigger classes and using methods and instance variables instead of local variables. So it also hurts both readability (because now you have 5x more lines than needed) but also hurts optimization and stresses the garbage collection. If you know this, you know. I have seen this in code from North+Latin American, European and Japanese companies, so it’s not isolated cases. If you don’t know I can provide examples.
Related Pain Points
Prisma enables N+1 query problems through implicit abstractions
7Prisma's smooth abstraction layer makes it easy to accidentally trigger N+1 queries where a simple loop over results causes thousands of database round-trips. A loop over 1,000 users results in 1,001 total database requests, crippling server performance.
Slow test execution within Docker containers
6Running tests from within Docker containers takes excruciatingly long to complete, adding significant overhead to the development and testing workflow.
Ruby language culture encourages inefficient coding practices
6Ruby and Rails culture promotes code patterns that appear clean but are inefficient: individual database inserts instead of batch operations, excessive method abstraction creating 5x more lines than needed, and instance variables instead of local variables. These micro-optimizations are dismissed but collectively tank performance.