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 an academic, open-source developer and a book author. He is a lecturer at University of Kent and is interested in making programming easier and data science more accessible. He also studies history of programming and writes about it from a philosophical perspective. Tomas wrote a popular F# book “Real-World Functional Programming”, helped to create a number of F# open-source libraries such as F# Data and created coeffects, a theory of context aware programming languages. His most recent work includes programming tools for data journalism, but also three essays that understand programming concepts such as types, monads and errors from philosophical perspective.