Ungineering
glyph.twistedmatrix.com
glyph.twistedmatrix.com
Outside that context, I prefer to think of myself as a craftsman for small projects, and a gardener for large projects.
Software never exists in isolation. It is interwoven with countless other hardware and software stacks, and more importantly, the humans that use and maintain it, as well as the organizations and processes those humans inhabit. And every single component in that system is constantly mutating.
The true masters of the craft are those who strive to understand and tame this chaos: weeding the garden, but also leveraging that wildness in constructive ways, allowing the garden to grow organically. By making code so readable, flexible, sharable, testable, and durable, that it exists in a non-stop feedback loop with its ecosystem. (Taleb's "antifragility" is a useful mental construct for this ideal.)
Most software projects are not run this way, whether due to a lack of expertise, budget, process, or all of the above. But given how easy it is to write bad software (or good software that decays into bad software), I believe gardening is the proper metaphor for non-trivial software systems.
This is my biggest gripe with it. I don't want to label people "non-techie stakeholders."
As software engineers, we are constrained by software technology and knowledge of software and computer science / mathematics. This is similar to how civic engineers are limited by material technology and knowledge of materials and physics / mathematics. I actually think the analogy fits. I don't see what's wrong with it. However, I do agree that sometimes the "builder analogy" can be taken too far.
That would also describe what many people think when they hear "technician" or "craftsman".
There is overlap between engineers, technicians, and craftsmen. Wikipedia has a good description of where engineers fit in: "The work of engineers forms the link between scientific discoveries and their subsequent applications to human needs and quality of life".
Here is what it says about technicians: "A technician is a worker in a field of technology who is proficient in the relevant skills and techniques, with a relatively practical understanding of the theoretical principles".
It describes a craftsman as a "skilled manual worker who makes items that may be functional or strictly decorative".
I think most people who are described as "software engineers" are doing things that most closely match "technician".
However, here is a different definition of engineering:
"Engineering (from Latin ingenium, meaning "cleverness" and ingeniare, meaning "to contrive, devise") is the application of scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, and improve structures, machines, devices, systems, materials and processes." - wikipedia.org
It looks like wikipedia has a bit a broader definition of engineering. I would use the term "engineer" whenever I refer to a person that exactly does this when creating software.
Further, you could say that "development" is referring to a broader set of approaches to create software; "engineering" would be a subset then.
But software engineering is still a thing, despite its differences. It does a disservice to pretend that software engineering is somehow not as difficult a technical discipline simply because it has a low barrier to entry and credentials are a dubious proxy for any appreciable skill in the discipline.
The reason programmers deserve to be called engineers is because software, especially large systems are as merciless in their cause and effect as the real world. Just as a civil engineer has to master the physics to make a bridge stand up, software engineers have to deal with the unforgiving nature of the logic engine and all the abstraction layers built on top of it. But unlike physics which never changes, the hardware and software substrate that programmers work with is constantly in flux. All of it is layers upon layers of predicate logic concocted from the minds of other programmers. It is as if the very rules of the physical universe were themselves variable and invented by other engineers. Given this kind of environment, and also the diverse applications to which software can be applied (any thought as opposed to any physical object), it's no wonder that software engineering does not have agreed upon branches and standard academic credentials.
For my part, I'm not crazy about any of the labels that come in and out of fashion. I particularly don't like being called "technical." It's such a divisive term.
I generally just refer to myself as an activist. If I'm being tasked with some feat of logical expression, then I'm a logic activist.