Ruby on Rails
Ta-da List


March 24, 13:40

Artifacts as processes and other distinctions

Dave Thomas of the Pragmatic Programmer's have long advocated a break from the logical positivistic view of software development. Along with his partner Andy Hunt, he wrote The Pragmatic Programmer in 2000 that encompassed such metaphysical abstracts as The Broken Window and Don't Repeat Yourself.

But with his latest blog entry Artifacting, he's finally committing his allegiance to the world of phenomenology. Thomas suggests that we look at software development artifacts, such as requirement and design documents, by restating the artifacts as processes, or verbs, instead of results, or nouns. Artifacts, the physical paper product, are an insignificant footnote in comparison to the months of it's creation.

This sees artifacts through a lens of context, perception, and interpretation. They're not describing objective reflections. So, like an entire philosophical movement before him, Thomas seeks to restrict the use of natural scientific notions and define software development as a territory outside it's area of application.

This is an incredibly important distinction with a wash of consequences. It opens up for a critique of the objectifying, energy-centered talk of systems and humans as equal variables in the search for laws. The empirical world of COCOMO and standardized world of ISO certificates and waterfall models as good examples.

Personally, I certainly subscribe to this distinction and welcome it's application by influential programmers and speakers like the pragmatic bunch.

Challenge by Anders on March 24, 15:46

Hehe, using the terms 'logical positivism' and 'phenomenology' is a bit overkill, wouldn't you say so? I don't know, but I somehow doubt that Moore, Carnap or Husserl and Heidegger have anything to do with software development. ;)

Challenge by David on March 24, 16:02

Quite the contrary. After a year's worth of exposure to philosophical thinkers and theories, I'm sadden to see their missing day-to-day influence on other fields. I certainly believe that Husserl, Heidegger, Latour, Ranson, and even Satre has a great deal to offer the world outside of the philosophical circles.

Software development in particular seems to suffer from the missing explicit distinction between logical positivism and phenomenology. We're reinventing, in a much less elegant way, the work of these mentioned great thinkers in many debates.

It's seems like such a waste to debate the pros and cons of software development methodologies, techniques, and directions without knowledge of how all of this is just another iteration of an age-old struggle.

I think Thomas did a good job of extracting an excellent point with a philosophical rooting and applying it to a debate of something as concrete as requirement documents. Software development would greatly benefit from more such reapplication.

(This ties in well with the general systems thinking movement that also offers a broad foundation of techniques for all fields to apply) .

Challenge by Anders on March 24, 16:50

Hmm. I still don't see the connection between these very different philosophical positions in terms of software development - must be my lack of insight into the debates in software development.

If software development discussions really do bog down to basic problems of metaphysics, you are in deep deep trouble. That's why I find it kind of implausible :)

Challenge by David on March 24, 16:57

It's the contrast between the positions that's interesting, of course. And yes, tons of software development issues are very metaphysical in nature. Algorithm performance and other "hard" technical issues excepted. When taking about software development in this regard, it's the managing, the teams, thier products, whether we're building the right stuff or not.

Challenge by Anders on March 24, 17:10

Ok, understood - I do find the parallels between basic predicate, modal and computational logic, mathematics, algorithms etc. evident. These are certainly very closely related to software development and indeed important theories (on foundational levels).

As for logical positivism, I can understand the connection somewhat in terms of their methodological reasoning, and the impact Carnap, Tarski and others had on the philosophy of science.
But I must confess that I am more than surprised to hear that software developers are reading Sein und Zeit and Phénoménologie de la perception. ;)