Writing software has been compared to many other professions such as science, engineering, architecture, craft and art. However, while these analogies can be useful, nearly all of them assume that the goal is a finished product. One that might require the odd bit of maintenance and occasional bit of redecoration perhaps, but fundamentally, a more or less static, completed artefact.
Today's networked software ecosystems are complex, dynamic environments. Security updates, changing cloud APIs, new web technologies and mobile operating systems, all contribute to a ever-evolving context that developers have to contend with while creating apps and services. We need a fresh analogy to draw inspiration from.
In this session I propose that writing software should be treated more like gardening and look at the ways this analogy can help when thinking—and perhaps more importantly, talking—about the design, development and maintenance of today's systems.