I have been in computers since 1978 and audio equipment before that. I have played dumb countless times and let some clown pretending to be intelligent pretend to explain something to me. If I didn't understand it already I would have been more confused from listening to the crap. In 4 years at IBM I never ran across the term von Neumann machine a single time.
I've been in computers since 1967. Computer programmers are
not scientists! They've taken to calling themselves "engineers," but they're not even that--at least not in most U.S. IT shops. Software development is a cross between a medieval guild craft and a black art reminiscent of the stone age. Engineering has measurement, repeatable processes, quality assurance and continuous improvement. Only organizations implementing something like the CMM(I) come even close to that model. Plumbers are true engineers but they are too humble to call themselves that--and no plumber would be so deceitful and unprofessional as to deliver a product like Windows, much less charge money for it. You'd have to slam the door and run from the room clutching a plunger every time you flushed your toilet--which come to think of it isn't a bad metaphor for a day with Windows.
As for "computer science" as it's taught in universities and practiced in laboratories, I suppose if we accept sociology as a science we have to accept this one because it comes closer to qualifying. But I think we're debasing the word. "Computer science" to this old denizen of Caltech looks more like a couple of different kinds of engineering with a generous helping of mathematics.
Forty years ago quite a few computer programmers at least knew that these are Von Neumann Machines and many of them could talk intelligently about Turing and Babbage. But those were the days when the "aptitude test" for the job was basically an IQ test with a cutoff around 130, and Mensa was indeed full of programmers. As in Mensa, we were not selected for communication or other social skills, and here I distance myself from the pack because most of my peers couldn't carry on a conversation with a layman. I eventually gravitated toward training, management and consulting because I can.
Today the field is different. Higher-generation programming languages do not require the cognitive skills of an astronomer or a nuclear physicist to write code that can be made to work more or less correctly, and software developers are expected to communicate with their end users to increase the chances of delivering a product vaguely resembling what they said they wanted--if not what they actually wanted. But there's still a sense of elitism. Most computer people don't try to demystify their work for people outside the guild. And IMO it comes down to the guild mentality. Software developers practice the art as it's been handed down by their elders, without any grasp of underlying principles.
I spent about fifteen years teaching software developers and their managers to measure software. There are myriad quotes by famous scientists, engineers and managers assuring you that if you're not measuring what you're doing, you don't really know what you're doing, and you have no hope of ever doing it better. Of the dozens of organizations I mentored through this transition, I can only think of two that didn't stop measuring and revert to their comfortable Stone Age processes within a couple of years after I left.
Hardly anyone practices requirements inspection. Is there a programmer alive who won't happily render two conflicting requirements into code and then claim that it works? As for defect prevention, Grungeware Inc. considers the world its beta test site.
Would you set foot on a bridge that was built to the standards of the typical U.S. software "engineering" project? And they want to call this "science"?