Thought and Intention

A post on slowing down and thinking things through

no code

soapbox

Move Fast and Break Things

This is a persistent and pervasive idea in tech, one that was an early Facebook/Meta motto coined by ol’ Zuckerberg, I can’t help but wonder how much damage such a motto (at this point, a platitude) enthusiastically embraced without context or forethought has done to the industry and to the world at large.

The Law of Unintended Consequences

Newton’s third law states that, “For every action, there is an equal and opposite reaction”.

Note: this is in the context of the laws of motion, but it seems to hold true virtually everywhere else too, and like all the best bits of science and physics, it is easy to observe.

Kick a ball and it’ll rebound off of your foot; stay up too late to binge-watch a new show and you’ll need a few extra helpings of caffeine to make it through the day; ship code that was quickly cobbled together (and better yet, skip tests ‘n’ lints in the name of “speed”) and you’ll probably have to field an incident and write up a post-mortem.

Easy, observable, you can probably anticipate the equal and opposite reaction to any given action.

The law of unintended consequences sorta upends this anticipation. It states something along the lines of, “for every action people take, there are unforeseen and unanticipated outcomes”.

And this tends to scale or hold more true the bigger and/or more complex the context that an action takes place in. The classic example is government; a law gets made to subsidize and make it easier to break into the light-bulb making industry and suddenly all the candlemakers are out on the street because they can’t compete. Or something.

The point is that while, true, the outcomes after the fact are observable, some will be unpredictable (and therefore unintended).

Complexity is inherent in software development. We’ve thrown up abstractions and linters and methodologies all in the name of taming this complexity, but we made the rocks think man — there’s no principle or pattern we can throw at this problem space that’ll make it intrinsically not-complex.

It is systems on systems on abstractions of other systems — turtles all the way down.

And so, it is surprising how a motto such as “Move fast and break things” emerged in the industry in the first place.

Move Fast and Break Things

The gist and vibe of the motto is grokkable — don’t let yourself be constrained by checks or market research or product-thinking; it is more important to “disrupt the industry” or gain “first mover advantage”. But given a little thought, this immediately smacks of prioritizing short-term gains for long-term losses. Folks have shown that being a first mover is more prone to failure anyway. It is incredibly risky.

The motto falls completely flat without context. How fast should I move? What things can I break? Are there things I can’t break? And this is me trying to avoid being pedantic and engage in a semantic argument. The motto/idea is devoid of any sort of good ‘n’ tangible meaning without some sort of context.

It’s hot air.

But worse than that, it’s hot air that people subscribe to. Now to be clear, there are obvious benefits from being nimble; there are salient and tangible advantages to not being precious about things that don’t matter or don’t materially impact the development process or a product’s bottom line. More often than not, however, a company has to slow down, think, and define or discover those particulars for their particular product/org/problem space. It isn’t a one ‘n’ done exercise either — the particulars could change with time and tide, so too, then, should the items that go in the “okay to break” bin.

Fail Fast

Another favorite platitude of mine (and I’m being honest here, I have held this near and dear to my heart for a while) is “Fail Fast”. Now the reason it’s a favorite of mine is because I have internalized the context necessary to make it work for me. There are endless ways one can “fail fast” and most of them aren’t great; failing fast doesn’t mean failing big, or failing repeatedly (without changing parameters), nor is the goal necessarily failure itself. Rather, the interpretation I have for failing fast is something like “Hey, what’s the quickest, cheapest, least effort, and most efficient way you can prove out an idea or experiment?”. It’s about trying something innovative or new or different, but without a bunch of hullabaloo.

Specifically in regards to software, your nascent idea isn’t gonna need tests or observability off the bat — mind you, this doesn’t mean your idea is production-ready either. Please, please, please write tests and bake in some security and observability best practices prior to getting it in front of people. But imagine the cost of validating the idea if you had to add all the bells and whistles and production-safety measures… and the idea turned out to be no good? That’s crazy painful.

What “fail fast” tries to communicate is this idea of leaning into cheap, simple, easy to validate prototypes. If your idea takes off, incredible; if you happen to fail? Also great! You found a dead-end at minimal effort and cost.

And yet, without those paragraphs of context, it’s hard for folks without battle-tested experience or early-career engineers to really understand the deeper meaning. We lean into these platitudes as a way to shortcut a ton of prior knowledge or context, maybe in an attempt to be pithy or brief?

This shortcut results in a sort of glass ornament of words and meaning — pretty, but ultimately fragile and empty.

Leaning Into Meaning

What’s the antidote? How do we not fall victim to communicating or internalizing trifles?

Be Thoughtful (and Mindful)

Slow down. Let your brain do what it was intended to do (when not in autopilot) and think. Think things through. Go for a walk and ponder. By no means am I saying you should ruminate; you’re treading the same old ground there and hurting yourself in the process. Rather, break free from the confines of the grooves of your brain. Balance being present and fully in the here-and-now with engaged problem solving and thinking.

The idea here is that, if thoughtfulness/mindfulness is not a regular practice, the mind tends to slip into a mode of pattern-matching and automation. You fall into the same old behavior and thought patterns. This is probably fine for eating and breathing and other basic reptile-brain tasks, but it isn’t fine for thinking about or communicating complex ideas; it doesn’t lead to creativity, it doesn’t lead to fulfillment or even joy and contentment.

Auto-brain is great for keeping you alive, but is devoid of thrive.

Be Intentional

Not only should you slow down and think, you gotta slow down before (and maybe as) you act. This isn’t to say don’t treasure speed — or better yet, velocity, i.e speed with a vector (because running really fast in a circle doesn’t exactly get you anywhere) — rather, this is about avoiding reactivity. Intentional action is proactive; all actions in a complex system fall victim to unintended consequences, that’s an unavoidable fact. However, by being intentional, you can minimize the number of unknown or unintended consequences.

Speed with thought and intention come as the skills are practiced. There was yet-another-platitude I heard at a place I worked at for a while; folks loved to say “slow is smooth, and smooth is fast”. Without trying to pack that bad boy full of context, I think it can be adapted into something like “By being thoughtful and intentional, you can anticipate and smooth out a lot of the twists and turns and bumps in the road, letting you move faster”.

Early on in my life and career I relished flying by the seat of my pants. Quick thinking, good reflexes, and being able to roll with the punches made it so I didn’t have to be either thoughtful or intentional. Things mostly worked out okay. But when a plan went off the rails in such a way that I couldn’t react, they really went off the rails. And the mess usually ended up being way bigger and messier than I wanted to (or could) deal with. I’ve been lucky in life, but luck is fickle and runs out at the worst moments.

Better if I had been intentional, thoughtful, and lucky. Folks will sometimes give you the grace to take back words, but it’s harder to get forgiveness for unintended or thoughtless action.

Say What You Mean

Finally, say what you mean. No, actually say what you mean. You can put in as much tact as you need into an email or conversation, but you should absolutely and directly communicate your meaning and intention in order to avoid misunderstanding.

I’m a big believer in long-form writing for this reason. The medium itself forces me to slow down, think, find the right word to put to paper and to transact to those around me. This is way harder when having a conversation or talking to folks face-to-face, but thought and intention come in clutch again; don’t say the first thing that comes to mind, say what you mean. Again, slow down. Ask for a few seconds if you need them. Don’t be afraid of thoughtful silences or pauses.

Words said in haste can easily slip out of bounds.