Truth Does Not Exist (Proofs Neither)
- Mariusz Sieraczkiewicz
- Software development , Scientific methodology
- August 23, 2013
Table of Contents
Since my response to Sławek’s post has grown quite lengthy, I decided to also publish it here. Please read his post first, as my commentary only makes sense in its context.
Personally, I would add the word “context” to the list of overused terms alongside architecture, component, and module ;-) I use it myself, so I admit my bias :)
Referring to the last paragraph: I wouldn’t belittle our industry. It is a natural process, which also accompanies other fields considered more scientific with a longer history. For instance, in medicine, regarding nutrition, there are many topics with varying and often contradictory scientific interpretations. Moreover, there are studies that lead to different conclusions. This happens because the complexity of the problem is so great (and the number of factors influencing it) that a scientific approach will always be reductionist (limited to very narrow contexts).
I personally believe that seeking scientific evidence doesn’t make much sense. From this perspective, our profession is closer to psychology and sociology. We mostly use models that are simplifications of reality.
We cannot prove that TDD works or doesn’t work. That is a generalization. Even narrowing the context doesn’t change much because the complexity of the problem remains vast.
What kind of scientific research can be conducted? For example, in a 5-person team where 2 people had one-year experience, 2 people had three-year experience, and 1 person had ten-year experience, which worked on a Java project of 150KLOC for five months using Agile methodologies and TDD, with a doctoral candidate as a client devoting 30% of their time… and so on. The problem is the context—each of these elements (number of people, experience, methodology, code size, language, and at least a dozen others) impacts the outcome.
Would the result of such scientific research be useful? At most, we would learn what the effect was in this specific context. But what if there were 7 people? What if the codebase had 500 KLOC? What if Kanban was used? How many very detailed studies of this type would need to be conducted to make reliable generalizations even regarding context?
Therefore, what remains? Heuristics (strategies). Models.
Regarding the discussion between Coplien and Uncle Bob, each of them has an interesting concept to offer. Each is virtually impossible to prove. Thus, various methods of influence remain, which will cause people to become interested, discuss, and try them in practice. And this is where I see the greatest value. Truth does not exist. At most, there is intersubjective truth.
(Text translated and moved from original old blog automatically by AI. May contain inaccuracies.)