3-minute read - by Sander Hofman, October 6, 2017
Software development skills are in demand, as any quick scan of online job boards will confirm. But the people doing the hiring have an important piece of advice: knowing how to code isn’t enough for long-term career success. The developer skill set is changing.
“Software engineering is about abstraction and structure,” says Jan Friso Groote, professor in computer science at the Eindhoven University of Technology (TU/e). “The real problem of software is that it is so immensely complex that if it is not well structured, it becomes unmaintainable.”
As a result, the most important skill of a software developer isn’t writing code and testing it until the bugs are quashed. It is understanding the essence of a problem and building a structured, reliable, extendable and maintainable approach for solving it.
For development teams who have taken this approach to its logical conclusion, it means that software engineers write very little traditional code. They spend most of their time working in abstract modelling languages, specifying the behavior of a system. Formal verification tools allow those teams to be confident that their solution is complete and error-free, and the code itself is then automatically generated.
With such a model-driven engineering (MDE) approach, software developers at ASML recently replaced half a million lines of code that had been built the conventional way.
“When we made this change to our software, it was a challenging period and a lot of energy was needed from our software engineers,” says David van Beek, who leads a group of software engineers at ASML. “We really grew as a group and as a department. We continue to grow now, and we need developers with this energy and drive to ensure we continue to produce a clean and extendable design in the years ahead.”
It’s not surprising that companies like ASML are embracing model-driven software development. ASML makes equipment for computer chip manufacturing. All of the world’s leading makers of processors and Memory chips are using ASML’s lithography machines to create the nanometer-sized electric circuits found on modern chips. These are some of the most sophisticated machines ever built, so the demands for the software that runs them are high.
Rogier Wester, manager of the Lithography Systems Software Architecture group at ASML, says he looks for candidates who demonstrate abstraction skills, who understand the essence of the problem and are still able to create simple solutions. This is because complex solutions do not usually work and even if issues do not crop up immediately, bugs will still appear when customers start to use the product.
This requires developers to think in a very different way. “Think about what will go wrong," Rogier says. "Divide and conquer. Use models for abstraction and conciseness. Use appropriate tools, that allow you to refactor and change with confidence.”
“We need very skilled software designers and, in my honest opinion, we see the challenge for the universities to offer an integral computer science education on software architecture and design, abstract modeling, and formal specification and verification,” Rogier adds.
It is a challenge that Groote, who is teaching a MOOC (massive open online course) on model-based software design using automata, has accepted with gusto.
“Better universities have people that understand the importance of this abstract view and teach about it," he says. "But they simply do not educate enough people with these skills. We need more students to graduate at good universities and get a proper training in abstract model-driven software engineering.”