When NASA lost an expensive Mars orbiter (which burnt out descending too quickly) because a Lockheed Martin engineering deparment mistakenly used English units of measurement while NASA used the metric system for a key spacecraft operation, many of us probably sighed and thought of incorrectly configured software and data once again. According to yet another report (Standish), only 32% of software projects are successful with 24% outright failures.
However with the recent win of ‘Watson’, the IBM supercomputer, which/who beat several highly skilled humans on the show, Jeopardy, we probably wondered at the dizzy heights to which software is heading. Software is indisputably being embedded in every device we use today - whether you are in the civil, mechanical, chemical, electronic or electrical engineering worlds. Although I always develop a nervous twitch when I see a new supposedly remarkable software product being unveiled; developing software is slowly becoming quicker and more reliable than ever in the past
Glamour engineering at long last
Software engineering is without doubt one of the glamour professions today with enormous growth prospects. Even in the recent downturn, the need for competent software engineers continued to climb. There has been strong annual growth in software engineers over a decade of 25% (US Bureau of Stats) with only chemical engineers ahead of them in the salary stakes.
Software engineering is growing fast in a variety of areas ranging from the environment, statistics, health sciences, electrical vehicles and renewable energy.
However, the increasing complexity of systems and software requires an engineer with considerably more talent, experience and learning than ever in the past. Hence the desperate need for more competent graduates in this area.
According to a recent IEEE survey, we don’t want uncommunicative geeks
Inevitably, employers aren't necessarily looking for uncommunicative geeks (with '60W suntans'); but talented engineers who can communicate superbly, problem solve and are analytical in their thinking. And who can work in groups and show leadership. And who are connected to the real world. Organisations don't tend to appoint software engineers off the streets these days but someone with good credentials (often based around a good engineering school and some sort of profile and a strong background in the physical, mathematical or engineering sciences).
Most employers agree on one thing. Demonstrated ability to commence and finish a project successfully within a reasonable budget is one key characteristic a budding software engineer needs to demonstrate. The ability to "cut" or write (a colleagues uses a more derogatory term here) a program is only a small part of the skill of being a good software engineer. Other oft-neglected requirements are being to understand exactly what their customer wants and to be able to deliver a product that matches this requirement.
Help wanted but available with SWEBOK
With all the welter of misinformation surrounding what know-how and expertise is required in the software engineering area, there is help in the relatively recent and well structured (and freely available) massive tome of knowledge embodied in the Software Engineering Body of Knowledge (SWEBOK at http://www.computer.org/portal/web/swebok/htmlformat ), presumably modelled on the successful Project Management Book of Knowledge). This gives an overview toolkit to software engineering with different knowledge areas (KAs) ranging from software requirements, design, construction, testing, maintenance, configuration management, engineering management, engineering process, tools and quality.
So what can you do about this ?
- Review the Software Engineering Book of Knowledge
- Embed software engineering in your career or use it more extensively in your area
- Measure future software engineers working with and for you on being able to communicate well, work in a group and finish a project on time and within budget
- Once again, look at chances to apply software engineering competently to your products to add value.
- Look warily at all your new software projects as to whether they are best practice in software engineering.
- Thanks to John R Platt of the IEEE for a thought provoking article.
Hopefully software wins in the race which Rick Cook refers to here:
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Once again; thanks so much for the ongoing encouragement from all you fine engineering folk (going on 80,000 worldwide now).
Yours in engineering learning