Software development is…

There is something puzzling about software development. It doesn’t work like many tasks, it doesn’t break down the same way. It feels strangely personal, like there’s a connection between the code and the coder, or else it goes brittle.

Today I learned a word for this!

Ursula Franklin was a physicist, among other things, and she has real thoughts about technology. First, she speaks about technology as practice, not as objects. Technology is how we do things; the material objects that we use are necessary details. Second, she makes some distinctions between kinds of technologies. One of them clears up my puzzle about software development.

Franklin divides technologies into holistic and prescriptive. Holistic technologies put decision-making near the work; prescriptive ones remove control to supervisory levels.

“Holistic technologies are normally associated with the notion of craft.” Potters, cooks, woodworkers — even when the output looks the same for several iterations, the process of getting there includes feeling into this particular material. There is an interaction between the medium and the crafter, a shaping. Each person leaves their mark. When people work together, “the way in which they work together leaves the individual worker in control of a particular process of creating or doing something.”

Prescriptive technologies break production down into well-specified steps that can be executed by separate groups. Assembly lines, Taylorism, standardized procedures. Each step is designed to fit into the others. This determination happens higher in the org chart. The work and the decisions are separated. This technology makes the work controllable, scalable, in theory legible, predictable.

Software itself is the most prescriptive technology ever! It does the same thing over and over in as many copies as we choose.

Software development is wonderfully holistic. It needs one mind understanding it, implementing it, integrating it, operating it. (For resilience, that mind is best embodied by a team of several developers working closely.) When you try to partition the work (gather requirements, design, implement, test, operate), projects fail. The understanding between the steps is too thick. I need all the context of learning what is needed and where, and then I can implement it, and then look at it, and show it to you, and then we get it right and then we run it in production and keep grooming it through change.

“Any tasks that require immediate feedback and adjustment are best done holistically.” Software does need that. We never know what “good” is until we try things.

“Such tasks cannot be planned, coordinated, and controlled the way prescriptive tasks must be.” This is why managing software teams is a different task than managing industrial production. Software managers are support staff, because developers are doing holistic work, so that the software can do incredibly prescriptive work.

This is my new favorite adjective for our work. Software development is holistic.

Discover more from Jessitron

Subscribe now to keep reading and get access to the full archive.

Continue reading