Many fundamental ideas in theoretical computer science will still be true and important in 100 years. The halting problem will be undecidable and appending to the end of a linked list will have O(n) complexity. Finding fundamental ideas about software engineering is much harder. We will have some development methodology, but it will likely differ from Waterfall or Agile. We will likely have modelling tools, but they will not be based on UML, DDD or event sourcing. Are there any fundamental ideas about software engineering, or do we just keep re-inventing different-shaped wheels? I argue that fundamental principles of software engineering are of a different kind than principles in theoretical CS. Rather than alluding to mathematics, we need to critically reflect on the history. I will look at past development methodologies, debates in the field and important milestones such as the 1968 NATO Conference on Software Engineering. I hope to convince you that critical reflection on those is a fundamental kind of knowledge about software engineering that will remain relevant in 100 years and can offer a new way of bringing industry and academia together.
Tomas is a Lecturer at University of Kent and a Collaborating Fellow at the Alan Turing Institute in London. He is building programming tools that integrate with modern data sources (open government data, data published by citizen initiatives) and let users easily create analyses and visualizations that are linked to the original data source, making the analyses more transparent, reproducible, but also easy to adapt. His early work on the project can be found at http://thegamma.net.
Tomas’ many other interests include open-source and functional programming (he is an active contributor to the F# ecosystem), programming language theory (his PhD thesis on “coeffects” develops a theory of context-aware programming language language), but also understanding programming through the perspective of philosophy of science.