ACCU2016: Talk on Software Architecture Design 2: The Historical Context

[This is the second part of the transcript of my talk at ACCU2016 entitled: “Software Architecture: Living Structure, Art, or Just Hopeful Arrangements of Bytes“]

Another enlightening aspect pertaining to this issue of software design that I find interesting is the history that has led us to the current state of our modern technological society.

If we look back we can see some origins in the Thirty Years War that took place between 1618 and 1648. Some commentators have drawn parallels with the impact of WW1 and WW2 between 1914 and 1945, saying that they could also be seen as a thirty year war. (Cosmopolis by Steven Toulmin) The Thirty Years War of 1618 was a terrible Europe-wide war that resulted in the death of a third of the German population. It was a religious war between Protestants and Catholics, i.e. one religion – two factions – and raised serious concerns about the subjectivity of religious faith and the human condition. It was this that brought the quest for certainty to a head. The underlying question was: How can we be certain of what is happening in the world around us? And in the 1600s, how can we be certain of God’s plan?

It was during this time that René Descartes came to the fore. He produced his “Discourse on Method” in 1637. He was the father of analytical geometry and of course coined the famous phrase “I think, therefore I am”. But this was predicated on the fact that “I doubt”. He concluded that because of our subjectivity, we cannot trust our senses and what they are telling us about the world, so he returned to the point of doubting. Since there was doubt, there must be a being that is doubting. This being, this ‘I’, that is doubting is thinking about this so therefore I am thinking. Since I am thinking I must exist in order to do that thinking.

Because the church was looking for certainty and because Descartes was able to couch this in terms that they could accept, this provided the foundation for the Scientific Revolution, followed by the Industrial Revolution which has led us to where we are now. It is interesting to consider the fact that we are at the end of 300 years or so of work based on Descartes’ philosophical premise: “I doubt, I think, therefore I am”. The aim here was to try and eradicate subjectivity.

I think that it is ironic that, although the aim was to be objective, his Cartesian coordinate system can be considered to be based on the structure of the human being! I stand up, and my head could be considered as the Y axis. I stretch my arms out to the side, there you have the X axis. I walk forward and there you have the Z axis. This points to the difficulties that are implicit in the struggle to eradicate subjectivity – to my mind it is not possible.

Because I am not a Kantian scholar I have previously refrained from mentioning Immanuel Kant, but his thinking has formed much of the basis of modern thought. He produced the “Critique of Pure Reason” in 1781, and one quote I wish to highlight here from his considerable body of work is: “The world in itself is unknowable”. This strengthened Descartes’ approach of not trusting our senses. It has given our modern scientific and technological society the excuse to allow our thinking to run ahead of the phenomena of the world.

This activity may sound familiar if you think back to the Path of the Programmer. It is a characteristic of the Journeyman phase.

With regard to my previous workshop on imagination it is interesting to see that one commentator, Mark Johnson, has noted that Kant had difficulty with imagination – Johnson states that he was “not able to find a unified theory of imagination in Kant’s writings” (The Body in the Mind p166).

The third person I want to mention, and the one I feel most drawn to, is Goethe. It was Goethe who raised the warning flag to say that there was a problem with the underlying philosophy and practice of the scientific method. He pointed out that there was too much over-hypothesizing and that the thinking was going ahead of the phenomena of the world. Observation was not being given enough time.

Does this ring any bells? It is exactly what happens when someone takes an undisciplined approach to debugging.

Goethe, however, was particularly interested in understanding the growth of plant life. He wrote the Metamorphosis of Plants in 1788 and identified two very important activities. The first one is Delicate Empiricism, i.e. carefully collecting the data, carefully observing the world without overly disturbing its processes.

The second activity, which is what gave me the impetus to give my previous workshop on imagination in 2014, is Exact Sensorial Imagination. This is NOT fantasy, but exact, grounded imagination congruent with the observed phenomena. Goethe was trying to understand how plants grew and how their forms changed during growth.

There is a link here for me with how software projects grow over time, as if they have a life of their own. A programmer needs to have a grasp of how the current software forms may change over time within such a context if they are to minimise future bugs.

The key difference between Descartes and Goethe is that Descartes was trying to eradicate subjectivity whereas Goethe was wanting to educate subjectivity.

The next very important phase in philosophical thought is the advent of phenomenology in the 1900s. The realization that the process of coming to know something is crucial to, and as important as, the conclusion. Goethe is not considered a phenomenologist as he focused on specific phenomena rather than the philosophy behind what he was doing, but he definitely prefigured some of their ideas and so could be called a proto-phenomenologist.

We need to understand that phenomenology is a sea-change in philosophical thought. Here we are, living in a modern technological society that is based upon 300 years of philosophical thought and now the underlying foundational thinking has changed significantly.

I see software development as a discipline that is in the forefront of trying to understand what this change of thinking means in practice. We need to understand how we develop our ideas and we need to understand our own cognitive biases, the subject of Dr. Marian Petre’s keynote “Balancing Bias in Software Development“. My point here is that we can do a certain amount in teams but there is also some personal work to do in understanding our own learning processes.

There is a wonderful quote by Jenny Quillien who has written a summary of Christopher Alexander’s Nature of Order books. She says in a preface:

“Wisdom tells us not to remain wedded to the products of thought but to court the process.”
(Jenny Quillien Delight’s Muse)

I think this is a lovely way of putting it. The process needs courting, it has to be done carefully as with Goethe’s Delicate Empiricism.

As background one of the main people I have read in terms of understanding the philosophical issues around phenomenology, yet in tune with Goethe’s thinking is Henri Bortoft, who’s writing is very understandable, particularly his book “Taking Appearance Seriously“. He draws on the work of Gadamer, one of the more recent phenomenologists.

ACCU2016: Talk on Software Architecture Design 3: The Issue of Doubt
ACCU2016: Talk on Software Architecture Design 1: The Path of the Programmer

One thought on “ACCU2016: Talk on Software Architecture Design 2: The Historical Context

Comments welcome. Let me know what you think...

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s