(2022-10-12) Rebecca Wirfs Brock Observations On Growing A Software Design Umwelt
Rebecca Wirfs-Brocc: Observations on Growing a Software Design Umwelt. Pattern authors ostensibly are experts on the topic their patterns address. Since most software developers don’t share those experts’ underlying design values, practices, and principles—let alone their design context—there’s a disconnect between what is said in pattern descriptions and that which is perceived and understood by pattern readers
Introduction
Pattern descriptions by intent only illustrate or describe the essential aspects of a pattern; they do not provide detailed instructions on how to apply them or explain why a pattern “works” to solve a particular design problem.
Yet many experienced software designers quickly grok the essence of software design or architecture patterns. Subsequently, they are able to craft reasonable design solutions based on the (scant) information they find there.
How do they do this?
Experienced software designers have accumulated a wealth of tacit knowledge about how to design and effectively build software.
When reading new-to-them software patterns, they view those patterns through the unique lens of their experiences
Umwelt, from the German, means "environment" or "surroundings"...
Our umwelt isn’t static; we reshape our umwelt as we interact with the world
It is the experienced designers’ umwelt that empowers them to apply patterns holistically
They don’t mechanically implement patterns; instead, they carefully weave them into their designs
In sharp contrast, inexperienced designers, while they might grasp the essence of a particular design pattern, aren’t likely to fully understand its significance or design impact. It is difficult for them to spot salient signals that could help them shape or adapt a pattern to better fit their current design.
Heuristics and Discernment
Billy Vaughn Koen, in Discussion of the Method: Conducting the Engineer’s approach to problem solving identifies three kinds of heuristics:
- Heuristics that lead you to take a specific action (software design patterns are one example of this kind of heuristic
- Heuristics that shape your beliefs and values
- Heuristics that guide you in the use of other heuristics
My goal has been to make software designers more aware of the intrinsic value of the design heuristics that they’ve acquired through direct experience
The Benefits of Knowing Why Things Work the Way they Do
The Problem in a Nutshell?
Learning to Adapt
Some Thoughts on Growing Design Expertise
Letting go of Certainty
Edited: | Tweet this! | Search Twitter for discussion