Similarity between Design Patterns and Mental Models
I think the concept of Design Patterns
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design.
from Software Engineering seems to be an instantiation of Mental Models in software world, particularly bearing resemblance to the following definitions, in that they all prescribe ways to look at relationships between entities which allow for solutions, explanations, predictions.
Differences between Design Patterns and Mental Models
As someone who have been a tutor and a student, I observe a phenomenon where Design Patterns are very difficult to teach to people who haven’t had professional software development experience. My conjecture is that Design Patterns abstract away contexts that gave rise to them in the first place, which is probably a result of the need to formalize them in order to communicate meaningfully with fellow engineers.
In contrast, mental models have been intuitive for me, and some models I explained to my friends were well-received. This difference in comprehensibility may come from the fact that mental models model relationships in the real world, and design patterns model relationships in the software world.
An idea: Can we formalize Mental Models the way we formalized Design Patterns ?
Design patterns usually contain the following information source
- Name that describes the pattern
- Problem to be solved by the pattern
- Context, or settings, in which the problem occurs
- Forces that could influence the problem or its solution
- Solution proposed to the problem
- Context for the solution
- Rationale behind the solution (examples and stories of past successes or failures often go here)
It seems that these information may be used to describe Mental Models.