Truth Does Not Exist (Proofs Neither)

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.)

Related Posts

So How’s It with Architecture - Up-Front Design or Evolutionary Architecture?

So How’s It with Architecture - Up-Front Design or Evolutionary Architecture?

Where does architecture currently stand? We can say that there are two classic approaches:

Read More

Self-Organization - A Myth?

The entire Agile community (and not just Agile) loudly discusses organization. I have the impression that for some time, we’ve been trying to find the holy grail that will allow us to answer the question: “How to manage without managing?”. This time, I’ll play the devil’s advocate.

Read More

What Name for This Method?

What Name for This Method?

public class OptionsAwareObject {  
    private Options options;  
      
    public void updateOptions(String fontName, int fontSize) {  
       options.setFontName(fontName);  
       options.setFontSize(fontSize);  
    }  
}  
   
class Options {  
    private int foregroundColor;  
    private int backgroundColor;  
    private String fontName;  
    private int fontSize;  
    // ...
}

Is updateOptions a good name for this method? Of course not! updateOptions is a general name that suggests a comprehensive update of options. Meanwhile, we are only updating font-related information. The responsibility of the method is thus the change of font-related options. A better name would be:

Read More