The programmer as government
This post compares the norm-setting behavior of many governments to how programmers make assumptions about schemas and user behavior.
Currently, I have been reading Seeing Like a State by James C. Scott, a book that describes the history of how government has shaped society.
Scott’s general thesis is that human societies under one government have had wildly varying cultural practices regarding personal surnames, agricultural land use, forestry, and urban planning.
The government then attempts to standardize all of those cultural practices–at first for the purpose of efficient taxation, easy conscription of soldiers, and other classic desires of governments.
I find the book fascinating because the governments are behaving as computer programmers defining a schema, with the exception that the government can enforce the schema with literal military and police force.
By roughly the fourth century B.C. (although the exact timing and comprehensiveness are in dispute), the Qin dynasty had apparently begun imposing surnames on much of its population and enumerating them for the purposes of taxes, forced labor, and conscription. (p. 65)
This reminds me of how programmers will often make implicit assumptions about their users’ names, with the software’s schema acting as an enforcer. Patrick McKenzie, in his famous blog post Falsehoods Programmers Believe About Names, describes the various mistakes that programmers make when dealing with human names.
He lists forty assumptions, but the first seven are particularly relevant to the states described in Scott’s book.
- People have exactly one canonical full name.
- People have exactly one full name which they go by.
- People have, at this point in time, exactly one canonical full name.
- People have, at this point in time, one full name which they go by.
- People have exactly N names, for any value of N.
- People’s names fit within a certain defined amount of space.
- People’s names do not change.
All this is surprising to me, but maybe it shouldn’t be. Scott notices as much that capitalism (including engineers and designers of all stripes) is another state-like enforcer of schema.
…large-scale capitalism is just as much an agency of homogenization, uniformity, grids, and heroic simplification as the state is, with the difference being that, for capitalists, simplification must pay. (p. 7)
The comparison reminds me of the following obvious truths:
- The schema will never be sufficiently complicated enough to match reality.
- Programmers have to use their ability to simplify with responsibility, as simplification can happen in ways that are bad for society.