Why we don't use an ORM and why you (probably) shouldn't

Jump to TLDR? > This post is mainly intended for coders early in their careers, ✨vibe coders✨ and anyone using an ORM just because We do not use ORMs We have tried all kinds of ORMs and in the end they have all proven to be a hindrance. Our recommendation: Bite the bullet, learn your SQL and as a bonus, you will have a skill that lasts for life. ORMs add a layer of abstraction that will give you all kinds of nightmares Now, I imagine, if you use ORMs regularly, your blood pressure went up a tiny bit, so I'll add a caveat here: If you are working on somewhat simple applications, without unusual reads and/or writes, sure! Writing SELECT FROM for every case when you need to query/insert/delete/patch some data seems silly, we recognize that That's why in our specific case, where we do quite advanced SQL, process lots of logs and manage a diverse range of resources for our clients, we can't afford to: Learn the ins and outs of ORMs Rely on the performance promised by ORMs Trust that the ORM we choose is as safe or that it will be maintained as the underlying query language would If you use an ORM, I would bet that there's a chance that it is because you saw using said ORM and you thought "Ah! This sponsored product will make me better!" Was that the case?

Mar 26, 2025 - 12:54
 0
Why we don't use an ORM and why you (probably) shouldn't

Jump to TLDR? >

This post is mainly intended for coders early in their careers, ✨vibe coders✨ and anyone using an ORM just because

We do not use ORMs

We have tried all kinds of ORMs and in the end they have all proven to be a hindrance. Our recommendation: Bite the bullet, learn your SQL and as a bonus, you will have a skill that lasts for life. ORMs add a layer of abstraction that will give you all kinds of nightmares

Now, I imagine, if you use ORMs regularly, your blood pressure went up a tiny bit, so I'll add a caveat here:

If you are working on somewhat simple applications, without unusual reads and/or writes, sure!

Writing SELECT FROM for every case when you need to query/insert/delete/patch some data seems silly, we recognize that

That's why in our specific case, where we do quite advanced SQL, process lots of logs and manage a diverse range of resources for our clients, we can't afford to:

  • Learn the ins and outs of ORMs

  • Rely on the performance promised by ORMs

  • Trust that the ORM we choose is as safe or that it will be maintained as the underlying query language would

If you use an ORM, I would bet that there's a chance that it is because you saw using said ORM and you thought "Ah! This sponsored product will make me better!"

Was that the case?