I recently visited the Metropolitan Museum’s In Search of True Painting exhibit while in New York. I never expected to walk away with inspiration for discovering my process for software development.

The Wild Beast

Henri Matisse was a French painter working in the early 20th century. He was one of the Fauvists (from the French for “wild beasts”), a group that experimented with the use of bold color as a form of expression. This abstraction opposed impressionism and other established trends that were focused on realistic representation — a new trend at the time.

The Met exhibit demonstrates Matisse’s commitment to refining his process. In particular, The Dream sits among photographs taken by Lydia Delectorskaya, Matisse’s model, lover, and, in this scenario, photographer. Each of the thirteen photographs represents the painting in a different stage.

Photography, with its ability to “register and give us documents”, as Matisse pointed out in 1908, was the ideal medium to preserve “versions” of an image that would otherwise be lost. For the artist and anyone else fortunate enough to see them, these photographs have the capacity to multiply one canvas into a series, thereby adding a dimension of time and process to the final painting.

Directed by Matisse, Delectorskaya photographed each stage of his process of creating The Dream. Below is the result of their time together.

Me and Matisse

I enjoy creating software. For me, it is — in a very modern, functional way — the act of creation. But this is where Matisse and I differ; I create for use, cause, or function, while Matisse creates for expression.

Or, at least that was my assumption. Without jumping off the cliff of determining artistic cause, we listen to Matisse himself.

I work from feeling. I have my conception in my head, and I want to realize it. I can, very often, reconceive it. But I know where I want it to end up. The photos taken in the course of the execution of the work permit me to know if the last conception conforms more to what I am after than the preceding ones, whether I have advanced or regressed.

Maybe, then, the Beast is no different than I. He strives toward a final goal, a product, something “complete.” Matisse describes his process as such:

The progressive development of the artworks through their various respective states toward definitive conclusions and precise signs.

Okay, so Matisse and I have similar goals, though a fantastically different stroke.

Matisse was a master when he spoke about his process. He learned, through his artistic exploration, what kind of artist he was. He endeavored to continue to learn throughout his life, and demonstrated this in acts such as photographing the process of his creation.

A century later, I’m quite different. Being self-taught in my form of creation, I break from process consistently to pursue my definitive conclusion. The lack of awareness of my process demonstrates the immaturity of my skill. As I stood and gazed upon a master’s work, a master of process, a master of the act of creation, I desired to learn.

Learning

Now comes the need to understand how Matisse evolved his paintings to reach their resolution. This will be challenging. Abstract art is — well — abstract. How do I take these 13 photographs and apply that process to my software development?

The answer, unfortunately, is that I can’t — er, well, not directly. The mediums differ so broadly that it requires an extra step to squeeze actionable knowledge out of the old French gentleman’s talents.

Let’s begin, now, with comparisons.

Version Control

Software developers commonly use what’s called “version control.” A popular application for such a cause is called Git (pronounced [ɡít]). Git allows a developer to “commit” his work at various stages of development. Sound familiar? Let’s remember what Matisse said about his “version control.”

The photos taken in the course of the execution of the work permit me to know if the last conception conforms more to what I am after than the preceding ones, whether I have advanced or regressed.

So, we’re on to something. We use version control, as Matisse did, to determine the course of the execution of the work. But, unfortunately, we rarely look back unless a problem arises. Version control, in the software world, solves a functional problem of finding bugs and determining code ownership on teams. But it can also be used to solve an expressive problem.

Now, as I make software, I try to look back at the various versions I’ve created. The goal not just to avoid errors, but to understand “if the last conception conforms more to what I am after than the preceding ones.”

Refactoring

Refactoring is a term used by programmers to describe “rewriting.” It is, technically, changing a program’s internals, while still pursuing the final goal.

A painter refactors in much the same way. The changing of the internals while still keeping in mind the final conclusion. These photos have refactoring all over them. One precise example is between frames 9 and 10 of The Dream.

Based on the difference between these two stages, we can assume that as Matisse developed progressively, he determined a different need for the woman’s crown. Here we can see his final conclusion.

Now, as I develop software, I attempt to refactor in a way that does not purely affect the internals, but also, I ask the question, as Matisse does, “Does this reach the definitive conclusion of my work?” Perhaps that application feature, like the woman’s hair, is better off in a different form or removed completely.

Evolution

Through the process of development, we transform through iteration. This transformation reminds us of evolution. To evolve is to develop from a simple to a more complex form.

While creating The Dream, Matisse evolves the woman. I now strive to evolve my programs, from the initialization of the project to the definitive conclusion. It is simply by being aware of evolution that one begins to control it.

Awareness is achieved from revisiting or watching the transformation. These photographs eloquently represent Matisse’s transformation through iteration, as shown in the deltas across the images.

We’re Not so Different, You and I

You, Matisse, are a master. Not just a master with a brush, but a master of awareness. I endeavor to learn how to apply your skill to my own profession and act of creation. To help with my journey, I substitute words of my own for Matisse’s when describing the use of the photographs:

The progressive development of the [software programs] through their various respective states toward definitive conclusions and precise signs.