A few hundred years ago, we decided that circular causality was a logical fallacy. All causes are linear. If something moves, then something else pushed it. If you want to see why, you have to look smaller; all forces derive from microscopic forces.

Yet as a human, I see circular causality everywhere.

“Enter your concrete goals for the next six months.” This software is supposed to help your career. Seriously?

If the best I can do is something I could name six months ago, I am not learning anything. If I hit some metric, what did I ignore or sacrifice to get there?

Knowledge work is about learning. Maybe I set a concrete goal for today “Complete these three tasks” — chances are good I’ll learn about a fourth one that is more valuable than any of those. If I’m good at my job, I’ll do that, and let some of the three languish. Is that gonna get me a mediocre review at the end of the period? …

The other day, I heard a story about a leadership retreat where the goal was to agree upon shared values. They held a vote, and lo, there was an even split between all the values. The group could not agree on which ones represented the company.

This makes sense. Our values are part of our identity. You can’t compromise on your values! That would make you a bad person!

How can we come together, then? Must we fire half the leadership and replace them with people willing to espouse the same values as the remaining half? …

I’ve long preferred to work on teams that base cooperation on shared values like inclusiveness, respect, and curiosity. Teams where everyone feels valued at all times, both as a coworker and as a human.

Yet, the phrase “shared values” kinda gives me the willies. It implies that our compatibility as teammates comes from deep-seated beliefs. Which implies shared culture or even religion. I want to collaborate with people who are more different from me than that.

A teammate is anyone whose success is entwined with mine. We succeed
together and fail together. This means we have a shared goal: a mutual purpose.

Symmathecist: (sim-MATH-uh-sist) an active participant in a symmathesy.

A symmathesy (sim-MATH-uh-see, coined by Nora Bateson) is a learning system made of learning parts. Software teams are each a symmathesy, composed of the people on the team, the running software, and all their tools.

The people on the team learn from each other and from the running software (exceptions it throws, data it saves). The software learns from us, because we change it. Our tools learn from us as we implement them or build in them (queries, dashboards, scripts, automations).

Image for post
Image for post

This flow of mutual learning means the system is never the same. It is always changing, and its participants are always changing. …

or, a week in the life of a programmer

Lately I’m working on our documentation. We write it in markdown, turn it into a web site, and then serve it from s3. To turn it into a web site, we use mkdocs and the material theme for mkdocs. Mkdocs is written in Python. Then we test it with HtmlProofer, which is in Ruby. Okay.

The objective

A week ago, I set out to add an “Edit on GitHub” link to each of our pages.

Image for post
Image for post
the “Edit on GitHub” link looks like a pencil.

That’s built-in functionality in mkdocs; define a repo_url and an edit_uri in mkdocs.yml and it should just work. It didn’t work right away (although now I wonder whether I just missed the little pencil symbol because I was looking for text). Before I dug into figuring out why, I upgraded mkdocs and material because we were two breaking versions behind; the latest is 3.0.4 and we were on 1.0.4. …

Software Development has moved forward a lot recently. Both on the code side and the runtime side, we’ve had huge advances.

Image for post
Image for post
we’ve seen more advances in writing code and in running it, than in the bridge from written to running

We have way better languages and frameworks for writing applications now. For instance, JavaScript, JQuery, and modern frameworks like React were all big steps. Or you could look at Java, Spring, and now Spring Boot. For source control: cvs, git, and now GitHub changed the way we work.

Then on the runtime side, we don’t have to deploy to hardware anymore. Virtual machines were a step, and then the cloud, and now Kubernetes is a big deal. Kubernetes is a big deal because it’s higher level of abstraction, where developers can work in the language of the domain of software. …

What makes one system more organized than another? More developed, more … civilized? How can we measure advancement? In Ecology, the Ascendent Perspective, Robert Ulanowicz has an answer. Along the way, he answers even bigger questions, like: how do we reconcile the inexorable increase in entropy with the constant growth, learning, and making going on around us?

Concept: total system throughput

Take an ecosystem, or an economy. We can measure the size (magnitude) of the system by counting its activity. In the economy, this is GDP: how much money changes hands throughout the year? The same dollar might be spent over and over, and it counts toward GDP every time. In an ecosystem, we count carbon exchanges between species and stocks (like detritus on the ground). Or we count nitrogen, or phosphorus, or calories — whichever is the limiting factor for that system. …

It’s about ecology, complexity, and a considerable bit of philosophy. Very readable. Unfortunately only available in dead-tree.

“Life itself cannot exist in a wholly deterministic world!”

Concept: auto-catalytic loops

This book explains how evolution works. Evolution works by “try shit and see what happens” — perturb and test, quickly discard the not-better.

Competition is one method for test. It is a weak one, unsatisfying to explain (to me) how life got so interesting so fast. And keeps getting more and more interesting, faster than fits the time scale of generations.

Auto-catalytic loops are the next selection method, as described here. A water-plant’s leaves provide surface for bacteria. The water-plant even encourages the bacteria to grow there, why? Tiny zooplankton come to eat the bacteria, and are captured by the plant. The three form an auto-catalytic loop of helping each other; they can’t survive nearly as well alone. Once a loop like this forms, any organism that contributes to the loop, contributes to itself. It is selected for on its own merit, which is increased by other members of the loop: the loop advantages all its members. The loop becomes its own tiny system and emerges as a thing, its own evolutionary power. If another organism can serve the purpose of the zooplankton better, the loop will adopt that one and the zooplankton will miss out, maybe die out. …

Yesterday I was ready to get some changes into master, so I merged in the latest and opened a PR. But NO, the build on my pull request broke.
The error was:

ERROR: (jsdoc-format) /long/path/to/file.ts[52, 1]: asterisks in jsdoc must be aligned
ERROR: (jsdoc-format) /long/path/to/file.ts[53, 1]: asterisks in jsdoc must be aligned
ERROR: (jsdoc-format) /long/path/to/file.ts[54, 1]: asterisks in jsdoc must be aligned
ERROR: (jsdoc-format) /long/path/to/file.ts[55, 1]: asterisks in jsdoc must be aligned
… fifty more like that …

gah! someone added more tslint rules, and this one doesn’t have an automatic fix. …


Jessica Kerr

Symmathecist, developer, speaker, mother, crazy nut. Atomist. Learning and growing. All tweets are mine, licensed CC0. she/her

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store