Software Practice – A PaineFull Discussion

One of the joys of teaching graduate school is getting to interact with bright young HCDE PhD students. Recently, I’ve been able to spend quality time with Drew Paine, a software engineering graduate of Rose-Hulman Institute of Technology.

Drew reminded me of the book Social Thinking – Software Practice by Christiane Floyd that was first introduced to me by Wolf-Gideon Bleek when he was on his sabbatical at UW. When reading this book I had my own Chris Alexander existential crisis as I encountered the following paragraph:

David Socha and I wrote about this moment in our paper “Is designing software different from designing other things?” when I realized the missing ingredient in getting my students to do high quality designs:

“Over the course of my career, I (Skip) alternated between line management jobs in software engineering and working as an organizational consultant helping large and small organizations develop visions, missions, strategies and innovative product designs.  In the process of consulting and graduate school teaching, I tried to pass on what I’ve learned about designing successful software products and systems.  While my customers and students generated better designs, they did not generate innovative designs like I’ve accomplished over my career.  I knew there was something missing from my framework of design, but I couldn’t pinpoint it.

“Then I had a Chris Alexander [23] moment while reading Floyd’s article.  Alexander realized that the reason his students weren’t producing great designs is that he left two important aspects out of his Pattern Language – color and asymmetry.  Similarly, I left out of my teaching the foundations of organizational development, change and design.  Yet at least half of the work of every successful product design that I’ve done has included innovative organizational design and interventions.”

Design Patterns: Elements of Reusable Object-Oriented Software was an important breakthrough for the software development community by drawing from the work of Chris Alexander.  However, the gang of five was very myopic as is typical of software developers and they only brought over the most micro level of what Chris had done.  Chris designed from the micro level – how to design a window through many levels to the meta level with how to design a geographic region.  The Software Design Patterns folks stopped at the level of designing a window.

Chris has gone through three stages of evolution in his writing – analysis, synthesis, and the deeper nature of order (the equivalent in the design field of what Watson and Crick did with discovering the structure of DNA).

The key works from Chris Alexander are:

While we were studying Alexander’s work and entertaining Wolf-Gideon Bleek, the topic of the automatic discovery of patterns in software arose.  Bleek pointed us to some work on Software Tomography that his colleagues were working on. I loved the name and the images it conjured up. So we took a look at the software and realized that if we fed software code into Attenex Patterns we could do a much better job than the Sotograph software at finding links.

So I had my wonderful architects, Eric Robinson and John Conwell, spend a couple of days seeing what Attenex Patterns could do. We were amazed at what came out. In a matter of hours we discovered hundreds of bugs that had been in the software for quite a while which were the result of code reuse throughout the hundreds of thousands of lines of code. Yet another innovation we did that never saw the light of day because software development tools were not our target market (tongue very firmly planted in cheek).

As I shared these two different sets of visual analytics tools, I imagined the study of organizational tomography (Attenex Patterns with the visual analytics associated with semantic networks, social networks, event networks, geographic networks and financial transaction networks) and software tomography with the same tool.  Then you can truly see software as an organizational intervention AND all the implications.

This combination of the ability to analyze texts and the ability to analyze the software that is making the digital media come alive is what Kate Hayles in her new book How We Think: Digital Media and Contemporary Technogenesis is trying to envision. Now it is just that small little matter of programming to make it happen.

Thanks Drew Paine, for reminding me of these other threads that need to be a part of the “content with context” tool.


This entry was posted in Content with Context, Design, Human Centered Design, Intellectual Capital, Knowledge Management, Learning, Software Development, Teaching, University, User Experience. Bookmark the permalink.

2 Responses to Software Practice – A PaineFull Discussion

  1. Geoff says:

    Skip — IMHO, your “analysis,” “synthesis,” “deep order” sequence is a continuation of the tried & true “waterfall” methodology of software design. And we know that it was very useful at a certain time and place. But fast forward to today’s digital age, where software scrums and agile development reign — both incremental development and fast failure are now possibilities. Can’t we find something more flexible & responsive?

  2. Pingback: Seeing Organizations – How do you teach? | On the Way to Somewhere Else

Leave a Reply

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

WordPress.com Logo

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

Facebook photo

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

Connecting to %s