Today I had a conversation with an aeronautical engineer on the position of the system engineer in different technology sectors.
The aeronautic industry is famous for having solutions using multi-discipline effort, requiring various groups to work in coordination. Each group works with different methodologies and speaks different languages. There is no real way of each group knowing the methodologies and be completely fluent in all technical languages, so some kind of mediator is required in order to help the communication.
The task of helping the groups communicate and understand the major ideas presented by each group is the task of the system engineer. He is also responsible on resolving conflicts and conveying the requirements in a meaningful form to each of the groups.
Since the system engineer’s perspective is very wide, he can mediate between groups and allocate the effort to fit the requirements. The system engineer serves as an aid to the project manager for allocating resources.
Another use of the wide perspective is the knowledge of knowing what is important and using that knowledge to ask the relevant questions to each group. Jeff Atwood refers to this in a film the towering inferno. In his post, the expert is the one who knows what is important to ask.
The post represents the major difference between software development and aeronautic solutions. In software there is little difference in the languages, at least at face value. There is little difference in methodologies and theoretically everyone knows what’s important.
This view is limited as it does not cover complex solutions requiring many components. In such scenarios, the programmer of each component is unaware of other groups, sometimes using different methodologies, like comparing an oracle DBA and .NET programmer. Thus the role of a system engineer is required but less understood and much less acknowledged.
Looking at the different sectors it becomes clearer why the role of the system engineer treated very differently. Unfortunately, most programmers don’t seem to grasp the difference between knowing the intricate details of software and understanding the broad view of a system. This is the difficult task of teaching why software design requires a system engineer.
If you read this far, you should follow me on twitter here.