It is interesting to hear about XP and post-modernism in the same place (ExtremeProgrammingResearch). Especially after reading what LarryWall has to say about post-modernism and programming languages. Summing.. Perl is post-modern because there is no one "right" way to do something. Everything is tuned to a particular set of users (http://www.perl.com/pub/1999/03/pm.html). On the other hand, XP has OnceAndOnlyOnce.
Comments?
Interesting.
Well now, one of the roots of PostModernism is CulturalMaterialism?, the "artistic" version of DialecticalMaterialism, i.e. po-mo is MarxismIdeology applied to cultural endeavour: so, there are critics who ask of a text "what would it mean if we stopped the decadent, repressive, bourgeois meaning of the word oppressing the noble, upstanding, radical proletariat meaning of the word."
I didn't make that up. While that might be an amusing parlour game, or a clever Sunday newspaper competition, well, is it really an idea to take seriously?
Also, it is pretty much a po-mo given that there is no "truth" to be discovered about an event, story, painting, sculpture, play, whatever, only the interpretations placed on it by various power structures within society for their own ends.
Now, some have criticised XP as being some sort of "collective" approach to development, and with some sort of dialectic in its process, so I suppose there could be some similarity there: if one cast the traditional "analyst" as the repressive figure enforcing a single bourgeois view of the problem on the labouring proles, whereas XP frees the noble proletariat, sweating at the keyboard, to express their radical notions in never ending, glorious, continuous revolution!!!!!
Of course, while Marx and his collaborators (and don't forget that Engels was the clever one) essayed an insightful description of the problems facing the late 18th century labourer, their extrapolation from that was utterly bankrupt. Much like the countries that tried to apply DialecticalMaterialism to their economies in the following hundred years or so.
Whether or not you spit on post-modernists in the street is of course your own affair.
I think it's a bit simplistic to equate Post-Modernism with Marxism and then tear it down. One po-mo idea to consider is that the meaning behind something is socially constructed. In other words, there either is no intrinsic meaning, or, if there is, we can't objectively know it. What we can know, however, is how we think about the thing in question, and we can explore how our condition informs that viewpoint. This is, I think, right in line with discussions about SoftwareHasNoShape vs. SoftwareHasShape and others. The design of a system is not some intrinsic part of the system itself, but is imposed by the programmers as a way to capture understanding through a SystemMetaphor. TheSourceCodeIsTheDesign, but the design is not so much the system itself, but the system seen through the lens of our understanding. Refactoring is a powerful technique not because we come closer to capturing the true system design, but because we capture a more understandable design from our point of view. Just exactly what is more understandable (and hence a better design) is an ephemeral thing, and will change over time, for example, as new patterns are discovered and become more well-understood. This is why it is sometimes necessary to change the SystemMetaphor, not because the old one was bad, but because the old one isn't better anymore.
How does The design of a system is not some intrinsic part of the system itself square with KentBeck's claim that you need to let the system tell you what needs to be done?
Maybe because if the design was somehow locked mathematically to the system, it would never diverge. If the design is just a guess at the system, then whenever we glimpse the real system diverging from our guess, we can adjust our guess. Just a guess, of course :).
My suspicion is that KB does not mean that the system is actively communicating with you; but, rather, that you should be open to what your subconscious knows about the system, and ready to capture insights from whatever source they appear.
This works quite well with "The design of a system is not some intrinsic part of the system itself". Or were you just being sarcastic? They don't have that on Betelgeuse...
Quoting Kent from SystemsAsLivingThings:
I think the two concepts are quite complimentary. Especially when you also include the concept that the design is the result of the system being viewed through the lens of our understanding. When Kent tells us to listen to what the system is telling us we can take it to mean that we should allow our experience with the system shape our understanding of it and therefore our design for it. -- PhilGoodwin