“A map is not the territory it represents, but, if correct, it has a similar structure to the territory, which accounts for its usefulness…” A. Korzybski, Science & Sanity, 4th Ed. 1958, pp. 58-60 (quoted from: R Bandler & J Grinder, Patterns of the hypnotic Techniques of Milton H. Erickson, M.D. Vol 1, 1975, pp 181)
Human beings model the world. We learn by constructing models and then subjecting those models to tests in order to determine their validity. Human beings do this all the time. By the time a human reaches adulthood it has constructed so many models that the person is probably unaware of all those models, and may even be unaware of the modelling process.
When we are faced with something new which we don’t understand, a new fangled tap in the washroom for example, we will use the models that we have already developed which are similar to that situation; all our tap models. If they fail to make the tap work then we will use other models associated with the washroom. Having encountered hand driers with proximity sensors we may wave our hands around to get the tap working. If we have been on a train or a plane then we may have encountered taps that work through foot pedals and we would start to look for those. We have models for turning things on outside the washroom using buttons or levers and we would start using those.
We use models and strategies all the time. We are experts at constructing models and strategies to apply to those models. We interact with the world through those models.
The software development process constructs software that works more often than it fails. This is in spite of us not doing what we are told is best practise, or even what we believe we should do; we don’t spend enough time on requirements, we don’t stabilise requirements, we don’t design, we don’t unit test, we don’t document, we don’t review. We often get away with it because modelling is a natural talent and software development is a process of modelling.
Unfortunately we also learn from experience, and if our experience of success includes not doing all these best practise processes then that leads us to not do these processes again.
We have to understand what we do and what each step is for, in order to ascertain if we can miss them out in the situation we are in.
Modelling explicitly, and understanding our models, allows us to be pragmatic.