Understanding, inside and out

Every company, every team is its own system and works in its own ways. There are universal abstractions, but these are only useful when someone can translate them into the particular context of one company or team.

Corporate anthropologists do this. First, they adopt the role of “participant observer.” They get deep into the context of teams and workers at many levels of an organization. They stand on the factory floor, they ride along, they share kitchens and coffee breaks. All the time with “the ever-present notebook in your pocket, jotting down observations.”[1]

They learn the inside perspective. To explain how the system works in the language of the people inside it, the way they experience it.

Then, the anthropologist considers what they saw from the outside perspective, in the frames of various theories. How do these particulars fit into universals of leadership, organization, and work?

This combination of inside and outside perspective provides insights invisible from either one. They might see where the intentions of leaders are lost in communication. They might see that work gets done only by circumventing certain rules.

I am not an anthropologist, but I want this kind of understanding. I want to see the workings of my team both from inside and from outside, to recognize what is particular and what is universal. All the time while doing work.

I am an observing participant.

Developing software with a notebook in my back pocket, I notice how my team gets work done, what rules they circumvent and what unstated conventions they enforce. I notice when I feel surprise or frustration and when others do — clues to deviance from unspoken patterns.

As a member of the team, the inside perspective is natural. I take conscious steps to learn the outside perspective.

I talk with other people at meetups and in Slack communities. Read books and dig into conferences. Seek frameworks and theories of work in online materials and workshops.

Combining this outside view with my natural inside view lets me think about the wider purpose of our work, identify paths that can help us reach the goal more usefully, and flex when the wider system’s needs change.

Do the work, and while watching work. Seek outside perspective. Afterward, reflect. Be an observing participant.

[1] source: Danielle Brown and Jitske Kramer, The Corporate Tribe. Technically they talk about the two perspectives as emic (inside) and etic (outside).

illusions of commonsense perception

Learning is a struggle against “the illusions of commonsense perception” (Maria Popova). When it was obvious that the Earth stood still and the Moon moved, Kepler wrote a novel about traveling to the moon and meeting a civilization who believed, based on their commonsense perception, that the Moon stood still and the Earth moved. If a person can imagine the perspective of a moon-based being, maybe they can see that their belief is tied to their Earthbound context.

The phrase “That’s common sense,” like “That’s obvious,” means “I believe this, and the people I trust all believe this, and I can’t explain it.”

Many people in America have a commonsense notion: “Men have penises and women have vaginas.” It’s all they’ve personally seen. Can you imagine someone with a different perspective? an intersex person, even if you don’t know that you’ve met one?

A woman shaving in dramatic light

This frame is self-fulfilling. Any one who is intersex ain’t gonna tell you about it, when you are sure that’s not a thing. Common sense shapes our perspective of the world in multiple ways: in what we can perceive, and in what people show us.

Especially if you have power! Then people extra show you what you want to see and nothing else. Power inhibits perception.

Common sense is contextual. In the Midwest, obviously everybody drives. (Scientifically, it’s incredibly dangerous.) In embedded device drivers, obviously you test your software thoroughly, and statically typed languages are superior. In web apps for ad campaigns, obviously that’s all a waste of time. Can we imagine situations where people have different perspectives?

If you imagine someone with a different perspective, then you can gain insight into your own perspective. You might get more accurate theories — be able to predict eclipses, which a lifetime of seeing the moon come up at night can’t prepare you for. You might see that your perspective isn’t true everywhere, and that you could move — maybe not to the moon, but to a city where there’s a community of queer or genderfluid people (and maybe even public transport). Or to a team that treats testing differently, where you can expand your experience.

But this kind of imagination takes work. Was it useful to the average human in 1600 to know that the Earth revolves around the sun? Heck, is it to the average person today? It isn’t directly relevant to my daily life, but I believe it by default, because everyone around me does. Most of the commonsense beliefs we grow up with aren’t worth questioning.

It takes effort, research, emotional energy and brainspace to adopt new frames. We can’t all do it for everything. Some of us learn that the gender binary is nonsense. Some of us learn many programming languages. Some of us study astronomy.

When you meet a person who still holds an outdated notion, it doesn’t mean they’re an idiot. It means they haven’t taken the effort to break this one yet. We can’t all understand everything. And most of the time we don’t need to. It’s a bonus when someone does break out of the default beliefs.

When you do gain new understanding and alter the beliefs you started with, it stays with you forever. Wisdom comes with age, or with accumulation of shattered assumptions.

Kepler understood this, and he worked to make it easier for people to understand that maybe Earth isn’t the only place in the universe, and therefore not the center of the universe. Thank you to people who share their stories, lowering the effort it takes me to realize that a belief that’s been good enough for this long, is not good enough for everyone.

Game science, programming science

In Pokémon Go last summer, a new feature popped up: bad guys. Some Pokéstops turned dark, and Team Rocket appears there, and they want to fight me. And they always win, dammit!

the Team Rocket Grunt gloats over his victory.

This much I can discover within the game. If I want to know more — like how to win the fights — I turn to the internet.

People on the internet have cataloged all the Pokémon. Each has a type, and each type is weak to attacks of certain other types. They’ve also noticed that when the Team Rocket Grunt boasts, they reveal something about the type of Pokémon they have. After they boast, I get to choose which of my Pokémon to fight their Pokémon with.

People observed these properties of the in-game world, and they reasoned about which Pokémon will be effective against which Team Rocket Grunts, and they’ve tested these guesses in-game, and they’ve posted the results online. I can use their analysis to increase my effectiveness in the world of Pokémon Go.

People take it even farther: they’ve deduced the hidden talent levels of individual Pokémon based on observable properties, and created calculators so that you can evaluate your Pokémon. There is systematic testing and measurement here, and logical deduction, and math.

This is science. People do science to describe a Nature that exists inside this game world. And then they publish their results.

It’s a different culture from the Science we learn in school, that institution/body of knowledge/discipline/people that studies Nature in the physical world. But it is science: it is people using observation, causal hypotheses, tests, and discussion to increase a shared body of knowledge about how a world works.

In software development, StackOverflow works this way too. Questions and answers on StackOverflow are scientific publications, sharing observations and knowledge and recommendations about a Nature that exists inside a particular programming language, tool, or library.

Every piece of software constructs its own little reality. Collaborating online, we study them together. We do science.

Nested learning loops at Netflix

Today in a keynote at Spring One, Tom Gianos from Netflix talked about their internal data platform. He listed several components, ending with quick mention of the “Insights Services” team, which studies how the platform is used inside Netflix. A team of people that learns about how internal teams use an internal platform to learn about whatever they’re doing. This is some higher-order learning going on.

It’s like, a bunch of teams are making shows for customers. They want to get better at that, so they need data about how the shows are being watched.

So, Netflix builds a data platform, and some teams work on that. The data platform helps the shows teams (and whatever other teams, I’m making this up) complete a feedback loop, so they can get better at making shows.

diagram: customers get shows from the show team; that interaction sends something to the data platform, which sends something to the shows team. That interaction (between the shows team and the data platform) sends something to the Insights Services team, which sends info to the data platform team.

Then the data platform teams want to make a better data platform, so an Insights Services team collects data about how the data platform itself is used. I’m betting they use the data platform for that. I also bet they talk to people on the shows teams. Then Insights Services closes that feedback loop with the data platform team, so that Netflix can get better at getting better at making shows.

Essential links in this loops include telemetry in all these platforms. The software that delivers shows to customers is emitting events. The data platform jobs are emitting events about what they’re doing and for whom.

When a human does a job, reporting what they’re doing is extra work for them. (Usually flight attendants write drink orders on paper, or keep them in memory. The other day I saw them entering orders into iPads. Guess which was faster.) In any human system, gathering information costs money, time, and customer service. In a software system, it’s a little extra network traffic. Woo.

Software systems give us the ability to study them. To really find out what’s going on, what was working, and what wasn’t. The Insights Services team, as part of the data platform organization, can form hypotheses and then test them, adding telemetry as needed. As a team with internal customers, they can talk to the humans to find out what they’re missing. They can get both the data they think they need, and a glimpse into everything else.

Software organizations are a beautiful opportunity for learning about systems. We can do science here: a kind of science where we don’t try to find universal laws, and instead try to find the forces at work in our local situation, learn them and then sometimes change them.

When we get better at getting better — wow. That adds up to some serious acceleration over time. With learning loops about learning loops, Netflix has impressive and growing advantages over competitors.

Moving beyond simplicity

We prefer simple models to complicated ones. Circles to ellipses, a single ancestor to a soup. But is that really because the simple explanation is more likely?

The value of keeping assumptions to a minimum is cognitive.

Philip Ball, The Tyranny of Simple Explanations

Simpler theories are more useful because we can think about them more easily. We can pass them from person to person.

But now we have software, which can encapsulate complicated theories almost as easily as simple ones. We can package them up into products and make use of them, without taking up brainspace with all those complications.

Maybe you still find simple models most likely in physics. Simple models are not accurate in biology – much less in human interactions.

In biology, everything going on had some reason it got that way (might be randomness) and many reasons that it stays that way. Most adaptations are exaptive — used for some purpose other than their original purpose. Most have many purposes, the proteins participate in multiple pathways, the fur is warm and also distinguishing, the brain anticipates danger and builds social structure.

In our own lives, every action has multiple stories. I’m playing this game to relax, I’m playing this game to avoid writing, I’m playing this game to learn from it.

We choose based on probability spaces from many models, stacked on top of each other. I buy this dress because I feel powerful in it, because I deserve it, because my date will like it, because I am sloppy with money. I value this relationship because I don’t know how to be alone, because they’re a kind person, because we belong together, because he reminds me of the father figure from my childhood.

This is right, this is healthy, to have all these stories. In real life, the simple explanation is never complete. Taking action for exactly one reason is unnatural. Like gaming a metric, it fails to account for the whole rest of the system.

Everything we do in a complex system has many effects, so it is right that we have many overlapping reasons. This doesn’t make life easy, only real.

When I started in software I loved that it was simple and predictable. Now I love that it is complex and messy, because that’s where I learn the important stuff.

Soft, or hard like mud

Soft skills are hard. “They take work to build and work to apply.”


The word “hard” describes sciences like physics and chemistry. It is confusing that “hard” can mean difficult, because these sciences aren’t more difficult than the “soft” ones like sociology and anthropology. They’re differently difficult.

The “hard” sciences are hard because they’re solid. We can stand on them. Physical laws are universal laws. They demand rigor, and rigor means proving that assertions apply in all cases, both through deduction and by checking against evidence.

The “soft” sciences are differently hard. They study humans systems, far too complex to make universal causal predictions. Conclusions about one culture or group are valid in some other groups and invalid in others. Rigor in complexity means studying which cases your assertions apply to. It means observing, discerning, and wallowing in context.

I describe my career progression from solving puzzles to growing products like this:

Correctness, puzzles, and the “hard” sciences are hard like rocks. Rock climbing is very technical. It takes a lot of skill and strength and hard work to climb. At the top of the cliff, you know you’ve achieved something specific.

Change, people, and the “soft” sciences are hard like mud. Like wading through goopy mud. Techniques can help, but each depends on the kind of mud. Strength helps, but pushing too hard can get you more stuck. It always helps to be okay with getting messy. When you finally reach that piece of relatively solid ground, the view is still a swamp.

Why would you want to wade through mud?

why does a fish want to swim through water?

People, interrelationships, change — this is our world. Sometimes we can carve out puzzles we can solve for real. The few universal laws we can find are priceless. But the rest of it — life is in the mud, in the deep context. The skills to navigate it are not easy. They are not satisfying in the same way, either. But they are how we find meaning, how we participate in a system bigger than our own self.

I am okay with getting messy.

Develop before define

First the loose thinking and the building up of a structure on unsound foundations and then the correction to stricter thinking and the substitutions a new underpinning beneath the already constructed mass.

Gregory Bateson on the advance of science. (From Steps to an Ecology of Mind)

This expresses a process I have observed in developers. We can develop something faster than we can define it.

That loose thinking includes the construction of loose code. We think with our fingers and eyes, keyboards and screens, editors and runtimes as well as with our brains. We try things, we draw them out or code them up. This eliminates a lot of impossible paths.

Then afterward, we shore up the useful ones. We put an API around it, error handling within, types throughout. We describe its interface and action in documentation.

Bateson grants permission to code loosely as an extension to thinking loosely, with the responsibility to return with rigor before we rope in other teams.

So do this, play in code the way we play in thought.

Then please realize that putting the foundations under it, defining the functionality so others can use it, is 10-100 times more time-consuming than your happy-path sketch.

Domain-specific laws

“there appear new laws and even new kinds of laws, which apply in the domain in question.”

David Bohm, quoted by Alicia Juarrero

He’s talking about the qualitative transformation that happens in a system when certain quantitative transition points are passed.

Qualitative transformation

I notice this when something that used to be a pain gets easier, sufficiently easier that I stop thinking about it and just use it. Like git log. There is such a thing as svn log but it’s so slow that I used it once ever in my years of svn. The crucial value in git log is that it’s so fast I can use it over and over again, each time tweaking the output.

  • git log
  • git log --oneline
  • git log --oneline | grep test
  • etc.

Now git log has way more functionality, because I can combine it with other shell commands, because it’s fast enough. This changes the system in more ways than “I use the commit log”: because I use the log, I make more commits with better messages. Now my system history is more informative than it used to be, all since the log command is faster.

The REPL has that effect in many languages. We try stuff all the time instead of thinking about it or looking it up, and as a result we learn faster, which changes the system.

Non-universal laws

I love the part about “laws, which apply in the domain in question.” There are laws of causality which are not universal, which apply only in specific contexts. The entire system history (including all its qualitative transformations) contribute to these contexts, so it’s very hard to generalize these laws even with conditions around them.

But can we study them? Can we observe the context-specific laws that apply on our own team, in our own symmathesy?

Can we each become scientists in the particular world we work in?

Which came first, the chicken or the egg?

a telling question.

This puzzler says something about our culture. It says we think in terms of causes that happen before their effects. That we don’t believe in reflexive causality.

In life, everything interesting is a circle. The mitochondria breaks down sugar, the proteins use the energy, they keep up the cell wall, the cell wall protect the mitochondria. The thriving of each one feeds the thriving of the others. I feel cranky, so I work with less patience, so I get way more errors, so I get more cranky. There aren’t many women in programming, women don’t picture themselves in programming, there are fewer women in programming. Poverty eats time and brainpower, leaving less for study and thinking, and stereotypes reinforce themselves. Suspect an employee is underperforming, and you can drive them to underperform. Or a nation’s economy is tight, citizens get paranoid and vote to increase barriers, their economy shrinks. A family helps each other, becomes a tighter and more successful unit, and helps each other even more.

Circles like these form systems. Enduring systems like a family, or short-lived whirlpools like me being cranky. Biologically, these emerge as organisms and ecosystems. As people, organizations and religions and markets and successful companies emerge from circles of mutual interdependence.

most causality is circular. Example: when I go to conferences, it means I learn cool stuff by talking to people, which means I think of interesting things to research and talk about (extra help from conversations with people I met), which means I get invited to speak (extra help for learning cool stuff at the speakers dinner), which means I go to conferences; circle repeats. Emergent property: Jessitron, international speaker.

Love has a circular causality. I find you interesting, that feels good, which makes you like me, which makes me more interesting, which feels good to me, so I like who I am with you, so I tell you sweet things. This cycles into a relationship.

There is no single cause of this phenomenon. That spark of compatibility when we met, we can point to a beginning in this case, to a “before.” but our whole life together wasn’t there. We built that moment by moment in the feedback loop of caring for each other.

“Which came first, the chicken or the egg?” is a fallacy: the fallacy of root cause. Of linear causality.

Linear causality happens, but in real life, it is the exception. An edge case. Everything interesting is a circle.

Special Relativity finally makes sense

Preface: I studied physics in college, yet there were parts of it that didn’t click with me. Special relativity with all its “a flashlight on a train” examples, that’s counterintuitive and hard. Yesterday in Surfaces & Essences, the authors explain Einstein’s thought process when he came up with it, and it makes sense this way. It’s also an interesting example about how genius can happen when we let go of what we know.

You know how when you’re on a plane, travelling smoothly at 600 mph, you can pour water the same way as when you’re standing still? If you throw a ball straight up, it falls back down into your hand.

This is called “Galilean Relativity.” It says that while you’re traveling at a constant velocity, mechanical experiments behave the same as at any other velocity (including standing still). It’s only changes in velocity — speeding up, slowing down, bumps and curves — that affect the motion of objects you have with you. This means there is no mechanical experiment you can perform to find out whether you’re flying at 600 mph or sitting on the tarmac. The water and the ball behave the same.

Einstein said, why should electromagnetic experiments be any different? Why should a lens, a magnet, or an electron care about your velocity? Your computer works the same in the air as on the ground, and there are a lot of electrons moving around in there.

The behavior of light passing through a lens or electricity moving through your processor is closely related to the constant speed of light. For your glasses and your computer to behave exactly the same in a moving plane, the speed of light inside the plane must be the same as the speed of light on the ground. The electrons in your computer move the same way, relative to you, at 600 mph or at a stop.

Speed is distance divided by time. The distance that water traveled between the pitcher and the cup looks different to you and to the watchtower, since the watchtower sees the plane moving horizontally. Same with the light from your monitor: it travels a different distance from the tower’s perspective than yours. If the distances are different, how can the speed be the same? Speed can be the same if time is different too.

Therefore time is stretched or squashed depending on velocity, so that the speed of light is the same from every perspective. No experiment can tell the difference, and electrons in your computer don’t care how fast you’re going.

Next time you sip a drink on your way across the Atlantic, appreciate time dilation. You may not notice the fraction of a second this trip adds to your life, but reliable electronics are important at every speed.

In this story, Einstein takes one belief about the world (Galilean Relativity) and broadens it. In doing so, he narrows  another belief about the world (consistent time). The result is a new, self-consistent worldview. This worldview has proven useful.

It pays to be specific about how we know something is true, and the range of experience we can be sure about.