Software abstractions save us time doing work by not having to write programs from lower level building blocks. Programming languages like Python provide an easier way to write general purpose software than say, assembly language.
However, abstractions don’t absolve us from having to learn about lower level building blocks because they always seem to leak through to higher levels. For example, you can’t build a web app using React without debugging an issue with hooks that have to do with async JavaScript once in awhile. Eventually, we all need to learn what lies beneath!
From The Law of Leaky Abstractions.
See also:
- Abstractions are real
- Choosing boring technology can help find higher quality abstractions but the same laws apply, just less frequently
- Good magic and bad magic
- TypeScript undermines the value of the JavaScript ecosystem and static typing