Are you a software engineer, or a mere programmer?
When I was doing my Masters in Computer Science, we had a course called “Programming Languages”. One of the first topics dealt with in this course was the various types of Grammars in programming.
It speaks of Chomsky’s classifications of grammars: Unrestricted, Context-Sensitive, Context-free and Regular!
At first, it made little sense… While we knew languages in general have everything to do with grammars, where does grammar apply in programming? From all we knew, language is an ‘arts’ subject. It is for the ‘creatives’; belongs with the ‘right-brained’… while we were a bunch of ‘left-brained’ engineers that believed in ‘Math’, more-so than ‘Art’! And honestly, we just wanted to learn C, C++, Java, Prologue… We felt the theory that was being forced on us was worthless!
It was not until the first class was through, that we started to see how this foundational knowledge was essential to become good software engineers.
We were fortunate to have had a great professor, Dr. Langan, who helped open our vision to the convergence of logic and creativity… math and art… left and right brains… language and programming!
His course made us realize how the best engineers are those that work with creativity… How language is a corollary of grammar, which is at its core is highly mathematical. We understood what being an Engineer meant… That Engineering is about working on the constructs, on semantics, on whats and what-nots… at levels way deeper than the superficial requirements that are provided by those that see what they want with little understanding of how to accomplish it in the most efficient manner!
Programming is about coding to requirements. The thought process there is not as deep… It is about what’s in scope and by when it needs to be done… that is about it!
The theory behind programming, the knowledge of grammars, the thought process that goes into improving the quality of life of the users of that software system is the job on an engineer. A programmer codes to the specifications laid out by the software engineer.
Programmer to Software is what an electrician is to Electrical Engineering or a lathe operator is to Mechanical Engineering!
Learning a programming language can make you a programmer… You do not need an engineering degree to program. Pick up a book or watch a few videos on You Tube and you can start programming. Engineering is a whole different ball game! Engineers think and code! Programmers code! An Engineering degree does not guarantee that you can think, but the knowledge of Software Engineering, for sure, makes you a strong thinker… a strong Engineer.
Programming is a part of Engineering. Engineering is bigger!
The problem with most so-called software engineers today is the total lack of understanding of this concept… the result: The title “software engineer” stands debilitated amongst the plethora of pure engineering disciplines.
An experienced software technologist can easily tell the Software Engineers apart from the coders…
Which side of the fence do you want to see yourself?
Be honest to the profession…. Work on becoming a Software Engineer. Do not call yourself one, until you deserve it!