Way too many sleeps ago, Russ Ackoff shared that the best information retrieval system and best knowledge transfer system was the collection of graduate students that worked with him at Penn’s Wharton School. “Every morning when I come into the office there will be 2-3 articles taped to my door that somebody thinks is important for my research. They are always spot on” Russ shared.
Last Saturday evening a Tweet arrived from two UW HCDE grad students (Drew Paine and Behzod Sirjani) asking if they could come over on Sunday afternoon and enjoy the view of Puget Sound from our deck on Bainbridge Island. “Of course, we’ll bring the food. All you have to do is supply the wine.”
“Done,” I replied.
Drew is in the process of starting his PhD research on the topic of human centered software development. In all of my focus on using human centered design (HCD) and teaching HCD, I don’t remember ever putting human centered with software development before. I asked Drew what he meant by the phrase.
Drew shared that he was interested in how non-software engineers, like scientists, develop software to support their research. They are self-taught and often use scripting language as a way of making sense of their data. They are able to get important things done, but are doing it without formal knowledge. So he wants to understand how to make computational thinking and computational doing more approachable to all of those professionals who aren’t going to go through a computer science or software engineering curriculum.
Human centered software development conjures up something very different for me. I believed the phrase should mean getting software developers to move from being technology centric to being human centric. I have the hardest time getting software engineers to pay attention to what a user really needs rather than focusing on the minutia of getting a program to actually work. Or worse, the software developer focuses on what would be neat to build.
So I looked to Behzod to share what he thought human centered software development might mean. As he sipped some of the Dominio IV wine, I’d pulled up from our spiral wine cellar, Behzod expressed his belief that it meant we need better tools for crafting software programs. He goes crazy with the arcane languages that we have to express a program to the computer and thinks that something like Scratch should be the way we all develop programs. “It is not just the language itself that needs to be more human centered, but also the system and the way that software developers can collaborate. That’s what I like with Scratch. And the real problem is that no program contains the knowledge necessary for someone else to pick up and modify the program. That is the area that we need software to be more human centered.”
As you can imagine, with good wine and a great view an enlightening conversation ensued.
The next evening, Bill Knight, dropped by to listen to some of my “rubber meets the sky” ideas about the next tool I want to build and to share some fine wine. Bill has been kind enough to listen to my flights of fancy since we worked together at Aldus back in 1990. Since Bill is an incredibly accomplished software engineer and CTO, I asked him what he thinks human centered software development means.
Bill shared that he thinks the term means embedding software developers onsite with the humans who have the problem that is trying to be solved for. “Most of the time, software developers are many hours or time zones removed from the people that they are developing solutions for. The term means to me that you should embed the developers directly with the key users in the problem space. Human centered software development is problem space focused. It’s what we did at Attenex by embedding ourselves with the Preston Gates eDiscovery lawyers.”
As we continued the discussion, Bill added that by embedding software developers one should shift to focusing on the process and make the process more understandable. “We have to make the software relevant and the only way to do that is by embedding the developers deeply into the problem space.”
With four interesting view points on what human centered software engineering might mean, I can’t wait for Drew to get started with his PhD research and see where he ends up.
And just to have some fun, I decided to see if Google had any images on the subject. Up came an old IBM diagram:
So what do you think human centered software development means?