Anyone who deals with floating point math very quickly learns about error accumulation and how to deal with it.
ls | sort Length/code
ls | where { $_.Length -gt 5000 }
Resource handling. Lower-level languages require you to manually release any resource you acquire. Every piece of heap allocated memory needs to be freed. Every file you open needs to be manually closed. Every network connection, mutex, or handle needs to be released. It's feasible to do, since you don't have to worry about exceptions. But it does require an incredible fastidiousness to make sure that you always clean up after yourself.
When you get to the higher level languages, you get garbage collection which means never having to manually release memory again. But everything else is stuck being released manually. You can't do it reliably in regular code, since exceptions get in the way, so they introduce things like finally or using. But again, you're relying on the people using the class to remember to clean up every single time they use it.
In C++ you can rely on stack-unwinding to clean up after you. I haven't checked in a "delete" in over 10 years of C++ coding. Every C resource we use gets a wrapper class that automatically releases it when the object is destroyed. It's really the biggest thing I miss when working in other languages.
Maybe our gadgets need to come with cat cradles.
Professor Norton Nimnul has already beaten you to it.
Any circuit design must contain at least one part which is obsolete, two parts which are unobtainable, and three parts which are still under development.