Concepts are our primary tool in systems design. Everything running in production represents our concepts—the ideas we prioritized, communicated, structured, and adapted with others, then crafted into code. Concepts also structure the way we think about the technology systems we encounter or inherit. If we want to change what is running in production, we need to first change our concepts, the way we think about what is running in production.
- Diana Montalion, Learning Systems Thinking
Conceptual integrity is the state of a software system in which the ideas (concepts) backing a system are in good relation to each other. “Good relation” here is necessarily dependent on the system and its context—there is rarely a single correct answer.
Concepts in this sense means more than just those ideas in a person’s head (though they are also that). They are those ideas which have been communicated, structured, and implemented in the organization. The mismatch between any individual’s interpretation of the concepts structuring a software system and the rest of the team/organization/system’s interpretation of those same concepts is a key source of friction in the engineering process.
Conceptual integrity is also related to Naur’s Programming as Theory Building—when a team shares the same theory, they are working on and integrating the same set of concepts and operating in a system with high conceptual integrity.
Related Reading
- The Mythical Man-Month, by Fred Brooks, for another treatment of conceptual integrity.
References
Montalion, Diana. Learning Systems Thinking Naur, Peter. Programming as Theory Building