In fact, we even have software called an assembler :)
Of course, it all depends on what level you're doing design at, and what level your language(s) work at. But the point is that those 3 roles aren't necessarily are fulfilled by humans when working with software.
That does not mean that there can't or shouldn't be a distinction between the engineer and the technician on sufficiently complex projects. That is, they don't need to be filled by people who could perform either role, as the original comment I was replying to implied. That point was either miscommunicated in my original post or rubbed some people the wrong way.
That's exactly what a coder does.
There are some fields (draftsman, typist, others?) of people who created fine documents based on vague documents from engineers, architects etc. So in principle you could have a similar distinction between software archtects and coders. But it is exactly those document-gruntwork fields which have been transformed most by computers.