Computer Science Positivism

Note collecting Logical Positivism vibes applied to Computer Science.

Most modern sciences, including computer science, are strongly influenced by the rationalist and positivist belief that the workings of Nature can be completely captured by mathematical models that allow us to perfectly predict and control them. In computer science, for example, software engineering relies on formal methods to prove the correctness of large software systems; the semantic web assumes that human knowledge can be captured unequivocally by XML descriptions; and the goal of artificial intelligence is to reproduce human behavior with algorithms inside a computer.

HCI Remixed: Interaction Is the Future of Computing - Michel Beaudouin-Lafon

  • organizing information, is not the same as learning from it

    Don't encourage organizations to think that storing information is an alternative to being informed by it.

    HCI Remixed: Making Sense of Sense Making - Steve Whittaker

  • making software that forces business procedures seems like a good idea, but is not one - I think it originates in realising that, on the surface, conducting any form of business has its procedures, and computers are great at following, and enforcing, procedures, so why not make all the fields on a huge form required, or force the workers into complex task tracking systems, etc... - in reality work often happens "around" these systems
  • trying to create a single ontology with a tree-like structure that would encompass everything - where reality is often nebulous, and some ontologies make sense only some time; this often leads to huge complex naming, unclear meanings, and overall making things more complex than simpler
  • focusing on sequential workflows (writing the novel from start to finish line by line, composing musical score from left to right, etc.), where in reality Creative Work is Often Nonlinear
  • software design that decides that you ever only look at one document at a time, that notes always go on the right in a little pane, etc. - forcing the workflow on the users (anti-malleability)
  • overall a very good example of how Fixating on Solution Aesthetics can Lead to Solving Wrong Problems

Unfortunately all of [the] additional characteristics of real bureaucracies, and the corresponding demands they place on bureaucrats, are not supported by current computer systems, precisely because computer systems were created using the standard mythology of system design.

In particular, computer systems require their users to map particularities into regularities, and only then can the systems proceed entirely based on the regularities. The systems never deal with the particularities themselves or with the process of accommodation. This has unfortunate consequences:

  • Particularities cannot be accommodated by the systems or discussed within them.
  • New regularities and difficulties with old ones cannot even be noticed by the systems, since these arise in the process of mapping particularities into regularities.
  • Changes are very difficult, slow, and expensive since the system will not notice or accommodate to problems, so all the implications of new regularities must be anticipated by the system designer.
  • Most profoundly, computer systems don't share the mission of the organization; all they have is their explicit regularities. The burden of adapting as necessary to carry out the mission falls entirely on users of the systems.

— A Better Mythology for System Design - Jed Harris, Austin Henderson

Another example, with more fruitful system design implications, comes from Fikes and Henderson's discussion of the work in an order center for copier supplies. At one point a clerk, attempting to get a "ship to" address for an order, was told that the copier was on an ocean-going barge which called at several different ports, and therefore the address depended on the date the supplies would arrive. Not surprisingly, there was no pre-defined way to fill in the "ship to" field with an address that would produce the correct results. The clerk invented an ingenious solution on the spot. Instead of a valid address (from the system's perspective), the clerk entered a phone number, and instructions to "Call Bob". This solution highlights several troubling issues, but it also suggests an approach to supporting accommodation. This solution depended on two things. First, the "ship to" field was flexible enough to accept what was clearly not a valid address. Second, the field ended up being interpreted by a human being on the shipping dock, who could understand the instructions. If the supply center had been using a "sophisticated" computer system, this accommodation would probably have failed for two reasons. First, the clerk probably would not have been allowed to put the order into the system with a "Ship To" field that the system thought was invalid. Second, the field would probably have been used to automatically generate a shipping label, quite possibly with bar-coded routing information, and no human would have had an opportunity to notice and interpret the instructions.

— A Better Mythology for System Design - Jed Harris, Austin Henderson

Sketchiness of tools. Importantly, this is not a matter of leaving hand-drawn marks, though having them helps. This point is more about working with half-formed ideas, and a big part of it is that the Fidelity of The Tool Should be Proportional to The Maturity of The Idea. Basically, computers are great at enforcing rules (Computer Science Positivism), but tools in the earliest stages of thinking, should provide the exact opposite freedom to poke at the problem from multiple ends, freedom to leave unfinished pieces lying around in your Peripheral Vision, freedom to be messy.

  • writing programs (and other creative works) don't happen linearly, so the software should support that, instead of forcing the users to think like computers by forcing to write everything top-down in a rigid structure (Computer Science Positivism)
    • block-based End-User Programming systems often feel this way, they often remove possibility for any syntax errors, by imposing strict rigidity on how the program is created
    • form-filling is often problematic - it's often impossible to come back to a complex form after a couple of days, if there's a wizard you often can't skip to the next page to see the questions there, and then come back to fill something up earlier, etc.