visit
This classic article from 1985 anticipated many of the concepts that are in common use in the industry today. There are other interesting inspirational ideas from the paper that we have not yet taken advantage of.
The theory is built by observing reality as in scientific procedure. The individuals jointly assemble the emergent knowledge of said observations. In this knowledge the whole is greater than the sum of the parts as Aristotle correctly predicted.
The programming phase corresponds to the implementation stage of said theory in a machine.This idea is partially contradicted by techniques such as where knowledge training is encouraged while the solution is implemented.Therefore, the loss of any of its members, fragments the collectively generated knowledge.
Photo by
on
1 Individuals and interactions over processes and tools
This corresponds to Naur's ideas about the importance of people who are shaping knowledge.
2 Working software over comprehensive documentation
As we saw earlier, the documentation is irrelevant and is not a good starting point for further software development.
3 Customer collaboration over contract negotiation
Communication to build the theory between the people developing the software, and the domain experts, is essential for that theory to correspond to a useful solution. As a corollary, only formal communication between the parties is counterproductive.
4 Responding to change over following a plan
The theory developed is a process that does not have an initial plan or an end goal. It is an incremental spiral where theory adjusts to needs as it learns from the real world.
To build theory in an exploratory way, prototyping languages are much more useful tools than classification languages.
Naur believes that there is no single scientific method but that there is a multiplicity of them. In accordance with ideas.This theory is understood as the knowledge a person must have in order not only to do things intelligently and well according to certain criteria, but also to be able to explain, answer questions, argue or justify the activity of concern.
Software is the product of these ideas.
Before a a similar theory can be reconstructed from the artifacts. This theory will be incomplete and different with respect to that elaborated by the original authors.
The asset of a software company is not the lines of source code with intellectual property that only reflect explicit knowledge. The people who develop that theory and build that software possess irreplaceable, and therefore valuable, implicit knowledge.The theory builders are based on a certain paradigm, as established by . The paper mentions that, to know Newton's theory, it is not enough to read only the physical formulas.
The person having the theory must have an understanding of the manner in which the central laws apply to certain aspects of reality, so as to be able to recognize and apply the theory to other similar aspects. A person having Newton’s theory of mechanics must thus understand how it applies to the motions of pendulums and the planets, and must be able to recognize similar phenomena in the world, so as to be able to employ the mathematically expressed rules of the theory properly.
The difficulty of accommodating such observations in a production view of programming suggests that this view is misleading. The theory building view is presented as an alternative.Building adequate and self-defense models is not easy. It requires a long process of mastery learning. Its fruits allow us to mitigate risks and to be able to maintain the existing software.
It is not the same to write an algorithm in a declarative language than in a low-level one.
Nor will we be able to express good business models in non-declarative languages like C or GoLang.
In the same way that we should not describe chemical or physical equations in natural language, we should not express our theory in low-level languages.
The software should not be seen as the text that can be uploaded to a repository but as the theory that supports it .
Photo by
on
Throughout the theory building process, those involved make decisions so that the model corresponds to the bijection to the real world. These decisions are not explicitly documented.
Observing the result without knowing why a design decision was made is another limitation that a theory can explain but the built software cannot.In legacy systems it is common to see individuals act out of habit without wondering what reasons lead them to make decisions.According to Naur, the model should remain solely as theory among the participants. However, if we stay true to bijection and create a model with a MAPPER the model will be only as good as the theory developed in it.
and the others are cornering programmers who write code without understanding the underlying theory. We still have time to avoid it.