The Law of Leaky Abstractions
I see this fact used pretty often to dismiss the idea that we should use abstractions at all, and I think that&#x27;s pretty wrongheaded. As an example, it&#x27;s pretty common to hear that people should prefer writing raw SQL to using an ORM or query builder because those are both &quot;leaky abstractions&quot;<p>Abstractions aren&#x27;t necessarily only there so that you don&#x27;t need to understand anything about what&#x27;s being abstracted. They are there so that your code can get away from nitty-gritty implementation details, and be more focused on the problem domain.<p>What would you rather see when you&#x27;re coming into a new codebase:<p><pre><code>    const formData = new FormData();
    formData.append(&#x27;name&#x27;, &#x27;Widget&#x27;);
    fetch(`&#x2F;api&#x2F;widgets&#x2F;${id}`, {
       method: &#x27;POST&#x27;,
       body: formData
    })
</code></pre>
or:<p><pre><code>    Widget.save({ name: &#x27;Widget&#x27; });</code></pre>