What Dimitri Learned
Machine Thinking
I’ll begin with an overly simplistic metaphor. Let’s visualize a ball rolling down a shallow slope. Driven by gravity, it’s seeking the easiest path down. Except the slope is full of ridges, channels, and nubs, and they make the ball…
Teaching AI to write lyrics
I have been on a bit of a kick to get the large language models (LLMs) to generate interesting lyrics for songs. Over time, it’s become quite an adventure, a fun exploration of LLM capabilities. Here’s the multi-part account of…
Jamming with Udio
Today, I had my first jam session with Udio. With the introduction of audio prompting, I am now able to use my own sound as the starting point for a generated track. This seems like a leap forward, despite the…
Casino Creativity
I’ve been geeking out on AI-generated music services Suno and Udio, and it’s been super-interesting to see them iterate and ship quickly. It looks like there might be a value niche in this particular neck of the woods in the…
Chrysalis
A moment of clarity I suspect it’s playing a game I reach out, and it’s gone My unreality By a different name Is what yet to be drawn.
Flexibility of the medium
I did this fun little experiment recently. I took my two last posts (Thinking to Write and The Bootstrapping Phase) and asked an LLM to turn them into lyrics. Then, after massaging the lyrics a bit, to better fit with…
The Bootstrapping Phase
I think I have a slightly better way of describing a particular moment in a product’s life that I alluded to in Rock tumbler teams, Chances to get it right, and later, Build a thing to build the thing. I…
Thinking to write
I’ve had this realization about myself recently, and it’s been rather useful in gaining a bit more understanding about how my mind works. I am writing it down in hopes it would help you in your own self-reflections.
Aircraft Carriers and Zodiac Boats
An insightful conversation with a colleague inspired me to articulate the distinction between velocity and agility – and all that implies. When I talked about velocity in the past, I sort of elided the fact that agility, or the ability…
AI Baklava
At its core, the process of layering resolves two counterposed forces. Both originate from the need for predictability in behavior. One from below, where the means are concrete, but the aims are abstract – and one from above, where the…
Reinventing Organizations Redux
This one is a bit out there, if only to connect some dots and shake loose new insights. Let’s get that distant look in our eyes and contemplate a possibility that may or may not transpire. Let’s all suppose that…
The Breadboard developer cycle
Over the past couple of months, we’ve been working on a bunch of new things in the Breadboard project, mostly situated around developer ergonomics. I’ve mentioned creating AI recipes a bunch in the past, and it might be a good…
Declarative vs. imperative
I recently had a really fun conversation with a colleague about “declarative vs. imperative” programming paradigms, and here’s a somewhat rambling riff that I captured here as a result.
Hourglass model and Breadboard
Architecturally, Breadboard aspires to have an hourglass shape to its stack. As Bernhard Seefeld points out, this architecture is fairly common in compilers, and other NLP tools, so we borrowed it for Breadboard as well.
The protocol force
Here’s a riff on the “hourglass model” conversation I’ve had with Bernhard Seefeld a while back. I only recently connected it with my earlier mumblings about software layering, and here’s what came out.
Why AI orchestration
Why do I find the problem of AI patterns and more generally, AI orchestration so interesting that I literally started building a framework for it? Why do we even need graphs and chains in this whole AI thing? My colleagues…
Makers and Magicians
I want to finally connect two threads of the story I’ve been slowly building across several posts. I’ve talked about the rise of makers. I’ve talked about the magicians. It’s time to bring them together and see how they relate…
Zones of LLM predictability
As you may know, large language models (LLMs) are smack dab in the middle of my tangle of interests presently, so you can bet I spend a lot of time talking with my friends and colleagues about them. One lens…
Doers, Thinkers, and Magicians
I’ve been reflecting on my experiences of working with developers and developer ecosystems, and I realized that there’s a really interesting twist on the typical “early adopter” story that’s been hiding in the back of my mind.
Traits of a maker mindset
The whole concept of makers has been on my and my colleagues’ mind a lot, especially with their current rise in prominence with generative AI.
The engine and the car
The whole large language model space is brand new, and there are lots of folks trying to make sense of it. If you’re one of those folks, here’s an analogy that might come handy.
Steady winds, doldrums, and hurricanes
It just so happened that this year, many of my friends and colleagues ended up looking for new opportunities, and in our conversations, I ended up shaping this metaphor. As most metaphors, it’s not perfect, but hopefully, will stir some…
Diving into unpredictability
My previous essay on the topic of unpredictability generated a few insightful comments from my colleagues and friends. One of them led to this vignette.
Sometimes you gotta hit the wall
I’ve probably written about this a few years back, but I still find this mantra useful and worth repeating. It applies to the situations where we’re stuck but we don’t know that we’re stuck – not yet.
Pace layers of predictability
I’ve been talking about pace layering a lot, within the dandelions and elephants story and in other pieces. Here’s yet another way to apply this framing.
AI Patterns and Breadboard
In my last post, I kept talking about AI patterns, but kept it a bit vague. I thought it might be useful to share a couple of examples to describe what I mean by “AI patterns” a bit more clearly.…
Composing graphs with Breadboard
This post is more technical and more rambling than my usual repertoire. It’s a deep dive into where my mind is today, and it’s mostly about technical design. Think of it as a sample of interesting problems that I am…
The ODA and OODA stances
After writing a bit about principles and tensions, I thought I’d switch tracks and go with something slightly different. Philosophy meets strategy in this story about how we see ourselves in relation to the world around us. I’d like to…
One miracle at a time
Technological innovation can be viewed as a network of miracles: breakthroughs that make possible something that wasn’t impossible before. Some miracles are major and others are minor.
Build a thing to build the thing
When building new products, there’s always a weird tension between making something “real” and production-ready, and spending a bit of time just experimenting with all of the various ideas of what this “real” might look like.
Live as our customer
This principle is something that feels very intuitive at first blush, but in my experience, is rather challenging to adhere to, especially as a team.
The rise of makers
It seems pretty obvious that there is some sort of cyclical nature to technological progress. There seems to be a rhythm to how things happen, and many words were written to discern the structure of the cycle. My introduction to…
The gifts of failure
I may have written about this before. It’s a trick that I’ve learned intuitively over the years, and I’ve found it tremendously helpful. It tends to work best in situations where the outcome is uncertain.
Gravity and water
I have been lucky enough to be part of the process of shaping several organizations, yet only uncovered this nugget of insight very recently. Very briefly, it helps to discern the forces of the broader environment that influence us without…
Models and structured reasoning
One of my colleagues quipped recently that instruction tuning might not be about teaching large language models (LLMs) what to do, but rather about reminding LLMs of the wealth of wisdom they already have at their foundation. Here’s a rather…
Development environment for rapid experimentation
I’ve been playing with various software development configurations that might enable rapid experimentation, and landed on this particular one. I am pretty sure there are even more effective ways, and I can’t wait to learn from you about them. This…
Four layers
There seems to be some layering rhythm to how software capabilities are harnessed to become applications. Every new technology tends to grow these four layers: Capabilities, Interfaces, Frameworks, and Applications.
Fix-forward and rollback commit stances
Now that I play a bit more with open source projects, more observations crystallize into framings, and more previous experiences start making sense. I guess that’s the benefit of having done this technology thing for a long time – I…
Schemish
I’ve been spending most of my hobby time playing with reasoning boxes and it’s been crazy fun. I need to write properly about my explorations later, but so far, I’ve convinced an LLM to brainstorm ideas and then critique itself…
Stages of project forking
I’ve been thinking recently about how to design an open source project, and realized that there’s a really neat framing hiding in my memory. So I dug it out. If you are trying to make sense of the concepts of…
The waterline
This one is a very short framing, but hopefully, it’s still useful. Whenever we operate in environments that look like pace layers (and when don’t they?), there emerges a question of relative velocity. How fast am I moving relative to…
Limits of applying AI
I’ve been thinking about the boundaries of what’s possible when applying large language models (LLMs) to various domains. Here’s a framing that might not be fully cooked, but probably worth sharing. Help me make it better.
Concept miner
Here’s a concrete example of a reasoning box that I’ve been talking about last week. It’s not super-flashy or cool – certainly not one of those viral demos, but it’s a useful example of recursively ground-truthing a reasoning box onto…
Separating cargo from the train
I’ve been puzzling over a problem that many engineering teams face and came up with this metaphor. It’s situated in the general space of attachment and could probably apply to things other than engineering teams.
Reasoning boxes
This story begins with the introduction of metacognition to large language models (LLMs). In the LLM days of yore (like a few months ago), we just saw them as things we could ask questions and get answers back. It was…
Innovation frontier
So we decided to innovate. Great! Where do we begin? How do we structure our innovation portfolio? There are so many possibilities! AI is definitely hot right now. But so are advances in green technology – maybe that’s our ticket?…
Learning from the nadir
I’ve talked before about traps: how to get into them, what they might look like, and even how to get out of them. This little story is about the developmental potential of traps.
How we engage with LLMs
It seems popular to write about generative AI and large language models (aka LLMs) these days. There are a variety of ways in which people make sense out of this space and the whole phenomenon of “artificial intelligence” – I…
Sailors and Pirates
Here’s a fun metaphor for you. I’ve been chatting with colleagues about the behavior patterns and habits of leaders that I’ve been observing, and we recognized that there are two loose groups that we can see: sailors and pirates.
Nudges, boosts, bumpers, and tilts
The quartet is finally complete. I’ve written about nudges separately, and already had bumpers, boosts, and tilts grouped. Now they are all united into one simple framework that helps me better understand the environment in which I am operating and…
Receiving negative feedback
Negative feedback is rarely fun, but can show up in varying degrees of intensity. Sometimes it might seem like a nice suggestion to improve, and some might feel like a crushing blow. It is the latter kind that I am…
Deep Stack Engineer
Riffing on the idea of layer gaps, we can surmise that pretty much every layer we ever get to write code for has gaps. If that’s the case, then anticipating layer gaps in our future can lead to different ways…
Layer gaps
I’ve been writing a bit more code lately, and so you’ll notice that some of my stories are gravitating that way. Here’s one about layer gaps.
Decision-making mindsets
I have this intuition that the process is not the most important ingredient in making better decisions. Instead, the key is the mindset with which we’re entering the decisions-making process.
Shadow Gristle
I’ve been writing a bit of Web components code recently and used Shadow DOM. I am realizing that there’s a fairly useful pattern in incorporating Shadow DOM into Web apps that I will hereby name the “Shadow Gristle”.
The law of tightening aperture
What happens to the teams with wide apertures over time? Does the aperture stay the same? What about the teams with narrow strategy apertures? When I started examining these questions, I recognized a familiar pattern. This pattern seems so pervasive…
The gardener
I often use the analogies of gardens and gardening in my writing. It’s only fitting that I talk about gardeners. This was inspired by something that my friend Alex Komoroske said once – though now he tells me that he…
Strategy aperture gifts and curses
Now that I’ve sketched out the concept of strategy aperture, let’s play with it. Let’s imagine two teams: one with a wide strategy aperture and the other with narrow. What are the gifts and curses of these teams?
Strategy Aperture
The concept of embodied strategy continues to captivate me. Recently, I found a more resonant way to talk about the narrowness and breadth of the cone of embodied strategy: the strategy aperture.
The Wallpapering Principle
This principle builds on the layering principle, and deals with a common decision point that most software developers reach many times in the course of their work.
The Layering Principle
Preference toward layering is probably one of the more fundamental principles of software development. It pops up pretty quickly as soon as we start writing code. I wrote about layering extensively in the past, but basically, when we start connecting…
Chances to get it right
This has been rolling around in my head for a while, and a conversation with fellow FLUX-ers spurred me to grapple with these ideas some more. Here’s somewhat rambling advice that emerged.
Beyond pros and cons
Among engineers and product managers, a pros and cons document is a fairly common practice. The practice calls for outlining a problem statement that defines the scope of solutions, then lists potential solution options, with two lists for each option:…
Growth and control biases
When we don’t recognize that growth and control are in tension with each other, we tend to develop a bias that prevents us from spotting problems with the decisions we make. To better make sense of how this bias shows…
The tension between growth and control
I alluded to this tension before, but it was somewhat buried in a fairly obscure context of compounding loops. Here’s a somewhat unkempt riff on the concept.
Degrees of Open Source
I realized that I never captured what I learned about the nature of open source projects anywhere, so here’s one attempt to rectify this omission.
How to think and what to think
There’s this gap that I’ve been struggling with for a long time, and I often feel like I am no closer to finding a way to bridge it. It’s a gap between nuance and action. I’ve talked about many variants…
Edgewise Thinking
I stumbled into this framing when talking about product/platform thinking with my friends. To put this framing together, we have to employ a certain way of thinking about software products – viewing them as a graph.
Wanderer
Here’s another little experiment I built over the break. Like pretty much everyone these days, I am fascinated by the potential of applying large language models (LLMs) to generative use cases. So I wanted to see what’s what. As my…
No ship ums
I’ve been thinking about the path that software dandelions take toward becoming elephants, and this really interesting framing developed in a conversation with my friends.
Dandelions and Elephants, Illustrated
Over the holiday break, I made a thing for you to enjoy. It’s an illustrated deck, similar to the one I’d done for Adult Development Theory. It’s about Dandelions and Elephants:
What the heck is strategy work?
I am realizing that I’ve been gabbing on and on about strategy and strategy work, and I have never actually defined what strategy work entails. The word “strategy” evokes a variety of images, and when I say “what is strategy…
Being Strategic
What does it mean to be strategic? It is a sort of practice, a thinking hygiene.
Dandelion/Elephant Strategy Rubric
I discussed the nature of conditions that encourage dandelion or elephant strategies, but I only skimmed a little bit the topic of why one would choose these strategies. Here’s a sketch of digging a bit more in depth of this…
Generating ideas and strategy coherence
I’ve been talking about dandelions and elephants for a while now, and yes, it may seem like I’ve gone a bit nuts. Oh well. It’s just that it’s such a good framing and I keep finding uses for it nearly…
Convergent innovation
As a sort of thought appetizer, here’s a vignette attempting to intersect the divergent/convergent thinking frame and … you guessed it, dandelions and elephants.
Dandelion or Elephant?
The discovery of the dandelion/elephant framing was exciting and my fellow FLUX colleagues and I engaged in a rather fun “hacky sack of ideas” game, tossing the framing back and forth and looking at it from this side and that.…
Embrace the suck
The titular phrase is well-known in the military, though this might be a different take on the adage. This one came out of a morning conversation with fellow FLUX-ers, where we briefly chatted about life experiences that we didn’t look…
Shadows and Curses
In this Halloween-themed episode, I wanted to share a story that might be useful to API engineers, both aspiring and experienced. This is the story of four curses of API development and the shadows that conjure them. So grab that…
Caring for elephants
Now that we have a guiding compass for growing dandelions, what of the elephants? What are the conditions that might be effective for our APIs to nurture ideas that are like elephants?
Growing dandelions
A couple of weeks ago, I talked about r/K-selection and mentioned two kinds of ideas: the mutate-through-replication dandelions and capacity-preserving elephants.
A crutch
Thinking some more about organizational pathologies, I realized that there is another way to spot and potentially face the challenges presented by them: a crutch.
Organizational pathology
I was reading the latest book by Richard Rumelt, The Crux, and something clicked that I just had to write down.
The Perspective Ladder
I’ve been trying to come up with a better way to illustrate the concept of mental model flattening, and realized that one way to do this is by describing it as I experience it.
r/K selection and innovation
I’ve been thinking about the different conditions under which innovation emerges, and how the environment influences the kind of innovation that happens.
e-LOC
I’d like to introduce a metric for developer APIs that I call “e-LOC”. I am not great with names, so it’ll just have to wait until someone gives it a better one. Meanwhile, let’s explore it.
Making Fifty
This one will be a bit unusual. Instead of my typical sermons on strategy, ecosystems, and development, I want to talk about another hobby of mine: making music. I recently published a new track called Fifty, and figured that it…
The Plumber Age
This framing jumped out of a conversation with the fellow FLUX-ers and I just gotta write it down. It appears that every software project, upon hitting its stride of success, eventually arrives at what I call the “plumber age”. Here…
The Starship of Theseus
This framing of the Starship of Theseus has been on my mind for a little while, and I finally decided to write it down. Basically, in a marketplace with any sort of selection pressure, organizations vie to both retain their…
Strategy and FOMO
There’s this really fun neologism that the cool kids use: FOMO, or fear of missing out. It’s a useful snapshot of feelings we experience when our friends are doing something awesome and we are somehow left behind, literally or figuratively.…
Vision-oriented and impact-oriented mindsets
I had this really interesting framing pop out during a chat with colleagues. It’s a bit contrived, but I found it useful. Imagine that there are two distinct ways to look at the work in front of us: vision-oriented and…
Nudging Embodied Strategy
The whole concept of the cone of embodied strategy is a bit depressing, to be honest. What’s a mature organization to do? Curl up and cry? Surrender to obsolescence? Maybe. But any statement of complete inevitability gives me pause. Though…
Embodied Strategy
I was having a great conversation with a colleague about organizational learning and at one point, I kind of just blurted out that strategies are embodied. Here’s my attempt to expand a bit on this idea.
Practices to break out of the cycle of not-learning
At each step in the vicious cycle of not-learning, there is a choice I can make. I can follow the familiar habit or I can practice a different path – and eventually free myself from the trap. “Eventually” is an…
The cycle of not-learning
Now that I’ve mentioned mental traps, here’s one particular pattern that I’ve observed in myself and others. It seems like a very powerful device. Once constructed, it can hold in its grip not just one person, but entire polities –…
How to get trapped
So you want to add more suffering to your life and build a mental trap for yourself? Well then, look no further. This recipe is for you.
Loops: dead or alive
There are two important shifts to consider when examining a setting. The first is the shift in my needs. Over time, as my customer-vendor loop develops, I will find that the choices I made early on are no longer as…
Builder and Gardener Mindsets
My dear friend Alex Komoroske did a podcast episode recently on all of my favorite topics. I highly recommend watching it and studying the excellent deck that the majority of the discussion rotated around. I also wanted to riff on…
Becoming a setting
I’ve been geeking out about this fascinating phenomenon when parts of one customer-vendor loop become a setting for others. By virtue of connecting the dots to find a functioning setting, we necessarily make this setting more accessible and legible to…
Finding the setting
In the previous story, I talked at length about finding the setting, and I thought it might be useful to try and write down a pattern I’ve seen when looking to complete that puzzle of a functional setting for a…
Customer-vendor loops and their setting
The notion of a setting for a customer-vendor loop is fairly intuitive. A loop doesn’t exist in its own, insulated bubble. Taking that ice cream shop I use as my go-to example, where do its customers come from? They don’t…
Product and ecosystem loop perspectives
There is a useful distinction that arises from examining our position in relation to the customer-vendor loop: product and ecosystem. These are not two different kinds of loops, but rather a matter of our involvement in them. For example, the…
Stages of the customer-vendor loop
One other thing that seems useful is the idea that the feedback loops go through what appears like stages of development – I know! I am sorry! I see developmental patterns everywhere. Here’s a quick framing that captures the idea.
Asymptote analysis using customer-vendor loop
Another potentially useful source of insights is using the customer-vendor loop for asymptote analysis. If we indeed desire for our loop to compound, we likely need to consider the upper limits of the compounding. Every growth has a limit, and…
Making sense of SWOT with customer-vendor loops
When brainstorming entries for a SWOT analysis, it might be useful to have a bit more structure. Let’s see if we can use the customer-vendor loop for that purpose.
Customer-Vendor Loop
I’ve been sketching a bunch of compounding loops this week, and wondering if I am seeing a pattern. I am calling this figment of my imagination the Customer-Vendor Loop. I am not great at clever names. I briefly named it…
Continuously Integrated Strategy
Here’s a possibly useful analogy when talking about strategy work with engineering leads.
Midjourney
I recently got an invite to play with Midjourney, one of the AI-generated art tools out there. It has been a fun adventure, and I am learning a lot. Here are some insights that goofing around with Midjourney produced.
Blueprint, Compass, and Remodeling
Reflecting on some vision work that I’ve been doing recently, I am realizing that I can inhabit two different perspectives, two different mindsets to approach a vision: vision as a blueprint and vision as a compass.
Stakes
This is not as well-formed as it could be, but felt worth capturing. I’ve been struggling to describe the limit of attachment in various ways, and the concept of “stakes” seems like such a good topic to explore.
Organizational cartography
I’ve been thinking about how to represent the important bits of the current state of an organization, and here are some preliminary musings.
Intentionality and meaning
So far, I’ve been talking about intention as a fairly straightforward, singular thing. I have an intention, you have an intention, the bunny has the intention, and so on. As you probably suspected all along, this is at best a…
A vision and a hallucination
Talking with one of my colleagues, we found this simple lens. We both arrived independently at the idea that one of the strongest ways to instill coherence within an organization is aligning on some more or less unified intention. After…
Limits
This story builds on the one I wrote a while ago, and adds one more leg for this stool. This third leg came as a result of examining the solution loop with the question of “What are the limits to…
Archers, Captains, and Strategists
Talking with a colleague, I was trying to draw a distinction between the different kinds of questions people ask when looking for direction. A simple lens materialized. I hope it will be as useful for you as it has been…
The problem understanding framework
With my apologies for taking a scenic route and sincere thanks for following along, I am happy to declare that we now have all the parts to return to that framework I started with. To give you a quick recap,…
Framing
When encountering an infinity-problem, we may have enough wherewithal to resist the urge to act on our caveman firmware. In such cases, we tend to employ a more sophisticated process to exit the “struggle” cycle. The typical name it goes…
Touching infinity
As we explore the process of understanding, it may not be immediately obvious why change isn’t conquerable, and why isn’t knowledge a finite resource as the siren of modernism sweetly suggests. As far as infinity goes, there are infinite stories…
Model compression and us
Often, it almost seems like if we run the process of understanding long enough, we could just stay in the applying cycle and not have to worry about learning ever again. Sure, there’s change. But if we study the nature…
Model compression
At the end of each journey in our process of understanding, we have an effective solution to the problem we were presented with. Here’s an interesting thing I am noticing. We still have a diverse, deeply nuanced mental model of…
Change
So far, I carefully avoided the topic of change, presenting my problem-solving realm in a delightfully modernist manner. “See phenomenon? Make a model of it! Bam! Now we’re cooking with gas.”
Life of a solution
Looking at the framework in the previous piece, I am noticing that the components of the tripartite loop (aka the solution loop, apologies for naming it earlier) form an interesting causal relationship. Check it out. Imagine that for every problem,…
A Solution
If we are looking at a problem, and as we learned earlier, our understanding of a problem is a model that includes us, our intention, and the phenomenon that is a subject of it, then a solution is the problem…
Rubber duck meetings
When I am looking for new insights, a generative conversation with colleagues is hard to beat in terms of quality of output. When I look back at what I do, a large chunk of my total effort is invested into…
Minimum viable legibility
Having seen folks struggle through another Google perf season and supporting them through it, I figured I’d write down some of the new things I learned. Specifically, I wanted to focus on the quadrant of performance management blind spot I…
Cheesecake and Baklava
I have been reading Alex Komoroske’s Compendium cards on platforms, and there’s just so much generative thinking in there. There’s one concept that I kept having difficulty articulating for a while, and here’s my Nth attempt at defining it. It’s…
Understanding
Once the notion of a problem is sufficiently semantically disambiguated, we can proceed toward the next marker on our map: the concept of “understanding”. Ambitious, right?! There will be two definitions in this piece, one building on another. I’ll start…
A problem
To get a more solid grounding of the newly born decision-making framework, we need to understand what a problem is. Let’s begin with a definition. A problem is an imposition of our intention on a phenomenon.
Mental models
I use the term “mental models” a lot, and so I figured – hey, maybe it’s time to do some semantic disambiguation and write down everything I learned so far about them?
The platform two-step
When we last saw Uncle Steve on his ladder, I left him a set of instructions about a less-risky way to adjust the ladder. Interestingly, these instructions roughly translate into a fairly useful technique for platform developers. I call it…
Solved, solvable, unsolvable
I have been noodling on a decision-making framework, and I am hoping to start writing things down in a sequence, Jank-in-teams style. You’ve probably seen glimpses of this thinking process in my posts over the last year or so, but…
Moving the ladder
Riffing on the cost of opinion piece, I realized that there’s a neat framing around opinion mutability and the underlying systems dynamic that’s worth mentioning.
Racing toward or running away
In this moment of flux that I heard being called the Great Resignation, it almost became normal to regularly receive emails from my colleagues and friends about changes in their work. People leave one company to join another, some start…
Awareness of interoception
Recently, I have been fascinated by the wonderful and mysterious part of being human – our interoceptive system. It’s this thing that we all have, but to which I didn’t pay any special attention. The interoceptive system is how we…
Choosing kale
Chatting with my friends about choosing developer frameworks, we accidentally arrived at this kale metaphor. It sounded witty and fun, so I’ll try to unpack it as best as I can. To begin, I will apply the value triangle lens…
Polarity of intention, structure, and capacity
I keep coming back to the post from last year, where I tried to write down my understanding of the distinction between organizational states of consistency, cohesion, and coherence. It’s been a generative framing for many conversations. The thing that…
The cost of opinion
It appears that I’ve been writing this essay since 2012, never quite finding the right framing. One of my brilliant colleagues asked me this question back then: “How do you evaluate whether a Javascript framework is good for the Web?…
Tension in Shared Mental Model Space
This just occurred to me today, so I am writing this down while it’s fresh. When I talk about the shared mental model space (SMMS), I usually picture it as something like a bunch of circles, one for each individual…
Radical Candor as fallback notch locator
Have you ever experienced this really fun moment when a few of concepts you already knew suddenly came together as something new and completely different when revisited? This just happened when I was looking at Kim Scott’s Radical Candor framework.…
Adult development and coaching expectations
A couple of us were chatting about coaching. It was such an amazing generative conversation that I kept walking around, thinking about it over the weekend. As a result, this somewhat late insight materialized, a remix of the Adult Development…
Short-term divergent, long-term convergent
A conversation with colleagues brought this insight to the surface. We were talking about cultivating generative spaces, where a diversity of perspectives is cherished and celebrated, the stakes are low to examine all of them, and enough room for everyone…
Tension between graphs and trees
Not sure how, last week I stumbled onto my Shadow DOM diaries from 2014 and realized how few of my learnings I captured there. Designing the beast as complex as adding a whole new type of composition to the Web…
The structure of a tilt
While I roughly understand how boosts and bumpers work, and I’ve seen/made plenty of those, tilts felt a bit more tricky. Coincidentally, a colleague recently asked me why anyone would open-source a library that is a part of another, larger…
Objects in vision are farther than they appear
Trying to describe my intuition about a project to a colleague, I found myself using this tongue-in-cheek inversion of a well-known catchphrase to describe a sequence that sometimes plays out on software engineering projects.
A user-situated trustworthiness model
Picking up where I left off in the previous essay, I want to reflect on the causal arrows that turned up in the exploration. It seems that maybe we have a seedling of a simple framework for evaluating user-situated trustworthiness.…
Tracing the boundary
Early last year, I invested a bunch of time into exploring the idea of trustworthiness as it pertains to engineering products and people who use them. I found this to be an incredibly complex and nuanced topic, and I have…
Behavior over time graphing tool
As I was writing last week’s bit on behavior over time graphs, I realized that I kind of want to have a simple tool that enables me to quickly draw and share a behavior over time graph. It seemed like…
Behavior over time graphs and ways to influence
I was geeking out over behavior-over-time graphs (BOTG) this week and found this neat connection to bumpers, boosts, and tilts. My colleague Donald Martin first introduced me to BOTG and they fit right in, given my fondness for silly graphs.
Normative, Informative and Generative Voices
I’ve been thinking about how to convey the style of writing that I’ve learned while writing here, and this lens materialized. And yes, once again, the distinctions come in threes. As Nicklas Berild Lundblad suggested, I might be suffering from…
The value triangle
My colleagues and I were chatting about the idea of a “good change,” and a lens popped into my head, along with the name: the value triangle. I swear it was an accident.
Lenses, framings, and models
At a meeting this week, I realized that I use the terms “lens,” “framing,” and “model” in ways that hold deep meaning to me, but I am not certain that this meaning is clear to others. So here’s my attempt…
Bumpers, Boosts, and Tilts
A discussion late last year about different ways to influence organizations led to this framing. The pinball machine metaphor was purely accidental – I don’t actually know that much about them, aside from that one time when we went to…
Silly math
In Jank in Teams, I employed a method of sharing mental models that I call “silly math.” Especially in surroundings that include peeps who love (or at least don’t hate) math, these can serve as a simple and effective way…
How to make a breakthrough
The title is a bit tongue-in-cheek, because I am not actually providing a recipe. It is more of an inkling, a dinner-napkin doodle. But there’s something interesting here, still half-submerged, so I am writing it down. Perhaps future me –…
Jankless
What would it be like to work in a team that experiences no jank? Do you have a reference point, perhaps a memory of the time when your organization’s flow felt like a flawless jazz session? Or maybe a picture…
The compounding effects of OODA
Because we are all human (future AI, if you’re reading this, you can chuckle at this naive assumption), these sources of macro-jank will be present in any human organization. The extent to which our organization is aware of them and…
Oodles of OODA loops
Our discovery of the inner OODA loop was cool, but I bet you’re thinking… just one other loop? That seems fishy. There’s got to be more, right? Throughout the story, I’ve been blithely jumping back and forth between the individual…
Performance Management Blindspot
Reflecting on the recent Google’s perf season, I came up with a framing that I decided to capture here. If you’re grappling with the last cycle’s feedback, it may hopefully add some clarity to your next steps. And if by…
Cravings and Aversions
Though immediate effects of model flattening are already pretty dramatic, its largest contributions to jank are more long term. While the model flattening is a temporary phenomenon, our experiences of it are not. We remember them. Put in the terms…
Model flattening
Before we move on from our discovery of the inner OODA loop, I want to talk about a phenomenon that plays a significant role in our lives and in the amount of jank we produce. I struggled to capture it…
The OODA inside
Because of the way we humans are wired, the expectation gradient is not a neutral measurement. For some reason, when we perceive a tiger eyeing us voraciously, our bodies immediately start pumping out adrenaline and otherwise prepare us to scale…
The expectation gradient
The conflation of “what is” and “what should be” is not the only way in which our intentions impact our prediction error rate. Another source is the intentions that we’re unaware of. To better understand what happens, we are going…
OODA and Intention
The ability to make predictions is an astounding quality of retained-mode systems. Unlike the imaginary immediate-mode beings, we can start seeing what might be. And we humans are blessed/cursed with the ability to go one step beyond that: we can…
OO and DA
As it usually happens, we find ourselves in a conundrum. When managing jank, do we focus on the accuracy of our predictions or do we try to stay on pace with the clock? There does not seem to be a…
Prediction errors and jank
It seems that the retained mode is our way to compensate for the limited capacity to receive and process information about the environment. The implicit hypothesis behind the retained-mode setups is that we can make predictions based on the model…
The model underneath
It will probably not come as a surprise to you that we humans are a retained-mode bunch. It’s cool to imagine ourselves as the immediate-mode beings: everything in the world around us would be brand new! For every cycle of…
Retained and immediate mode
At the core of the OODA loop is the concept of a model. To create space for exploring it in depth, we’ll make a tiny little digression back into — you guessed it! — graphics rendering technology.
Micro and macro jank
If our team’s OODA loop runs just a tiny bit slower than the clock of the environment, we will generate a flurry of micro-jank — many incidents that are so tiny, we can barely notice them. Unlike with machines, our…
OODA, unrolled
Putting jank and the OODA loop next to each other, it’s hard not to see the similarity. Both have two timelines racing against each other. Both describe one timeline trying to go a bit faster than the other — and…
Jank
I first learned about jank when I joined the Chrome team. It’s a weird slang word with multiple meanings, so I am going to use a narrower definition, custom-crafted just for this narrative. To get there, I will make a…
The OODA Loop
One of the lenses for which I tend to reach frequently is the OODA loop. First articulated by John Boyd in the context of combat, it’s found its way into various other spheres of strategic thinking. The way I hold…
Enumerating constraints
The process of inferring a set of constraints with which to communicate a strategy can get pretty overwhelming, so I made this handy little framework for enumerating them. It’s not a complete taxonomy, but hopefully it’s generative enough to get…
Communicating strategy as constraints
A click up from a plan is communicating strategy as constraints. When plans are constantly stymied with change, we start seeking the means to describe this change in terms of invariants. We climb up the abstraction ladder to see if…
A strategy and a plan
A colleague asked me this great question: “What’s the difference between a strategy and a plan?” Put very simply, a plan is one way to communicate a strategy. But you know me, I want to get at the subtlety of…
Slow down
I wrote this one primarily for myself, though I believe it’s good advice for anyone who’s ever found themselves in a leadership role in today’s work environment. Here it is: slow down.
The structure of a principle
We had a bit of weather recently, and while waiting for electricity to come back on, I found myself flipping through the pages of The Timeless Way of Building by Christopher Alexander. I was re-reading the chapter about the structure…
Stages of customer-centric maturity
While riffing on customer-centric mindsets and the veering toward first-order effects pattern, my colleagues and I came up with this idea of stages of customer-centric maturity. These stages are modeled after the personal development stages, like the ones in adult…
Framing and solving diverge-converge exercises
There’s this fairly common technique: the diverge-converge exercise. I first heard about it when learning about design thinking, and now recognize it in other places. The gist of it is fairly simple: break down your thinking process into two distinct…
The story of agency
Another kind of story that I’ve encountered in my exploration of coherence narratives is the story of agency. Again, it’s loosely borrowed from the Four Needs Framework and plays a catalytic role similar to that of the story of belonging.
The language frames the story
Suppose you’ve said to me that “the falling maple leaves whirl in a delicate dance with the gentle breeze.” It’s late fall, so it feels like a reasonable thing to say. The trouble is, my language only has words like…
Developer surface
I mentioned this concept before, and I feel like it’s worth expanding on a little bit. If we are in the business of making a product that developers rely on to create user experiences, the developer surface of this product…
The story of belonging
Next in my adventure across the coherence narrative realm is the story of belonging. It sort of maps into one of the fundamental needs from the Four Needs Framework, but plays a subtly different role here.
Veering toward first-order effects
Have you ever driven a car that pulls to one side? It’s often subtle, but after a while, the counter-steering effort becomes impossible to ignore. This metaphor comes to my mind whenever I encounter a common developer experience pattern: the…
Cutting or highlighting?
Talking with one of my wise colleagues, we arrived at this neat framing around making decisions. “Decision” is a weird word. My friend Neel tells me that its Latin root is literally “to cut away,” and that recognition that a…
Making cross-cutting investments
Over the last few weeks, I’ve been thinking about approaches to influencing projects and teams across a large organization. I framed the exercise like this: suppose I have some organizational currency (headcount!) to invest. How do I nudge project trajectories…
Hosting and hosted API design perspectives
When discussing API design strategies, I keep running into this distinction. It seems like a developer experience pattern that’s worth writing down.
The fractal dragon
I’ve already shared this piece elsewhere, but might as well post it here. This story is almost like a piece of fantasy fiction that’s waiting to be written — and a metaphor to which I keep coming back to describe…
Causal chains
My experience is that most folks around me (myself included) enjoy employing the power of causality to understand various phenomena. There’s something incredibly satisfying about establishing a sound causal chain. Once the last piece of the puzzle clicks in place,…
Ecosystems from product and user perspective
In a couple of conversations this week, the word “ecosystem” came up, and I realized that there were two different ways in which we employed that word.
Flux budget and predictability footprint
I’ve been thinking about this idea of the flux budget as a measure of capacity to navigate complexity of the environment. With a high flux budget, I can thrive in massively volatile, uncertain, complex, and ambiguous (yep, VUCA) spaces. With…
Intention and shared mental model space
Hamilton Helmer pointed out this amazing connection between intention and shared mental model space that I haven’t seen before. If we are looking to gain more coherence within an organization, simply expanding the shared mental model does not seem sufficient.…
The story of a threat
Continuing my exploration of narratives that catalyze coherence, I would be remiss to not talk about the story of a threat.
Prototype the problem
I was looking for practices that help expand shared mental model space and thinking about prototyping. I’ve always been amazed by the bridging power of hacking together something that kind-of-sort-of works and can be played with by others. Crystallized imagination,…
Organizing and sensing connections
Tucked away in a couple of paragraphs of the brilliant paper by Cynthia Kurtz and David Snowden, there’s a highly generative insight. The authors make a distinction between the kinds of connections within an organization and then correlate the strength…
Say it in many different ways
Shared mental model spaces are challenging to grow and expand. Mental models, especially novel and interesting ones, are subtle and have to be examined patiently to become shareable. The process of sharing itself often causes the models to mutate, creating…
The story of an opportunity
While geeking out on this idea of coherence and possible mechanisms that bring coherence, I ended up in a fun rabbit hole of narratives as catalysts for coherence. There seems to be certain kinds of stories that somehow end up…
Consistency, cohesion, and coherence
My colleague Micah introduced me to this framing of different degrees of organization and I found it rather useful. Recently, I shared the framing with my son and he came up with a pretty neat metaphor that I will try…
Limits of attachment and capacity are interlinked
It felt both liberating and somehow odd to make a distinction between the limits of capacity and attachment. I’ve been thinking about that oddness and here’s an extra twist to the story.
It’s a unicycle!
Thinking a bit more about correlated compounding loops, I would like to improve on my metaphor. I can’t believe I didn’t see it earlier, but it’s clearly not a tricycle — it’s a unicycle! Having never ridden one, I can…
Complexity escape routes and listening to learn
I was teaching the workshop on complexity this week, an outgrowth of my Adventures In Complexity slides. One of the interesting ideas that I was emphasizing during the workshop was this notion that we humans tend to be rather uncomfortable…
Settled and “not settled yet” framings
I was working on decision-making frameworks this week and had a pretty insightful conversation with a colleague, using the Cynefin framework as context. Here’s a story that popped out of it.
Rigor and shared mental model space
Alex Komoroske has another great set of new cards on rigor and here’s a little riff on them. The thing that caught my attention — and resonated with me — was the notion of faux rigor. Where does it come…
Correlated compounding loops
A thing that became a bit more visible for me is this idea of correlated compounding loops. I used to picture feedback loops as these crisp, independent structures, and found that it is rarely the case in practice. More often…
The miracle count
While working on a technical design this week, my colleagues and I brushed up an old framing: the miracle count. I found it useful when considering the feasibility of projects.
Effectiveness and certainty
I’ve been thinking about the limits to seeing, and this diagram popped into my head. It feels like there’s more here, but I am not there yet. I thought I’d write down what I have so far.
Open-endedness and bedrock
I’ve been inspired and captivated by Gordon Brander’s exploration of open-ended systems, and was reminded of a concept that we developed a while back when working on the Web Platform: the bedrock. My old colleague and friend Alex Russel and…
Growth, control, and tricycles
Riffing on Alex Komoroske’s excellent set of cards on compounding loops, there’s something really interesting about the relationship between compounding loops and properties of a theory of change. A compounding loop makes an excellent motor: every cycle produces a bit…
Limits to seeing: capacity and attachment
Helping a colleague process tough feedback this week, I’ve been reaching for a framing to describe something subtle around the nature of the limits to seeing another’s perspective. This story tries to get at this subtlety.
Triggered, intentional, and spontaneous coherence
I’ve been chatting about organizational coherence with a few folks, and this question intrigued me: what are the conditions that lead to coherence emerging? Sifting through my experience, I ended up with these three (still playing with the labels for…
Orders of Humility
Alex Komoroske and I had a great generative conversation today and as usual, I have a new framing to write down.
Rock tumbler teams
Growing a well-used platform developer surface is exceptionally tricky work. I’ve heard many stories of the team investing months (or years) into building a new set of APIs or protocols, only to encounter at best lackluster interest. To arrive at…
Why will this be hard for us?
I was working on a strategy and helping review another this week, and found this framing helpful. Especially in mature organizations, the challenge tends to reside not in determining how to do something, but rather in finding what makes this…
Want, should, will
While spelunking my network of assumptions, I often find it helpful to understand what animates my actions. What are the underlying stories that shape how I behave? Over time, I ended up with this simple framework of sorting my stories…
People-keeping and mission-keeping
In a couple of conversations this week, this distinction between people management approaches kept popping up. I am pretty sure this is incomplete, but it seems useful, so here goes. In my experience, it feels like competent people management falls…
The music we play
One of my colleagues shared this metaphor and I was mesmerized by it, expanding into this vignette. They suggested that if we could pretend that teams are playing music, we could imagine the kind of music that we would hear.
The nature of the challenge
While working on a strategy this week, I realized that one of the most common missing bits from a well-designed strategy is a discussion of the nature of the challenge.
Mindset transitions and coherence
I wonder if in the framing of organizational mindsets, there’s a pattern with transitions across playing to win and playing not to lose. It seems that all teams that I’ve been on and worked with struggled through these transitions, and…
Polarity-based API layering
While discussing API design, one pattern that caught my eye was polarity-based layering. It’s something that I’ve learned to do intuitively, but thought it might be worth capturing.
Spelunking our network of assumptions
I’ve noticed that my ability to operate in an ambiguous, complex environment depends strongly on my capacity to see a larger space of options and possibilities. There’s something very natural and yet completely unproductive about reacting to complexity with fear…
Questing, Scaling, Keeping
I’ve written a couple of takes on this before, but they didn’t feel quite right, so here’s another iteration. Keep that rewrite count ticking! It seems that there are some distinctions that I can draw when looking at the missions…
The rewrite count
As a software engineer, I often see a struggle that both teams and individuals experience: overcoming the anxiety to “get it right” the first time. And it makes sense! We want to make sure that when our software ships, it…
Being excited about disagreement
Chatting with colleagues this week, I am recognizing that it might be useful to talk here about disagreement. I used to hate disagreement. I would get tense and have this pain around my neck anytime I sensed a situation where…
Own the tension
A couple of this week’s conversations about platform/product team interactions led to this insight. I’ve been noticing a weird tension between teams that are collaborating on certain kinds of projects and it wasn’t until I applied the 1P/3P framing that…
Organizational mindsets are developmental
I’ve been playing some more with the idea of organizational mindsets in the context of a discussion of a team that finds itself “playing not to lose.” The thing that stuck out to me was that instead of seeing these…
Align on interop
A discussion of how to get an engineering project unstuck led to this insight. When examining sources of tension in engineering projects, there’s a common pattern that I see: the struggle to align on architecture. Fueled by the very reasonable…
Letting go of mind-reading
Cognitive Behavioral Therapy folks consider mind-reading as one of the cognitive distortions, and it’s been puzzling for me: on one hand, understanding that another person has thoughts and feelings and trying to sense them feels like an important skill. On…
The challenge of coherence
Part of my work involves spotting challenges across teams within Google. Over time, I’ve learned to notice different kinds. Sometimes they are engineering challenges, sometimes they are product or leadership challenges. I even learned to recognize UX and UXR challenges.…
Sitting with discomfort
While processing a difficult conversation with a colleague, we found this insight. As leaders, we bring power dynamics into our interactions. Whether I want it or not, my title has sway, and that itself can close or open my opportunity…
A motor and a rudder
Having done a bit of work on researching and sketching out strategies this week, I realized that there are some commonalities in their theories of change, a few patterns that I start seeing.
Forces of the pace layering confusion
I had a super-insightful conversation this week with a colleague about approaches to resolving pace layering confusion. For those of you who haven’t heard of it, Steward Brand’s concept of pace layers is something I’ve often applied to layering in…
Watch for platforms to emerge
A recurring theme in my conversations is the question of platforms. How do I get one? Do I have one? How do I know? Platforms — especially developer platforms — are a really exciting topic for me, so I tend…
Playing to change
I have the most amazing job. In my role, I get to talk with many teams across Google, learn from them and help them find how their ideas fit together. Through this adventure, I notice that teams have a variety…
Weak opinions, strongly held
Chatting with one of my coworkers, we recognized that there’s a pattern that is the inversion of the somewhat popular “strong opinions, weakly held” framework.
Crappy and the fear of rejection
My colleague and I had this observation about companies who are in partner-like relationships (be that a standards organization or an open source project): there tends to be this weird unhealthy dynamic that keeps playing out. Concepts or proposals of…
The productification trap
Picking up on last week’s 3P insight, I want to share some insights I’ve learned about a common trap of working in two-sided markets. I call this trap the “productification trap”, and it appears in two different varieties.
The ghost of unclear theory of change
The unclear theory of change often haunts conversations about strategy — especially the longer-term strategy. It may be worth pointing out the ghost: “what’s our theory of change?” If you look up the basics of the theory of change, this…
Something will get optimized
Complex adaptive systems tend to make it difficult to make guesses about precise shifts and movements. Unlike in complicated systems, accurate call shots are rarely a thing. However, if we pay close enough attention, we can spot patterns (events that…
Leading while sleepwalking
Talking with one of my colleagues, we arrived at this interesting insight. There’s a certain kind of trap that a leader might find themselves in. We named it the “sleepwalking leadership.” It seems to disproportionately afflict leaders who hold a…
What the heck is 3P?
I hear folks using the terms “3P,” “1P,” and even “2P” or “0P” often in my line of work, and I am realizing that many times, these words have subtly different meanings for those who use them. So I figured:…