A computer language is not just a way of getting a computer to perform operations. A computer language is a transport for expressing ideas about methodology. A program must be written for humans to read and for machines to execute. Thus a Software Engineer is not somebody that just knows syntax of a particular programming language constructs, or clever algorithms for computing particular functions efficiently, nor is it mathematical analysis of algorithms. No it is the techniques used to control the intellectual complexity of large software systems.
Computer Science is not a science that just deals with computers. Computer Science is the revolution in the way we think and in the way that we express what we think. We express this in a Procedural Epistemology - we study the structure of knowledge from a imperative point of view, as opposed to a more declarative point of view taken by mathematical subjects.
If Mathematics was to provide a framework for dealing with the notions of “what is” we deal with the framework for dealing precisely with “how to”.
Our world is much like a fantasy world, where magic exists (Hence why most of us probably have played some Pen and Paper Role Playing Game or Online Game) in our magical world we have the idea something that is intangible and cannot be seen or touched or composed of matter. However it is very real and can perform intellectual work or answer questions. This magic we weave affects the world by disbursing money at a bank or controlling the robot arms in a factory. I
In this magical world we have our apprentices and novice programmers who must learn to understand and to anticipate the consequences of their conjuring. Even slight mistakes which we call bugs or glitches can have complex and unanticipated consequences. A small bug in a computer aided design program could lead to a catastrophic collapse of an airplane or a dam or the self-destruction of an industrial robot. I personally label people in this category as Software Engineers.
The Masters who can express their minds into complex organized programs in which they are sure the resulting processes will perform the tasks they intend. This abstract way of thinking give them the ability to visualize the entire system in their minds in advanced. Much like an artist will visualize what the picture or sculpture will look like from just a block of wood or blank piece of paper. When problems do arise they can debug their programs. Well-designed computational systems, like well-designed automobiles or nuclear reactors, are designed in a modular manner, so that parts can be constructed, replaced, and debugged separately. I label these people as Chief Architects.
Does our industry have people that dabble in the magic’s of our world? Of Course! There is much clutter in our industry by people that claim they are great programmers. But alas, they talk the talk but it is quickly abundant to those that are truly Software Engineers and Chief Architects that they merely dabble in the arts and cannot walk the walk.
My private college was such a school that taught you the how’s but not so much the whys, for me to complete my education I am now enrolled in the online courses at MIT to complete my understanding of this world.