Modeling The Dynamics Of Code And Attention
In conversations about software development, I often ask people whether they’ve heard of Conway’s Law. It’s a doorway to a richer conversation. We can talk about the dynamics of design — how our environment affects us as designers and how the things that we design become part of that environment in a broad feedback loop. Without this . . .
Toward a Book of Form
Exploring Structural and Behavioral Abstraction
I’m fascinated by correspondence — when we see the same pattern in more than one place, or even a very different domain. A good example is Postel’s Law, sometimes known as The Robustness Principle. It states that when you are designing components in software you should design them so that they are open to accepting many kinds of input yet . . .
Groups Are About The Other
One of my favorite essays from the early 2000s is Clay Shirky’s A Group Is It’s Own Worst Enemy. It describes a dysfunction of on-line communities that is very familiar to us now in the age of social media.Communities often start as free spaces, but eventually chaos and harassment appear. Once they do, quite a bit of the group’s activity . . .
The Cognitive Tech of Technical Discussions
What can we do when we glitch?
How do you think?
It’s an odd question.
People think about thinking all of the time but they seldom talk about how ideas come to them. To the extent that I’m aware of my own process, I recognize that there’s a strong visuospatial component to my thinking. In my mind’s eye I see colors and shapes. When someone is talking, . . .
Growing Through Refactoring
These are interesting times for people who care about refactoring. The 2nd edition of Martin Fowler’s book Refactoring has just been released. As if that weren’t enough, Kent Beck recently wrote up a workflow called test && commit || revert, which can be seen as a new alternative to Test-Driven Development.
It might not be . . .
What humble citrus fruit can tell us about software
Whenever I work on unfamiliar code I start extracting methods. I look for chunks of code that I can name - then I extract them. Even if I inline the methods I’ve extracted later, I have a way of temporarily hiding details so that I can see the overall structure.
When I’m working with someone, often they point out that I’m actually . . .
Does Software Understand Complexity?
Reflections from ICCS2018
This past week I was at a conference with some wonderful talks, but I also enjoy the hallway track - the conversations you have with people during breaks. You trade experiences and eventually you get to the question: “what do you do?” My answer started with one word: software. The people I met had a range of reactions but often they spoke . . .