Software is mostly human-defined. The complexity mostly comes from understanding the meaning of a large corpus of existing text, and then building your thing on top of existing human-created conventions. Therefore, I suggest we start calling ourselves Software Lawyers, Software Judges, and Software Legislators. This is a much more sensible set of titles than “software engineer” and “architect,” and it will probably cause less confusion and pointless bickering.
Software is just an extension of electrical engineering, only with the small technical difference that instead of building circuits that process signals, you write instructions for a pre-made Turing machine instead. FPGA engineers are clearly digital engineers, if they want they could write out their circuits with diagrams, though most use code, because it's more compact, easy to modify, and is easier to operationalize with version control and testing. The only thing different from software is the depth of our abstractions, and the scope of our problems.
A lot of said complexity is ultimately because we haven't embraced software as an engineering discipline but as rules lawyering. We've lost sight of actual engineering goals like cost and size, and ventured far into the world of marketing, rushing to implement every feature instead of building a sound system first, causing immeasurable economic harm in product defects, engineer burn-out, and missed opportunity.
A lot of said complexity is ultimately because we haven't embraced software as an engineering discipline but as rules lawyering. We've lost sight of actual engineering goals like cost and size, and ventured far into the world of marketing, rushing to implement every feature instead of building a sound system first, causing immeasurable economic harm in product defects, engineer burn-out, and missed opportunity.