CriticalRationalismAppliedToSoftwareEngineering

ThoughtStorms Wiki

Context : SoftwareEngineering

A rant against someone trying to apply CriticalRationalism to political arguments in SoftwareEngineering.

The online discussion is gone, but my rant survived.

I think he's basically doing a very bad thing, which is abusing good philosophy to score cheap shots against things he doesn't like.

Sure, the kinds of claims made by XP aren't scientific in a Popperian falsificationist / critical rationalist sense. But it's not because of sloppy thinking by its advocates. The same problem would be equally true of claims for any methodology. The problem is the subject matter. Hacknot thinks he's illustrated how to go from vague generalizations to definite falsifiable claims, but a skilled deconstructionist is going to be able to pull apart every word he uses into a long historical string of vague, near-misses of meaning.

All terms are debatable and need to be drilled down into and refined. Compare "what do you mean by programming?"

But this mania for drilling down and getting precise definitions is self-defeating because by the time you've got a definition which is sufficiently without ambiguity to be falsified, you've actually lost the sort of generality you need to make inferences to other cases. Yep, you show that Dan and John pair programming on a Dell PC was a disaster. And you've succesfully falsified the claim that "dan and john pair programming on a Dell PC ... will create good code" but it has no implications at all for Sue and Louisa using an IBM Thinkpad and KDE 3.0.

The thing about the kind of science where a falsificationist account works is that it deals with universals. So "force = mass * acceleration" is perfect. It really is falsifiable because we can have pretty unambigous definitions of force, and mass and acceleration that work anywhere in the univerese (except maybe inside black holes) .

But software isn't like this. We are obliged to worry about vague concepts like "good", "mainatainable", "easy to use", "beautiful" or even "on time" (which is, in practice, often a negotiable virtue)

We can't hammer these ideas into unambiguously measurable and testable quantities. We can try, but once we have some kind of formal definition, it's likely to be disputed by a large number of people.

So maybe it's better to figure out a way of reasoning using vague, scientifically unfalsifiable concepts. And even using them to make arguments, safe in the knowledge that most people know that they have to make generous interpretations to follow the reasoning.

That's what happens everywhere else in the social world.

Politics : "free markets create economic prosperity." Right! Define "free market" define "prosperity" etc.

Business "we have an innovative product" How innovative? This much? "customers are asking for these improvements" Which customers? All of them or just the ones the CEO has happened to play golf with?

Personal relations "he's my best friend and really supportive" How much is "really"? What do you mean by "support"?

Urbanism : "this city is really happening at the moment.", "the area is going down-hill"

Software is social and subject to the same messiness as these domains. The urbanism comparison is important. The fact that patterns are so big in software now is a very interesting phenomenon. It's basically an admission that the systems we build are too complex and too intertwined with human life for formal mathematical analysis or scientfic investigation. Instead we have to adopt techniques of collecting and documenting heuristics that have survived the Darwinian struggle for acceptence over time.

No Backlinks