Software Engineering versus Programming

Helmut Neukirchen, 24. February 2022

The book “Software Engineering at Google” (curated by Titus Winters, Tom Manshreck and Hyrum Wright, O’Reilly, 2020) is officially available for free online at https://abseil.io/resources/swe-book and I can only recommend reading it to get an idea of how Google delivers high-quality software. Of course, their solutions that fit a company as big as Google do not necessarily fit smaller companies.

As I did already in my post Why you should study Software Engineering cover the difference between Software Engineering and programming, I found it interesting that the above book covers it as well:

We believe it is important to differentiate between the related-but-distinct terms “programming” and “software engineering.” Much of that difference stems from the management of code over time, the impact of time on scale, and decision making in the face of those ideas. Programming is the immediate act of producing code. Software engineering is the set of policies, practices, and tools that are necessary to make that code useful for as long as it needs to be used and allowing collaboration across a team.
(“Software Engineering at Google” curated by Titus Winters, Tom Manshreck and Hyrum Wright, O’Reilly, 2020, p. 23)

For my taste, that quote does not cover enough human aspects (the nice thing about Software Engineering is that it does not only include the hard skills, but also soft skills), but that was in fact discussed already earlier in that book:

Another way to look at software engineering is to consider scale. How many people are involved? What part do they play in the development and maintenance over time? A programming task is often an act of individual creation, but a software engineering task is a team effort. An early attempt to define software engineering produced a good definition for this viewpoint: “The multiperson development of multiversion programs.” (There is some question as to the original attribution of this quote; consensus seems to be that it was originally phrased by Brian Randell or Margaret Hamilton, but it might have been wholly made up by Dave Parnas. The common citation for it is “Software Engineering Techniques: Report of a conference sponsored by the NATO Science Committee,” Rome, Italy, 27–31 Oct. 1969, Brussels, Scientific Affairs Division, NATO.) This suggests the difference between software engineering and programming is one of both time and people. Team collaboration presents new problems, but also provides more potential to produce valuable systems than any single programmer could.
(“Software Engineering at Google” curated by Titus Winters, Tom Manshreck and Hyrum Wright, O’Reilly, 2020, p. 4)

Want to study Computer Science, Software Engineering or Computational Engineering / Nám í tölvunarfræði, Hugbúnaðarverkfræði, Reikniverkfræði

If you want more information on our programmes:

Bachelor (B.Sc.)

Computer Science (Tölvunarfræði) -- we added recently the specialisation in Data Science

Software Engineering (Hugbúnaðarverkfræði)

Master (M.Sc.)

Computer Science (Tölvunarfræði)

Software Engineering (Hugbúnaðarverkfræði)

Computational Engineering (Reikniverkfræði)

Ph.D.

And of course, you can also do a PhD in any of these programmes. Before you apply, contact a professor: either by a personal visit or -- if you are located abroad -- by writing an old school paper letter (professors get hundreds of email with PhD applications where it is obvious that the same email was written to many professors and thus, these email are considered as spam -- but a paper mail makes an impress)!