What we Expect from Software Engineers in the Industry
Dr. Jürgen Uhl
Principal, Object Technology Practice
IBM Informationssysteme GmbH
Abstract
Expectations, or better, requirements on software engineers depend on the category of project in which they work. In many application development or system integration projects, which today probably employ the majority of the software engineering community, requirements as expressed by project managers are mostly concrete and short term, like skills in development environments, a particular methodology, database systems, or specific application components. With todayís rapid change in these systems, all we can expect from the basic education of software engineers is that it gives them the ability to quickly adopt to such new environments.
Looking closer, it is not really the skills for a particular tool or component which makes a project successful but rather the knowledge of common software engineering principles. Unfortunately, neither industry nor academia have developed and agreed on such principles to the degree achieved by other engineering disciplines. Therefore, teaching is often limited to a meta level like "what makes a software engineering methodology" and thatís probably what we need to put more focus on in education.
On the other hand, there are a couple of aspects that software engineering education should pay more attention to. First there is the aspect of (re-)using rather than building. Masters curricula in computer science still seem to teach a lot more of "how do I build a compiler, database system, transaction monitor, networking system, ...?" rather than "how do I use all these systems to build applications?" or "how do I build application frameworks" rather than "how do I (re-)use application frameworks to assemble applications?". The latter often have a lot more to do with organization and economics which is another underdeveloped aspect in software engineering education. Second, there is the issue of scale which in fact is hard to teach theoretically. Software engineers need to get a feeling for what huge transaction rates, huge databases, huge projects or huge reliability requirements mean, what specific problems occur in addition to the smaller scale and which measures are needed to keep the efforts at least linear.
The presentation will sketch typical industry scenarios from software engineering in commercial application development, research and development labs and outline the expectations on software engineers in these domains.