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.
Study at CODE: Bachelor of Arts in Software Engineering
CODE is a newly founded university in Berlin with a revolutionary project-based learning approach. In our admission process, we challenge your ambition and talent. We’re still taking applications for October 2017 until the end of August! Go ahead and apply now.
Teachers are often called upon to answer this question about an academic subject, and computer science instructors may face this demand more frequently than most. Learning to write lines of code can seem, to many students, like a pointless exercise in tedium.
But a few professors of computer science have a compelling reply at the ready. They are participants in the Humanitarian Free and Open Source Software project, known as HFOSS—or, more grandly, Software for Humanity. Why does this matter? these professors might respond. Because it’s helping to feed needy people in Haiti, or to deliver supplies to earthquake survivors in China, or to manage the medical care of malaria victims in Rwanda.
These are all actual real-world humanitarian missions that have benefited from computer programming services provided for free by students engaged in an HFOSS project. Started in 2007 at Trinity College in Hartford, Connecticut, and now operating at a dozen East Coast colleges and universities from Maine to Washington, D.C., the HFOSS project brings together students eager to solve real-world problems with social service agencies desperate for their help.
Get Future Tense in your inbox.
In Haiti, a nonprofit organization called ACDI/VOCA uses an app developed by student coders to track data on recipients of food rations. In China, volunteers assisting the victims of an earthquake were managed via a computerized system programmed by college students. And in Rwanda, doctors employ an electronic medical record system, created in part by U.S. undergraduates, to monitor the spread of malaria, AIDS, and tuberculosis. The HFOSS project has been likened to the well-known charity Habitat for Humanity—except that, instead of building houses for the needy, participants are building computer programs for use in situations where information is the scarcest and most valuable resource.
One of the goals driving the project is to draw a more diverse group of students to computer science—young people, including women and minorities, who might find the prospect of helping people in need around the globe more appealing than learning programming for its own sake. Another aim is to counter misconceptions about what computer programmers actually do. Participants learn that “programming is part of a complex, team-oriented, creative process,” writes Ralph Morelli, a professor of computer science at Trinity, in an article he authored with other colleagues involved in the project. “The HFOSS development process has no room for lone programmers working in isolation.”
Students who volunteer their efforts also gain real-world experience that is likely to make them more attractive to employers—experience that is often hard to come by in academic settings. Take the Sahana project, for example. Sahana is a disaster management system used in the wake of earthquakes, tsunamis, mudslides, and other catastrophes to coordinate information about survivors, volunteers, and supplies. HFOSS students write sections of code that update, adapt, and expand on the current system, but in accordance with the standards set out by the students’ “client,” the Sahana Software Foundation. All student-produced code is reviewed by the Sahana team before being incorporated into the system. Documentation must be provided and deadlines met in a large-scale international collaboration, similar to the ones computer science graduates will likely encounter in the workplace.
Students may even forge contacts with industry professionals. Consultants from Accenture, the management consulting and technology services firm, serve as volunteer mentors and advisers to students working on HFOSS projects. (Funding for the HFOSS program comes from a grant from the National Science Foundation.)
But the most unexpected benefit of helping to create Software for Humanity is that it likely improves students’ learning. An emerging body of research demonstrates that students who find meaning and relevance in their studies are more engaged and motivated to master the material. Students must recognize the value of academic work themselves, however—it can’t simply be pointed out by an instructor.
In fact, a teacher’s heavy-handed emphasis on the relevance of students’ coursework can even backfire. Several studies have found, for example, that informing students that the study of mathematics will be important to their futures actually undermines interest in math among students who weren’t very interested in math to start with, or who have doubts about their competence in math.
A more effective approach is to “encourage students to generate their own connections and discover for themselves the relevance of course material to their lives,” writes Chris S. Hulleman, a research associate professor of education at the University of Virginia, in a 2010 article in the Journal of Educational Psychology. Hulleman and his co-authors found that a writing exercise in which students were asked to apply the material they were learning in their math or psychology courses to their own lives increased their interest in those subjects. The effect was strongest among students who had low expectations for their performance in math or psychology, or had performed poorly in these subjects in the past.
Other research reports that even when academic work is boring, providing a pro-social, beyond-the-self-oriented purpose for learning helps students to persist in the face of boredom, and can even help them raise their grades. “When tasks are likely to be experienced as tedious or uninteresting—as many repetitive, foundational, skill-building math and science tasks are in the U.S.—it can be helpful to focus on creating meaning,” writes Angela Duckworth in a paper published in Journal of Personality and Social Psychology earlier this year. (Duckworth, a professor of psychology at the University of Pennsylvania, is most famous for having demonstrated the importance of “grit” to academic success.)
In the case of building Software for Humanity, the relevance and purpose of the work hardly needs pointing out. Students can see how their experience working on real-world programming projects will benefit them when it’s time to apply for jobs in the field. And HFOSS participants are well aware that their efforts are contributing to a cause bigger than themselves. When instructors supply a satisfying answer to students’ pressing question—Why does this matter?—engagement, motivation, and persistence take care of themselves.
This story was produced by the Hechinger Report, a nonprofit, nonpartisan education-news outlet affiliated with Teachers College, Columbia University. Future Tense is a partnership of Slate, New America, and Arizona State University.