This is a classic reflection on the essence of software design in teams, from one of the greats of programming. Peter Naur is the 'N' in BNF notation. In this paper Naur presents the idea that software is rarely finished, instead it evolves as its authors' understanding of the program and the problem changes. Software's essential structure, or architecture, undergoes constant revision and evolves according to the theories and ideas held by its authors. Furthermore, the community of people involved in a design 'own' that design and carry it forward in a way that a new group with no prior knowledge of the code could not. The capability to evolve a design inheres with the people who created it as the code manifests their ideas, working assumptions, and 'theories' of the situation.
Naur, P. (1985) Programming as theory building. Microprocessing and microprogramming 15, 253-261.