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

Don't Be Too Quick, Start Thinking!

Don’t Be Too Quick, Start Thinking!

Sometimes I feel like the world has become too fast. Everything happens so quickly that we switch to autopilot and stop thinking about why and for what purpose we are doing a task. Are we doing it in the way we imagined, or the way someone else suggested?

Read More

Technical Leadership Book is Available

Exciting Announcement: Technical Leadership Book Release

It is a great pleasure for me to share the information that today is the premiere of my book “Technical Leadership”.

Read More

Make Room for Progress...

From the collection Poetry for Project Enthusiasts

Make Room for Progress

There is never a good time for the first child,
There is never a good time for the second child,
There is never a good time to build a house,
There is never a good time for renovations,
There is never a good time for a wedding,
There is never a good time to introduce refactoring,
And there is never a good time to start writing unit tests.
In each of these cases, you simply need to make a decision,
Start doing it, and time and resources will appear,
Because they will have to…

Read More