# Leaky Abstraction
A **leaky abstraction** in [software development](https://en.wikipedia.org/wiki/Software_development "Software development") refers to a design flaw where an [abstraction](https://en.wikipedia.org/wiki/Abstraction_(computer_science) "Abstraction (computer science)"), intended to simplify and hide the underlying complexity of a system, fails to completely do so. This results in some of the implementation details becoming exposed or 'leaking' through the abstraction, forcing users to have knowledge of these underlying complexities to effectively use or troubleshoot the system.
All non-trivial [Abstractions](Abstraction%20(Computer%20Science).md), to some degree, are leaky.
Andrej Karpathy points outs that training Neural Networks is often a Leaky Abstraction.
---
Date: 20241115
Links to:
Tags:
References:
* [The Law of Leaky Abstractions – Joel on Software](https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/)
* [Yes you should understand backprop | by Andrej Karpathy | Medium](https://karpathy.medium.com/yes-you-should-understand-backprop-e2f06eab496b)
* [Leaky abstraction - Wikipedia](https://en.wikipedia.org/wiki/Leaky_abstraction)