Software Engineer - Titles

Disclaimer

The following piece does not argue that some title, method or skill is better or worse than something else, it is merely my observation and reflection on how the title is used, and how the work is similar to traditional engineering.

Why is this important

While large parts of the population is not directly involved in the software industry there is a growing dependency on the products produced by it and more and more people interact with software engineers. This makes the software engineer title important as a way to communicate a wide range of skills that a person is expected to have for people that don’t have them but need to have software.

It also has an importance for the people in the industry, if the title is overly generic it becomes pointless for recruiting or other needs to communicate what type of education and skills you possess. If there is no similarity in the types of tasks you can work with between two software engineers then the title has less value than if it would.

For a large share of the population software engineers seemingly type on keyboards but the expected output is vastly different from someone typing on the keyboard but having the title translator instead. I might be old and possibly traditional but put this in the perspective of engineering as a science is very old and goes back to knowledge on how to exploit basic mechanical principles to do work, like building a pyramid. More modern examples would be civil engineering and mechanical engineering that sets the expectation of what it means to be an engineer.

Software engineer might be one of the newer additions to the engineering discipline, although in good company with space engineering, and probably others that I’m forgetting about. But it is not only new it is also different in how it is applied, software engineering simply seems to be much more vaguely applied and used than the other. But maybe the software engineer title should be considered to be highly context sensitive and loose instead of trying to look at how other engineering titles are used.

Observations

Engineering in general is considered mostly a science with elements of art, in most engineering disciplines there is a requirement to know about physics and mathematics. While the latter is prevalent in software engineering the former is typically non-existent. And this also applies when we look at traditional education in universities for software engineering programs, but there is also a whole range of education that excludes these skills and focuses on many other equally valuable skills that are not traditionally associated with the term engineering. However they all lead to people being employed as software engineers, I don’t know how common it is for other engineering disciplines to skip the physics and math part and still graduate and work as an engineer within that field, it looks though as software engineering is an outlier from this perspective. There are exceptions of course, some software engineers know more about mathematics than I would even imagine there was to know, after all solving problems with computers is in essence applied mathematics.

A lot of the engineering disciplines deal with things that can not be easily changed or observed once built, hence the need to spend a lot of effort on thinking, modeling and often simulating something before it is actually built. There is less emphasis on this within software engineering, probably for the pragmatic reason that if something breaks it might only take a minute to adjust and repair and get back to a perfectly fine operational status, however if a bridge would break the lives lost and the work needed to rebuild it would be tremendous. There are notable areas where software engineering is similar though, I would hope that control systems for trains follow much more rigorous methods for ensuring correctness.

Although a young sibling in the engineering family there are also trends that make software engineering look more and more like the other. The complexity of building software is growing and software engineers are more and more relying on tools that simulate and analyze their output to ensure it conforms to their expectations. Tools for making sure that software you depend on is updated, that the code you write is secure etc are all things that could perhaps hint that software engineering is maturing into a more traditional view of engineering. There are also trends in the opposite direction where software engineering is noting that it is vastly different from other forms of engineering and is moving away from the traditional engineering approach to rely heavily on up front design and specification of what should be built.

Like other forms of engineering the art aspect is a big part of software engineering as well. There are so many potential solutions to the same problem that different solutions can have different qualities both from objective aspects but clearly also from different subjective aspects. It is not uncommon to hear a software engineer describe a solution as elegant or pleasing, which hints at least to internal recognition of the art element in the discipline.

Engineering being related to science the term software engineering is simply too broadly used to strictly make that connection clear or a requirement. It seems like a reaction to this is the use of the title data scientist which seems to put a much larger emphasis on the formal education in mathematics and creation of algorithms than what’s expected from a software engineer although that work could be argued to be the basic expectation of a software engineer. Apart from the obvious difference in focus between software and data, the former focusing on creating software and the latter on processing data, the difference between engineer and scientist is interesting as it implies a difference in process, where the former would use engineering to reliably achieve the expected results and the latter would use the scientific process to evaluate the results. For someone that works with data to reliably reach expected results the obvious title would be data engineer, which is frequently used. Which leads me to the question, why are there so few software scientists?




Comments

Popular Posts