(2024-11-01) Rebecca Wirfs Brock Discovering Our Software Umwelt

Rebecca Wirfs-Brocc: Discovering Our Software Umwelt. Last week ¾ of the family Wirfs-Brock present the talk, “Discovering Your Software Umwelt”, at the Onward! Essay track of the SPLASH 2024 conference... The back story on how we wrote our essay: Initially, we had no idea what we could write about together…

we—as do all organisms—experience life in terms of species-specific, spatio-temporal, “self-in-world” subjective reference frames or umwelt

When we encounter an unfamiliar environment, only our “untuned” perceptive capabilities are available to us.

we still didn’t know how our individual umwelt observations would mesh into a coherent essay.

after critical reading and review, I often totally turn an essay around and reorganize it—again and again. I’ve found that an essay only reveals its structure and meaning through revision and reflection

next, we examined the narratives and asked each other questions (tell me more, wow!, why?…) – leaving annotations in each other’s documents.

(See past 2023-12-28-OddlyInfluencedE41TheOffloadedBrainPart1Behavior)

Rebecca’s Web – Discovering Your Software Umwelt

We apply the biological-behavioral concept of an umwelt, which is how an organism perceives and acts within its environment, to the practice of software development. By writing narrative descriptions of our own software umwelts and iteratively discussing and analyzing them, we develop prompts that can elicit reflection on how and why we relate to software in the ways that we do.

Software Developers Are People

Software developers operate within complex environments constituted of cultures (Petricek, n.d.)—people and practices—and tools. To understand software development, and who we are as software developers, we need to understand how people work within their environments. This essay explores the concept of a software umwelt—and how it is formed, shaped and tuned over time—as a way for software developers to understand themselves and to navigate the complex and ever-changing environments in which they work

there are two aspects to our umwelt: (1) our unique perception of the world and (2) the actions we can take to affect that world.

Our umwelts are multi-faceted. People operate in many contexts, such as home life, work life, and public life, where we perceive and act upon different things. For each of these contexts, we have our own specialized sub-umwelt.

In this essay, we explore the ways we might examine the proverbial ropes in our software umwelts, the ones we recognize as well as the ones in our blind spots, in order to be better software developers.

To Develop Software Is to Adapt

Our programming habits, as well as our software design values, heuristics, and practices seep into our umwelts through our experiences

Within the broader discipline of software development, we form communities based upon beliefs and practices—communities that sometimes have major conflicts about what is a more intuitive or appropriate way to work. (community of practice)

software development has always been about change—in our tooling, our programming languages, our deployment platforms and design processes.

When we encounter something unfamiliar in our environment or enter a new environment, our umwelt can no longer be a reliable guide. It may even mislead us.

While our umwelt dictates our perceptions and constrains our actions, it isn’t static.

How Do You Spot a Software Umwelt?

Just as pair programming helps us understand our own coding habits and thought processes, we posit that our umwelts might become evident when they bump up against those of other software developers. (pairing)

To explore this idea, we the authors embarked on a collaborative journey to understand our own, and each other’s, umwelts. We are closely related: Rebecca and Allen are married, Jordan is their daughter

responding to a prompt

We refer to these narratives as our software umwelt stories

Our process draws on philosopher Donald Schon’s idea of reflection-in-action.

He suggests that we might tap into that tacit knowledge by engaging in surprise—by making familiar actions strange again so that we might re-examine them with fresh eyes

By reading and asking questions about each others’ stories, we came to deeper insights. What seemed banal to a narrative’s author proved to be an interesting or surprising aspect of our umwelt formation by another.

Through this discourse we identified elements of a software umwelt story that seem most foundational, and turned those elements into threads. What follows are the threads that we found in our software umwelt stories

Umwelt Origin Stories

Prompt: What is your earliest memory of writing code? What type of device did you use? What activities did you do? Who else was involved in this memory?

We think that how and when someone first becomes interested in using computing technologies as a creative tool influences how they relate to those devices later on in life.

Allen: …I had many of the available science toys—chemistry sets, electronics kits, etc. but I had found them frustrating. They mostly provided recipes for experiments using the provided components.

Nurturing Our Umwelt

Prompt: How did you learn more about programming? What did you learn about yourself in the process? What were the “sticky” things you learned and why?

Rebecca: I found I liked writing code because the amount of effort that I put in paid off in direct results. Also, I could work on my programs as much as I wanted until I got the structure and algorithms “right.”

She found programming to be much more personally satisfying, and less stressful, than, “proving theorems in Calculus, where I had to get the ‘right answer’ at first crack.”

Allen: All computers can do is carry out commands to store, retrieve, and simply manipulate numbers. Any information—including a computer’s commands—can be encoded as grouping of numbers. Programming is all about identifying the informational part of a problem, choosing an encoding, and writing sequences of commands that manipulate the encoded information

I still apply these concepts—in more sophisticated forms—when I program.

In contrast, Jordan wanted to put “intellectual distance between myself and and my parents”

Jordan: [I] bemoaned the required programming classes I had to take in my aerospace engineering degree—until I realized that I enjoyed them vastly more than studying fluids and thermodynamics.

Still, computer programming felt cryptic

It wasn’t until several years later, after countless self-paced courses, guided workshops, and half-baked personal projects, that things finally clicked.

What makes computing a “sticky” interest that leads us to develop a distinctive software umwelt?

By coming to understand what nurtures us, we can prepare for our unique software development journey. Not everyone is the same. Are you someone who learns best by interacting with others? If so, are you around the right people? Are you moetivated by self-learning?

Putting Our Umwelt to Work

Prompt: When did you first feel competent/confident in your programming skills? What things did the “real world” teach you that you hadn’t studied? What was the first software project you worked on that made you feel proud, and how did it unfold?

Allen spent nearly fifteen years at Tektronix as a Software Engineer ultimately specializing in programming language design, implementation, and tooling.

Rebecca was recruited for a Software Evaluation Engineer job at Tektronix and jumped at the opportunity

She was routinely assigned to design and build things that were completely new to her.

imprinted into her umwelt was the belief that she was capable of developing new and innovative software in areas where she had no prior expertise.

After several years without software development in her life, Jordan discovered the need to reactivate her vestigial software development umwelt. She earned a master’s degree in data-focused journalism and began working as a data curator in the non-profit sector. Here, she ended up as product manager for a complex software development project—a role in which she felt out of her depth.

Thankfully, the lead software engineer I worked with was one of the most patient, generous people I have ever met

Jordan felt safe enough to learn and grow

On this project, “I didn’t write a single line of code, yet I felt like I understood the software thoroughly.”

Refining Our Umwelt Through Practice

Prompt: Describe how your relationship to software changed as your expertise grew. Did you become a generalist or specialist? How did your software development values and practices change?

Allen: This developed into a personal design aesthetic that was incorporated into my umwelt: Software is created by humans and exists to support humans and human activities. The design and implementation of software should be approachable, understandable, consistent, and comfortable to the humans that will interact with it

Rebecca: Tektronix was an engineering company where the “next bench” philosophy was practiced—build something of high quality that your peers would use.

Rebecca internalized the values that were formative to Tektronix’s engineering culture and grounded their practices. She came to deeply value producing quality software

At the non-profit, Jordan “successfully” delivered a complex software project, a community data storytelling platform, on time and on budget

At launch, our platform was beautiful, easy to use, and well-built. But…we delivered something that people didn’t actually want…We should have paused to do more exploratory research on the needs of our community members and stakeholders…but at the time I didn’t know to ask for it.

A couple years later, while working as a data journalist, Jordan, who had first programmed using Hypercard, discovered that a live programming environment was the key to her embracing coding.

I began dabbling with Python Jupyter Notebooks. For the first time in my life, I loved writing code

Umwelt Pivots

Prompt: Describe a significant life or career pivot. Why did you make it? How did this change your views on software?

conjectured that the half-life of software engineering ideas to be around five years.

Certain changes in your software development environment may appear inconsequential in the moment. For example, taking on a different role for the duration of a project or moving to a development team which follows new-to-you practices.

If startling enough, exposure to new ideas might even reframe your worldview of software development, and lead you on an entirely new career path

In 1978, Allen attended a talk by Alan Kay titled “Don’t Settle for Anything Less.” Kay showed filmed examples of early versions of Smalltalk.

Allen: Kay’s vision aligned with my software design aesthetic…how could I contribute? I transferred into my employeer’s advanced development “labs” in a role that today might be called a Research Software Engineer.

A couple years later I had the opportunity to try to make Smalltalk practical for use on affordable personal computers

Allen went on to be the software architect of a family of Tektronix Smalltalk workstations, and Smalltalk and object-oriented programming became his career focus for the next twenty years.

Rebecca: …along came Smalltalk…unlike any programming environment I’d encountered: immersive, graphical, and utterly alien

I had to translate Smalltalk terms to roughly equivalent programming constructs familiar to me before I could even start to understand what people were talking about

Over the next several years Rebecca immersed herself in Smalltalk, leading Tektronix’ Color Smalltalk product development effort.

I realized that there were different schools of thought about how to approach object-oriented design

This led to my inventing responsibility-driven design, teaching numerous design courses, and writing two books about object design.

One of Jordan’s pivots began while she was working as a data journalist in a radio organization. She struggled to bring data to life in radio stories

She discovered data sonification, which is the practice of communicating data through sound, and began tinkering with it when, “I learned about a Python package…to turn time series data into MIDI notes by mapping quantity onto pitch…Here, code was a means to creative expression.”

Jordan left the field of data journalism, and returned to grad school, because a seed that had been planted earlier—the civic technology project that didn’t meet the needs of the people it aimed to serve—grew and followed her as her career progressed

I left journalism to pursue a PhD in Information Science with [a human-computer interaction] (HCI) emphasis, so that I could learn how to understand people and how they interact with information and technology.

If you are itching to try new technologies, tooling, or practices, you can find opportunities to acquire new skills and make significant pivots throughout your life as a programmer.

Distilling Our Umwelt

Prompt: What are the core values involved in how you develop software? What makes you unique as a software developer?

It was all too easy to lose ourselves, and hard to answer the question, “What is your software umwelt?”

to craft a kind of personal software developer mission statement:

Rebecca: The foundation of my software umwelt is curiosity. It drives me to explore new things and immerse myself in new environments

My outsider’s perspective, along with my design values and practices offer unique and valuable insights

Allen: Software is my creative media and programming is an intellectual activity

I value technical diversity, expect ongoing evolutionary change, and relish radical innovations. Lateral thinking is essential for software innovation. I believe that software exists to support humans and human activities

Jordan: My software umwelt is tightly coupled with my familial umwelt, and is a matter of legacy and identity. It has resulted in pride and curiosity.

Software development is a sociotechnical system

But the real power of software is that we can make things that people use—technologies that change the world. But how do we know that we are making something people want?

we must always remember to to pull back and see the bigger picture.

By revisiting and reflecting on your own story, refining and rewriting it, and doing so alongside other people, you can identify what is truly important to you when it comes to software development

Join Us in Writing Your Own Software Umwelt Story

Use the prompts we’ve provided as starting points. Modify them

Start with descriptions of memorable events

reflect on their meaning. Why did these experiences stick with you? What values are embedded

We hope that software developers, researchers, students, and programmers from all walks of life might use these prompts

Appendix: Full Prompt and Narratives


Edited:    |       |    Search Twitter for discussion