Why ORMs Are Bad: A Programmer's Required Reading List
Carl's Required Reading

Carl Kolon, an engineering leader, shares his curated list of articles that have shaped his views on software development. The list covers coding practices, platform design, frontend development, databases, async programming, encoding, and books. Kolon annotates each entry with a brief summary and highlights his favorites, such as 'The Grug Brained Developer' and 'Steve Yegge's Google Platforms Rant'. He also includes a strong critique of ORMs, recommending 'The Vietnam of Computer Science' and other resources. The list aims to provide valuable insights for programmers, even if they disagree with some of his opinions.
I am a certified ORM-hater. I think they are seductive for new projects, but quickly begin to cause performance issues and confusion.
- pragmatic
Decent list but the ORM thing makes me suspicious.
He links here as some kind of damning proof that ORMs are default bad.
https://openai.com/index/scaling-postgresql/
“It’s a poor craftsmen who blames their tools.”
My ORM rule of thumb:
ORM for CRUD not Reports
If you are joining 12 tables for operational data, you have a design flaw. That’s a reporting query pattern.
Often temp tables, CTEs etc are needed as an immediate fix with redesign as a long term fix. The query planner simply can’t optimize that in a reasonable time or it’s beyond there scope if what it can optimize. Also their solution to “joining in memory” is common.
My DB query rule of thumb:
If the query is hard for you to understand, it’s hard for the planner to understand.
Default to small fast simple queries and pipeline them together.
- drunkboxer
I have a similar list I like to share, had a few from Carl's list, will probably add a few from it.
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom... https://www.parsonsmatt.org/2017/10/11/type_safety_back_and_...
https://lwn.net/Articles/336262/
https://tomasp.net/blog/2015/library-frameworks/
https://ratfactor.com/cards/not-quite-the-same
https://matklad.github.io/2023/11/15/push-ifs-up-and-fors-do...
- olives
Microservices
grug wonder why big brain take hardest problem, factoring system correctly, and introduce network call too
seem very confusing to grug
^ This is the best and funniest paragraph of text that I’ve read this year
- cweagans
OP might also like Essentialism. Very in line with YAGNI - it guides things outside of API design too!
- kristianp
Pleasant to hear about the Object-Relational Impedance Mismatch [1], haven't heard about that concept for a long time - maybe a decade!. The reason I like Dapper [2] is that it makes you use your own sql.
Edit "lets" -> "makes".
[1] https://en.wikipedia.org/wiki/Object%E2%80%93relational_impe...