How can we take the ideas of literate programming, extreme programming and literate wiki to their maximum possibility? We consider the thought experiment.
As we write in an __extreme literate programming__ environment, we are not simply in the world of code, we are also writing prose and working with media. Just as importantly we are no longer isolated authors, rather we are engaged in a wiki-like process of collaborative writing. Extreme literate programming is therefore social.
# Why
Why should we consider extreme literate coding? After all the more we have to type, the more chances to make a mistake. And as we know programmers hate typing - there is a great quote here from the land of lisp / perl I can't quite track down.
The other motivation for this work is the understanding that in a time of democratic governance, a modern language of power needs to be literate.
It is not enough to rely on an elite to create the code that runs our society, we all need to be able to read it, write it and help improve the design. A literate and performative code is the fabric on top of which a modern society is able to realise itself.
# Huddle
Whereas in pair programming we concentrate on the situated act of writing, in extreme literate programming we concentrate more on thoughtful deliberation - that is a slower decentralised, asynchronous conversation between authors. Let's consider instead programming with a group of 5-7 people.
# Incentives
A great deal of good work has been done, with regard to how we programme. Agile is the basis. But rarely has structural consideration been applied to the inter-subjective incentive structures of our collaborations.
The assumption is that good people, bright people seek to share and learn knowledge from each other. Society (that is structure) is nothing but a constraint on such free willed sharing by a good citizen. This constellation fo ideas and values lies firmly within the American and Liberal tradition - leading to our modern conception of markets.
# Mean not agile
Rather than baking in liberal utopian ideals into our software architecture, we look to the darker side of our nature for inspiration. Not simply the implicit selfishness of the liberal pattern, but the desire to control and dominate - that is dominate the other, the external, your neighbour.
Let us look how far we get when we combine fact of generosity and the desire to share, with the drive to win, dominate and subjugate. As the song says:
YOUTUBE yoN6XfyQsr4 Dan le sac VS Scroobius pip - Thou Shalt always Kill" (12 Mar 2007).
That is let us design in mechanisms which understand that there will be explicit, motivated and incentivised attacks on our sharing infrastructure and knowledge architecture. Last time we called this attack advertising. It was never considered as a design input when creating the architecture of the early internet - see Serving our Servers
# Literate
Lastly we should not shirk on literacy. Given the demands of communication between a larger group ( a huddle), given the slower asynchronous nature of the communication, and given the more political and philosophical nature of the programming work required as we design our social algorithms - literacy is key.
We expect, video, audio and documentary. We require visualisations of our arguments, models and simulations of the processes our algorithms shape and effect, and richer forms of interactive media designed to support and inform our decision making.
# Performative science
Common law algorithm design requires a set of diverse literate domain specific languages for different cultures, and different knowledge domains - that is if we expect any form of democratically informed supervision of our social (techno-legal) environment.
This combination of practice that we could term extreme literate programming, may be demanding, but it is essential if we are to have any hope that society can keep track of technological change and maintain an informed polity. We need to develop the tools and language of a performative science.
# See also