Dude, Its an Airframe, not a Main Frame!
Gerry Tyra, November 2015
Over the last 30 years, there has been a trend in Computer Science that places a great deal of emphasis on the Internet and its supporting infrastructure. This has lead to a high percentage of CS majors having an intellectual framework that requires significant restructuring before they can work effectively in a Real Time Embedded environment.
First, ignore the Main Frame in the title, it is only a rhyme. Think “server farm.” For the purposes of this paper, the use of Airframe in the title could be replace with car, train, ship, medical device, industrial process, etc.
The objective here is to consider the intersection, or lack thereof, of the critical skills being provided by a CS major and those required by an embedded software engineer.
The Move from Physical Space into Cyber Space:
For a long time, anyone working with computers had to have a pretty good understanding of how the underlying machine worked. When you are coding in assembly language, or lower, you have to know the machine. But, as the machines became more capable, and the tools more abstract, the need for a detailed level of knowledge of the machine waned.
While there had always been a difference in perspective between the “Big Iron” main frame community and the real-time embedded community, during this early era they could still communicate reasonably well.
Then the ARPAnet went commercial. And the rules changed.
The Commercialization of the Internet – The Great Divide:
While the Real-Time community took new technology and tools and did more of the same, just more sophisticated and faster, the Big Iron crowd started to reshape the world. The impact of the expansion of compute power, networking and the levels of abstraction goes well beyond anything that would fit into a series of books, let alone a quick white paper. But, to sum up, things changed in the back room. And to keep up with that change, the curriculum in Computer Science changed as well. After all, the objective of an education is to learn the skill set that you need in the job market you are going into, right? (ignoring the English Lit majors asking if you want fries or not)
But this change came with an emphasis on large numbers of identical computer units running in a farm. They all run pretty much the same software on the same processor architecture. And they all talk over the same standardized networks. The emphasis moved from working on the machine to manipulating abstract constructs in a generic manner. With this emphasis, physics, chemistry and electronics were becoming irrelevant.
The constraints of the real-time environment became foreign.
As an example, I was once asked by two CS majors to take a look at an equation that they had to implement, but didn't understand. As written, it didn't make any sense, so I said that we should run a units analysis to determine if the equation was reasonable. When these two people, who had the job title of Software Engineer, asked, “What's a Unit Analysis?”, I knew we had problems. They didn't have the basic engineering background to work with simple physics. But, just for the record, the person who had given them the equation had mixed pounds force with pounds mass. That is a general No-No, but how much confusion would a unit of slugs have created? There is a reason that I prefer to work in metric units.
The true pain comes when HR starts hiring CS majors to do Embedded Real-Time. The learning curve is steep and painful.
As a side note, as this is being written, General Electric (ie GE) has been running recruiting adds for programers. The guy with a clue has gotten a job with GE. He is going to program trains and equipment and stuff. Everyone around him is clueless and doesn't understand what he is talking about. While overstated, these commercials are a microcosm of what I see in the world around me.
Makers To The Rescue:
For all that I've just written, the pendulum does eventually swing back. While a lot of the “smart money” will continue to be focused on large data operations, the Maker movement (i.e., hobbyist making, and using, sophisticated technology projects) is reinforcing the real world relationship of computer controls with physical instrumentality. We now have young children who not only play on computers, but using those computers to design and control robots, UAVs and 3D printers. This is a training ground that has been lacking for many years.
In days gone by, there was the idea of building a crystal radio, and then over time moving up to HAM radio. Or starting out changing the oil of dad's car, then later, rebuilding it. Up into the 1980, it was feasible to design and build a computer from components. But, as clock rates went up and chip complexity went up even faster, it became impractical to do small scale experimentation in digital electronics. This and several other fields of recreational technical inquiry pretty much died.
For someone wanting to play/learn technology, there were just too many challenges available in the pre-built personal computer arena and over the Internet to justify fighting the entry barriers into building at the component level.
However, with the advent of better, more integrated computer modules, supported by adequate, frequently open source, development tools opened up new possibilities. You don't have to build a circuit board capable of handling GHz clock rates, that can be purchased as a Raspberry Pi or Arduino. Rather the intellectual effort goes into doing something with the computer resource. And it usually isn't something that could be done more easily on the personal computer or a tablet.
This is creating a new generation that is once more looking at what they can do in physical space, not just cyber space.
The dynamic control of a physical system is not just another app for a browser. To assume that the same techniques that work in a browser are appropriate for a real-time embedded system is dancing very near the edge of a cliff. Group think is a very dangerous thing, listen and evaluate carefully when someone says you are going over the cliff. Even when all of your friends say that you're fine.