Anybody can code but what just anybody codes can be crap.
There’s a real problem in my place of work and probably in other places where you have scientists and engineers who haven’t been formally trained in CS and haven’t taken the time or effort to learn about proper techniques but who are writing a lot of code. It’s one thing to whip something up quickly to answer a question, but some of this code becomes pieces of larger things or gets delivered to a customer. And someone has to maintain it, but it’s got memory leaks, isn’t documented, it is unreliable, it’s not secure, and no one knows what all licenses were on the random bits and pieces.* See a brief discussion of this sparked by a post by Deepak Singh.
I attribute some of this to carelessness, but a lot comes from other sciences disrespecting CS.** I remember even as a physics undergrad the hubris – physicists could do anything that engineers or computer scientists could do, just give us a few minutes with an envelope or chalk board to derive the equations! Or the only reason to hire a computer scientist is so you can spend more time with the real science and leave the grunt work to them. Even in these times of “computational thinking,” it’s amazing how this mentality hangs on. Computer scientists going for tenure or promotion or a raise have to explain that their product is software OR that it’s actually harder to get papers accepted in certain conferences than many journals in CS OR that they had to undo a bunch of stuff non-professionals did so didn’t get a chance to write up their work in a memo, technical report, or the holy journal article.
CS did grow out of math, to an extent and programming (a part but not all of CS) is used by every flavor of scientist including social scientists and, more recently, a lot of humanities scholars. But there is a difference between professional software engineering or even software development and random people (like me) coding.
* FWIW we have addressed this at my place of work within our quality management program and the specific part of that program that deals with software.
** Of course most computer scientists have ZERO respect for information scientists. ZERO. But you get enough of that in my other posts.
(this was supposed to be a much longer post on professionalization, but, sigh, not very prolix. Well, comparatively speaking :) )