@agocke @nedbat @f4grx @pkhuong This is a great heuristic IMHO. If you're running into trouble with a layer, that's a sign you may need to learn more about it. If not, don't bother (unless it's for fun).
Of course you can have trouble with a layer without realizing that's what you're struggling with. Unknown unknowns etc. That's why it's helpful to have a community to ask - though if they just say "learn C" when your problems are caused by something else (as they likely are) how helpful is it.
@shauna @agocke @nedbat @f4grx @pkhuong Re: unknown unknowns: it's hard to write efficient code if you don't have at least some idea of lower layers.
See frontend devs who only know React and have no clue about standard HTML elements.
You might not need C itself, but you should know about how native code is executed and how the kernel works. You can get that from Rust or C++ too.
@shauna @agocke @nedbat @f4grx @pkhuong Sadly it's all too easy to keep lower layers shrouded in mystery if all you care about is supporting a narrow niche of users that are similar to you.
If you want your code to run on lower powered devices or to be accessible to others, you need to dig into lower layers.