Remix.run Logo
pseudosavant 5 hours ago

I can't help but think this type of step function change has happened with computers before.

The change from punch cards to magnetic storage certainly made it so you didn't have to "know how it works" for every single bit.

The change from machine code to a language like Fortran brought about such an abstraction that a Fortran dev didn't "know how it works" at that same level anymore.

At this point, the layers of abstractions between using a React component and something being rendered is immense. React VDOM, the real DOM, browser render engine (which sits on abstractions like ANGLE, skia, etc), calls OS APIs, which call driver APIs, and the lowest level of anything it is still C/C++ that is compiled (abstracted) to something closer to what the hardware expects.

I won't bore you with the ChatGPT output details, but it estimated at least 35 meaningful layers of abstraction between a React component and being rendered to the screen. LLMs seem to be the latest level of abstraction to make it so we "know how it works" less than before.

legobmw99 5 hours ago | parent [-]

It's hard to articulate why, but 35 layers of deterministic abstraction feels very different from 1 layer of nondeterministic one.

In particular, I think every developer has experienced the need to jump "down the stack" to debug or understand something (even if not all the way down). Certainly, I think any senior developer should be at least conversant in the first few levels below wherever they "live". But this seemingly ends up looking fundamentally different in the interaction mode of an LLM, because you'd just ask it to jump down the stack for you

pseudosavant 4 hours ago | parent [-]

I still see this more like there will be "devs" that only know how to use LLMs and not any layer under it.

Just like there were web devs that only knew jQuery but not any actual JS. Game devs that know only Unreal Engine or Unity but nothing about DirectX, OpenGL, or Vulkan. C/C++ devs that know nothing about LLVM IR or the actual bits their compiler generates. It can also be a poor understanding of the layers in the abstractions above you too.

I find a lot of value in being able to understand levels beneath the layer I'm mostly working in. There are things, even/especially with LLMs, that I can grasp because of my deeper understanding.

But there have been plenty in our field that have only known their level of the abstraction for quite a long time. Every time there is something introduced that lowers the barrier to entry to making things, there is a version of this "but they don't know how it really works..."