Software teams are like Executive Teams

In any large enough company, there are front-line workers, management, and executives. Executives set direction, management sets up the situation for the workers, and workers do the labor. Workers do the company business every day, providing capabilities to external or internal customers. Management gets them the tools and training they need, for today and for …

Read moreSoftware teams are like Executive Teams

Increasing potential as a specific output of flow

In Projects to Products, Mik Kersten divides flow items in software products in four: features, defects, risks, and debt. If you only count features added and bugs fixed – changes visible externally – then you neglect the other outcome of our work: the next version of the team+software. I prefer to think of “technical debt” …

Read moreIncreasing potential as a specific output of flow

Every action has two results (Erlang edition)

Every action has two results: a set of side effects on the world, and the next version of ourselves. I learned this from Erlang, a purely functional yet stateful programming language. Erlang uses actor-based concurrency. The language is fully immutable, yet the programs are not: every time an actor receives a message, it can send …

Read moreEvery action has two results (Erlang edition)

Principles of Collaborative Automation

(this is a transcription of the talk by the same name. Here is a video.) Collaboration is crucial in software teams – and not only among people. We need our software, our tools, and our automations to collaborate as well. But what does that mean? I have four prerequisites for you here, and then four precautions …

Read morePrinciples of Collaborative Automation