Janet probably won't come back, but:

No. Software developers are *not* technicians. We are designers of detailed blueprints. It just happens that we have so successfully automated the implementation process - the assembly of our detailed designs into executable code - that we have removed the human completely from that task. We have a completely automated production line that (barring compiler bugs) produces exactly what was specified every time. As the last human in the process, we are erroneously identified as the production worker, but we aren't, we are the last designer before hand-over to production.

Almost all new software is written in a high-level language. We concentrate on telling the computer what, we let our tools decide on the how. That is, we say 'assign this variable this value'. The ahead-of-time compiler, JIT compiler or interpreter decides what variables would be best held in registers, and which register, and what memory location to store it in. Even then, what comes out of a developer's toolkit is typically still a flat-pack of parts to be assembled into an actual running process: the operating system's loader pulls together the disparate parts from what I produce, from its own parts and from third-party libraries and glues those parts together, potentially changing some of those assignments to ensure that all the parts can live together.

In a bytecode/IL environment what we ship is a detailed blueprint slightly more refined than the one we drew up, and the assembly technician lives on the user's computer and adapts it to the hardware and software they actually have. On the web we just send them the blueprint itself.