https://projects.raspberrypi.org/en/pathways/lego-intro
They're exclusively written in Python, some of them using Bluetooth for remote control, some using pollution APIs to display data and also TensorFlow for image recognition.
PLCs have historically used ladder diagrams, which are also not 'code'. I've seen Excel spreadsheets that you would have been hard pressed to replicate using code.
Programming in its very essence is telling a machine what to do, what form that comes in isn't all that relevant, and code is just one of those forms.
'actual code' is not a requirement for programming.
If I actually wanted to use a block language at my day job I'd want affordances for larger, more complex programs. Compiler or JIT, copy/paste, zooming in and out of parts of programs (ala Prezi or something), integration with source control diff tools, C extensions / integration with existing code, console output, file I/O, etc.
It could do absolutely everything that Lua could do. We also added a kind of multifile support, using tabbed views to reimplement libraries on the browser side of things (compiling into separate Lua files).
The idea was that educators at both ends of the spectrum could convert to and from the same visual representations. The primary school classes the uni were running could use blocks, and slowly move to normal Lua, one feature at a time, all the way up to the first and second year ICT programs for higher ed.
Because it could compile to Lua, we could use git and a whole bunch of other tools that already exist. There was an experimental C/asm.js branch to add in FFI support, but that was deemed too time-costly whilst the rest still had a bunch of edge-cases.
And then, unfortunately, the whole program got yanked. But about that time it was close approaching what I would consider "useable" for actual real work.
That said, microcontroller programming is something very specific in the sense that the same thing might (and often is) programmed in a completely different way on another device, so basically a large part is just getting to know your hardware. Fortunately, these days several abstraction layers are available for people who need them, from MicroPython to FreeRTOS.