Nevertheless, an engineering discipline would seek to identify all sources of unpredictability and tame them.
Engineering is "the elimination of guesswork". Let's see how some typical activities might be classified under this broad definition.
- Installing a package from Npm and invoking some functions from it: Not Engineering.
- Writing a function definition with a specified contract, a test suite to verify the contract is satisfied, documentation for users of the function, a characterised performance envelope, etc. : Engineering.
- Downloading the source code for a function from Github and verifying that it satisfies the same function contract, passes the same test suite and offers satisfactory performance characteristics: Engineering.
But there's more to it than "just" this. The engineering discipline also encourages adherence to a code of ethics. Such as this one:https://ethics.acm.org/code-of-ethics/software-engineering-c...
This code transcends managerial demands for shortcuts in the name of budget constraints or deadlines. Or it should do; professional engineers who are certified as such know that they can stand their ground and be given the full backup of a national organisation. An organisation which can fight a court case if necessary or blacklist an offending employer and cause other engineers to avoid working there. Whereas even the best software developers will be simply fired for any kind of professional pushback:
https://www.theguardian.com/technology/2020/dec/16/google-ti...