Ikebana Of Software

Ikebana roughly translates to "arranging” or “giving life to flowers." When we cut a flower, we intentionally choose to capture a moment in time, knowing full well the trade-off in the flower’s lifespan. This cost however great provides the essences of harmony, minimalism, seasonality, symbolism, and ultimately meaning in the arrangement.

My experience building software systems has leveraged the iterative nature and composition of libraries, services, and subsystems. The ephemeral nature of the modern software ecosystem has been difficult to reason about. I have been struggling with the tension between building a system based on composition while accounting for the transience of the current "season" of software. As with ikebana, the epiphany was to think about the necessity of both the impermanence of flower composition and the semi-permanence of the vase.

Impermanence: It’s not a bug, it’s a feature

I remember seeing a Docker demo for the first time at the SF Go Meetup. What struck me was not the ephemeral nature of the containers, but instead the rather permanent capturing of the unique composition of code, libraries, dependencies, and configuration that it provided. A true snapshot of a point in time for "working" software. It seemed like a great approach to packaging custom Linux software. Managing server-side software is as much the set of dependencies, operating system packages and configuration as it is the code. The power of Docker was the ability to encapsulate server-side software into an interface that was then easy to build tooling from. Containers encourage minimal composition and arrangement of software which aligns with Ikebana philosophy.

Harmony: Software Arrangement

Ikebana-inspired software architecture is about creating harmony within the systems in which software is deployed. How do we find harmony in the complexity of modern software systems? It is in the arrangement of data models, storage, and interfaces (APIs). The combination of ephemeral containers, user experiences, and the environment made up of data models, storage, and interfaces that we can find beauty in our modern software systems.

Thank You

Ryan Broughan for discussing Japanese aesthetics and collaboration for this post.