Never Prescribe Understanding: Pre-WWDC AR/DynamicLand Thoughts

In Ursula Franklin’s Massey Lectures, later published as The Real World of Technology, she draws an important distinction between two kinds of technological practices I find applicable in so many contexts–

“Using holistic technologies does not mean that people do not work together, but the way in which they work together leaves the individual worker in control of a particular process of creating or doing something.[..]

The opposite is specialization by process; this I call prescriptive technology. It is based on a quite different division of labour. Here, the making or doing of something is broken down into clearly identifiable steps. Each step is carried out by a separate worker, or group of workers, who need to be familiar only with the skills of performing that one step."

I was once the tech lead on a project in which we had more developers than I felt we needed, and I didn’t know how to structure the work so that everyone could have a piece other than by creating a massive UML diagram that described the whole system design & each component’s interface. We split the work up along component boundaries, everyone coding up their components' internals & unit tests in parallel. We finally got to the part where we would integrate the components together, & with minimal issues & to everyone’s amazement it all worked! High fives, celebrations! Possibly the only time in the history of software development this approach succeeded. It only worked well for me once, tho, & I wouldn’t do it again. The process was unsatisfactory, even though we shipped a stable feature on time. For one, nobody got the sense of ownership over their work– it came across as my design, and when someone didn’t understand why something didn’t work during integration they had to ask me to explain their work to them. Even though the intention of the massive diagram was to get everyone on the same page, & this worked to some extent, the compartmentalization of work made it harder for folks to see the big picture. I also had the creeping suspicion that, because we shipped with few errors, there must have been a million other equally valid ways we could have solved the problem, & this probably wasn’t even the simplest version, it was just one that occurred to me & accommodated work parallelization. What I had done was take the practice of software engineering, which is best done holistically, and made it prescriptive.

In Bret Victor’s latest demonstration of communal computing he describes the computational space he’s designing as “compact enough to imagine a world where scientists make their own tools for themselves and aren’t dependent upon vendors.” This is clearly a vote for holistic technologies. What their lab has designed inverts the AR/VR paradigm– computing gets pulled out into the real world instead of the user being pulled into more & more immersive virtual worlds. This inversion supports a more holistic use of technologies. Can its opposite?

I think about my UML diagram whenever I see a food delivery courier or Uber driver. I’m excited for the new AR headset Apple is about to unveil, but I’m reminded that a lot of the industrial AR marketing copy I see shows warehouse employees with headsets strapped on having their work orchestrated for them. I don’t think I would have enjoyed getting a component from that UML diagram delegated to me– the idea of my day being filled with computer-directed instructions fills me with dread. I understand the economic logic behind these work arrangements– it’s “efficient”. Human resources are at full utilization. This commodified work is the result of designing processes along prescriptive lines. To what extent, like my UML diagram, are these arrangments a first draft that happened to work? To what extent could we redesign them along holistic lines?