I strongly disagree with this level of charity. That's like saying every cyclist is a physicist.
Someone who takes a short programming course might not even have heard the term discrete mathematics, and almost certainly won't be qualified to develop a proof of correctness for an algorithm, i.e. to actually do discrete mathematics in a serious sense.
> most of computer science is viewable as a branch of mathematics
And yet there's a world of difference between a computer scientists and the average software developer.
> Every time you simplify a conditional or work through the performance complexity of an algorithm, you are using math. Just because there are no integrals doesn’t mean we are mathless.
But the absence of doing math surely does make someone (or some line of work) mathless. Most software developers go their whole careers doing no serious math.
> Just because we use a different branch of math doesn’t mean we’re not doing engineering.
Perhaps the argument can be made that engineering doesn't necessarily have to include math, but this isn't the way to make it.
Again, the average developer does not know any mathematical field in any real depth. This is in sharp contrast to, say, aeronautical engineers.
> Whether or not we are engineers is irrelevant to whether or not we are good engineers.
Disagree. If the term engineer has any meaning, it has to indicate some level of competence. The bar has to be set somewhere.
We all agree that changing a car tyre does not qualify someone as any sort of engineer. Is it controversial to suggest that something analogous should hold for software work?
The later Craft vs Engineering section makes far more sense to me.
edit:
> We are separated from engineering by circumstance, not by essence, and we can choose to bridge that gap at will.
I think this is a matter of market forces rather than a community-wide failure.
There's high demand for software developers, including for inexperienced software developers with little formal training. This is, at least in principle, a fine thing (ignoring things like major security issues arising from incompetence). Someone who completes a brief course on programming may be called a software developer, and a professor specialising in critical software systems might be called the same.
It's not like nuclear engineering where there's a formal system of gatekeeping. Provided we don't ignore the spectrum of expertise, I don't see a reason to worry about software work being intellectually disreputable by nature.