Interesting, it's been 10 days since I added to this Journal. This break has been the longest one since I started. I think I needed a little breather, also some deeper reflection.
This week we had the Retrospective from the Dayton/New Relic the first Sprint of our nascent Agile Partnership Program. Fourteen of us participated in the retro, the 10 partners, Erin and Jami as organizational coordinators, and Ward and I as supporters. It was an amazing experience.
As we were heading to the reception following the retro, I mentioned to Ward that I had been pondering the Red-Green-Refactor practice, at the core of Test Driven Development , that we discussed at our last check-in.
As we walked down the hall, he shared how Smalltalk supported this practice of short, fast development cycles in a sandbox-like area in the development environment. One could easily identify a new requirement, define a test for it, hack a solution, then rewrite it into elegant code (refactoring) before committing it.
Ward keeps bringing the story thread back to Smalltalk. Why?
So this week I dove deeper in Smalltalk. I am now beginning to appreciate why Ward keeps referring to it. Turns out that it represents a critical nexus underpinning the paradigm shift at the dawn of the PC era.
Alan Kay, who originated the language in the 70's, said as much:
>It became the exemplar of the new computing, in part, because we were actually trying for a qualitative shift in belief structures – a new Kuhnian paradigm in the same spirit as the invention of the printing press-and thus took highly extreme positions which almost forced these new styles to be invented source
This exploration has led me down two paths. One has been exploring how Smalltalk grew out of the pioneering work of Sketchpad and Simula . The other was the intention of Smalltalk as a learning tool within the context of the work of Seymour Papert , his Constructionism learning concept, and theories of knowledge.
As a quick summary, Sketchpad created a new paradigm of the way we could engage with computers - moving the interaction from a primarily analytical/mathematical one to also an emotional/creative one through the use of a graphical interface. The other, Simula, created a new model of programming that utilized a concept called objects. These two paradigms merged at PARC on a new platform, the personal computer.
As a side note, Apple was the first to market a PC with this revolutionary promise, which they announced in their iconic 1984 Super Bowl ad .
But what I found also intriguing was the correlation between Smalltalk and the theories of learning. Here is where the thread led to Papert, a co-founder of MIT's Media Lab . Papert was exploring how children learn using computers, utilizing theories of Jean Piaget . Papert believed that children could utilize computers to learn by finding problems that were relevant to them and solving them, what became called Project Based Learning . (This concept of Project Based Learning was also built on the work of John Dewey and Maria Montessori )
Further exploring the work of Piaget, I was particularly intrigued with his cognitive theory . In that, he talks about the two dynamics of "operational intelligence", assimilation and accommodation.
Assimilation are learning experiences that re-enforce our existing perceptual model of how things work, our "schema". Accommodation are learning experiences that involve failures - contradictions of what we thought would happen -- and force us to re-define our perceptual model, our schema.
In a sense, one set of experiences (assimilation) deepens our schema, the other (accommodation) broadens our schema. As an aside, perhaps one could say that these two types of learning experience build our Confidence and Courage.
This concept of schema is an important thread within the history of modern philosophy. The idea of schema originated with Kant, and was then expanded by both Hegel (Hegelian Dialectic ) and Nietzsche (Perspectivism ). As such, it appears to tie into the seminal work of Thomas Kuhn .
Okay, time to reel back in. How does these concepts relate to Smalltalk, Test Driven Development (TDD) and Agile?
Perhaps, at its core, TDD is a creative practice, supported by Smalltalk, that allows for fast iterative failure. By failing a test, one learns which assumptions are wrong, so that the code can be re-written and re-tested. In so doing, there is a learning practice that intentionally creates accommodation that expands one's framework of understanding. That is, our schema is continually challenged and expanded. By operating in fast, iterative cycles, one can quickly learn and expand.
Perhaps these individual schema shifts, when socialized, become the Kuhnian paradigm shift of Agile.