Ada-2012 separates engineers from poets

The way software developers think can be described in one of two categories: engineer or non-engineer. The category an individual developer adopts is not necessarily determined by education but rather DNA--we become who we are.

It's reasonable to assume that an engineer is someone who pursued that field of study to specialize in electronics, mechanics, chemistry, or other applied science. However, it could also be a scientist who majored in mathematics, physics, computing, and so on. The engineering mind-set is also found among people who for example developed a passion for programming and made the transition from backgrounds as diverse as medicine and accounting. In any case, the vast majority of individuals employed as software developers do not hold degrees in software engineering or computer science.

For lack of a better word, and with apologies to Lord Byron, the father of Ada Lovelace, I shall define a "poet" as a non-engineer who develops software for a living. That being the case, what distinguishes an engineer from a poet in the context of software development? Certainly in the analysis and design phases, engineers are more pragmatic and have the knack for factoring complex problems into essential parts. Poets on the other hand will debate endlessly if the glass is half-empty or half-full. The engineer would simply dismiss this argument by stating that the glass too big. Meanwhile, in the implementation phase the following comparisons come to mind: Specific vs. general, clean vs. messy, simple vs. complex, and reliable vs. unreliable.

Most poets have never even heard of Ada much less written an Ada program, but those who have didn't like the experience. For them the language is too rigorous, assumes too much control and stifles the freedom to be creative. Furthermore, Ada refuses to make assumptions, wants to know every detail about every program entity, constantly points out existing or potential programming errors and insists these be corrected before even considering building an executable. By comparison, engineers are delighted to work with Ada because it allows them to write better software faster and avoid the task of debugging.

If a manager of an IT department wants to separate the engineers from the poets the simplest way is to provide each developer with the option of using either Ada or Java / C++. All things being equal (job security, career advancement, etc.) the engineers will choose Ada.