
Don’t confuse Computer Science with Software Engineering
One thing we come across quite often when discussing our ideas about modern tech education is the confusion between computer science and software engineering.
Whether we look at studies describing the digital skill shortage in the workforce and the consequences for our economy, at job descriptions from employers in search of ICT professionals or at politicians demanding more and better educational programs aimed at digital competences – in most cases there is no clear definition of the skills profile in question. ICT Professionals, Developers, Programmers, Software Engineers, Computer Scientists – all too often are they used as synonyms.
If Europe needs 825.000 ICT professionals until 2020 , does it mean everybody should study computer science?
Of course not.
Computer science is about taking complex problems and deriving a solution from math, science and computational theory.David Budden in “Degrees Demystified”
Computer Scientists are first and foremost scientists. They possess a deep knowledge of the theoretical foundations in mathematics and information science and can develop complex algorithms and advance scientific research. They operate in a world of rigorous analyses, clearly defined concepts and proven facts.
The digital skills in demand as described by employers, labor market studies and politicians are of a different kind. They involve the ability to interact with human beings and to create easy to use software solutions for real world problems with limited resources in a highly unreliable and dynamically changing environment.
David Budden describes the difference in his analysis as follows:
Where computer science is about taking complex problems and deriving a solution from mathematics, science and computational theory, software engineering is very much focused around designing, developing and documenting beautiful, complete, user-friendly software.
Chuck Connell uses the following analogy in his article “ Software Engineering ≠ Computer Science “:
Imagine a brilliant structural engineer who is the world’s expert on building materials, stress and strain, load distributions, wind shear, earthquake forces, etc. Architects in every country keep this person on their speed-dial for every design and construction project. Would this mythical structural engineer necessarily be good at designing the buildings he or she is analyzing? Not at all. Our structural engineer might be lousy at talking to clients, unable to design spaces that people like to inhabit, dull at imagining solutions to new problems, and boring aesthetically. Structural engineering is useful to physical architects, but is not enough for good design. Successful architecture includes creativity, vision, multi-disciplinary thinking, and humanity.
As does successful software engineering.
Why is this distinction so important?
- Because it helps to choose a study program that fits one’s abilities: Many have what it takes to become a successful software developer but lack the mathematical interest or ability to succeed in computer science. We cannot afford to discourage these young talents from choosing a career in software engineering, especially because – as Sarah Mei lays out in her article “ Programming is not math ”: “Learning to program is more like learning a new language than it is like doing math problems. And the experience of programming today, in industry, is more about language than it is about math.”
- Because it helps to choose a study program that meets expectations: Starting computer science studies to become a software developer is probably going to be disappointing, because Computer Science is more a “degree in applied mathematics” than a “degree where you learn how to code”, as David Budden puts it. The dropout rates in computer science programs (at some German universities as high as 40%) are a depressing monument to this confusion.
- Because it helps politicians and institutions to identify the approaches and instruments that improve tech education and contribute to closing the digital skills gap.
- Because it helps employers to better understand where to look for future employees that support their growth and successfully drive the digital transformation.
- Because it helps us understand how to design a study program that produces graduates with competence profiles that enable them to become successful software developers and that meet the demands of future employers.
Software engineering is very much focused around designing, developing and documenting beautiful, complete, user-friendly software.David Budden in “Degrees Demystified”
We are not trying to diminish the importance of computer science as a discipline or computer scientists as a driving force of digital innovation and advancement in scientific research. But the vast majority of the 800.000 digital professionals missing in the European labor market in the year 2020 do not have the competence profile of a computer science major. They need to be creative problem solvers with communication and soft skills and the ability to utilize scientific innovations to make a difference in real life.
A note about Germany: While the education system in English-speaking countries at least offers the distinction between computer science and software engineering, the German education system almost exclusively talks about “Informatik” (information science) meaning the science of systematic information processing. There are variations like “Angewandte Informatik” (applied information science), “Technische Informatik” (technical information science) or “Medieninformatik” (media information science), but the starting point of any discussion in this field is Informatik. Due to a strong dual education system (combining an apprenticeship in a company with vocational training at a vocational school) the role of German universities was traditionally focussed on scientific education while looking down on the idea of teaching hands-on knowledge and skills with practical relevance with regard to future employers. As a consequence the need for a software engineering study program as alternative to information science is even greater in Germany (as this commentator elaborates ).
In our next post we will take a look at the reaction of the education industry to the existing demand for software engineers: the staggering amount and perceived success of coding bootcamps .