Admit your struggles, help others

My worst grades in K-12 and university were all for math classes. Algebra, trig, calc… they all made me feel stupid to a point of hopelessness. I got the basics, but as soon as things started getting abstract, I lost my grip.

I tried and tried and tried, but none of it clicked into place.

I’ve never been one to give up easily on solving problems, but I gave up on math and that steered me away from scientific fields and programming, even though I had interests in both. I got excited about the prospect of working in physics or engineering, but a little voice would always echo out from the corner of my mind telling me:

“You can’t, because you don’t have the math for it, because you’re stupid.”

I never stopped reading about science though. If I couldn’t be a physicist, I would enjoy what I could from the periphery. Past articles and topical books, I also read biographies of scientists, one of which ended up changing my life.

Richard Feynman

I was well into my 20s when I picked up a copy of “Surely You’re Joking, Mr. Feynman!“, which is actually more of a collection of transcribed stories than a biography. Feynman was an interesting personality, so different from any other scientist I’d read about. I snapped up every book I could find about him.

He worked on the Manhattan Project and built the foundation for a wide swath of modern quantum physics. He also played bongos, experimented with LSD, and sat around strip clubs drawing sketches of dancers.

Past all that, his approach to math was completely new to me. He intuited and guesstimated, refining once he was in range of the answer. It was a weirdly physical approach to math that lined up with the way my grandfather (a country carpenter with a 5th grade education) worked out building a house.

I focused my reading and found out it’s the way a lot of mathematicians and physicists approach math, I’d just never put it together before.  The New Math I grew up on and that was hammered into my head simply didn’t fit the way my brain worked.

Feynman’s method of estimation and refinement did.

So happy I could cry

Suddenly, a new world felt open to me. I threw myself into Khan Academy‘s math courses, starting with the 1st grade level and blazing through each into college level calculus.

“It makes sense! It makes sense! It makes sense!!!!!!!”

With my new toolset, I could make sense of all of it and swelled with a new confidence. I started doing math problems for fun, filling notebooks with tiny scribbled numbers.

I also dove into programming, pivoting my career as a sysadmin towards automation and orchestration. It was frustrating at first, not because it was difficult, but because learning to program didn’t require nearly the level of math I thought I needed to get started. Fear of math had been an unnecessary roadblock.

Sharing your struggles is important

No one likes to admit they had a hard time learning something, that they struggled and felt dumb or less-than. If you care about helping others though, sharing those experiences is important.

For much of my life, I thought understanding math was binary, you either got it or you didn’t, because that’s what I saw in everyone around me. It’s what I heard from math teachers, some of whom got frustrated by my lack of understanding.

That all changed when I learned people I admired faced similar challenges and developed workarounds that worked for the way they thought. I’m no mathemagician, but gaining hope from knowing that I wasn’t alone allowed me to build a competency I would have otherwise gone my entire life without having.

Right now, there’s someone out there who is struggling to understand some concept that you also struggled with. They’re feeling hopeless and dumb. They don’t just need a numbered “how-to” or explainer. They need a preamble that says “Hey, I had a hard time with this, and this is how I learned it.”, not only because your method might work for them too, but because exposing your vulnerability opens the doors of possibility for them.

If you’ve never written anything or put yourself out in the open in a similar way because you think “There’s already 1000 blog posts explaining this.” or “Who cares about my perspective?” Know this: Your perspective matters. Your struggles matter. They may not matter to everyone, but they’ll impact someone.

So write and share and be honest. Sitting in a high tower, pretending that everything you know came easily helps no one. There’s someone out there who will only ever understand data structures or synchronicity or whatever it is you know (particularly if you struggled with the idea) unless you explain it to them the way you understand it.

Empathy in Dev and Ops

You read through the code. You read it again to make sure you understand what it’s doing. Your left eye starts twitching. You read the code a third time.

“WTF was wrong with the person who wrote this?”

I hate how often I react this way. It’s a quick default that’s hard to reset — immediate annoyance as if the developer or engineer responsible for writing whatever I’ve come across was scattering landmines.

It’s easy to shit on the people who came before you. They’re usually not around to defend themselves or provide context. It’s a common (but terrible) way to prop oneself up and display an illusion of competence. “Look how much I know, and they didn’t!”

It’s much harder to calm down, empathize, and think things through. An initial reaction of “WTF?!” is entirely valid (You’re gonna feel what you’re gonna feel.), but getting stuck on the frustration and not going further is unfair to your predecessors and causes you to miss out on learning.

How? vs. Why?

“How” a problem was solved/band-aided/kicked-down-the-road is usually the root of those frustrations, but the next step is thinking through the “Why” of the solution, which is often the source of useful information.

The code might be stupid, but there’s usually a reason. Maybe:

  • Something stupid upstream brought its stupid with it. Alternatively, something stupid downstream needed more stupid.
  • The dev/engineer was told to do it that way.
  • The dev/engineer was getting pulled in 1000 different directions and needed to make a fast band-aid.
  • The dev/engineer was doing the best they knew how.
  • It’s actually not stupid. You just think you know more than you do.

That doesn’t rule out laziness or malice, but they’re much rarer and shouldn’t be the default assumption. When we run across goofy looking code and configs, we need to respect the constraints and context the person who wrote them faced.

Note: That the person might actually be an idiot is a real, intractable constraint. How would you have fixed that? Yelled “Be smarter!” at them?

Thinking through and learning the “whys” that caused the stupid will help you understand the context of the problem you’re currently facing. You’ll learn about not only technical pitfalls, but cultural ones as well. A lot of the stupid that shows up in code has nothing to do with the technical competence of the person who wrote it and everything to do with their manager or the company at large.

Grace and placing blame

How many times has the past version of you done something stupid that harmed future you? How many times have you looked at something you made a year ago and thought “What was I thinking?”

Like any skill, if you’re not embarrassed by some of the code and configs you’ve written in the past you’re 1.) an egotistical monster, and 2.) not getting better. Knowing that, allow some grace for yourself and the people who came before you.

When DevOps practitioners talk about establishing culture, one of the big elements they discuss is creating trust by not focusing on placing blame. That idea doesn’t just apply to your immediate co-workers. It applies to those in the past as well. Trashing prior devs/engineers can have the same effect as trashing the people you currently work with, it just adds a caveat to the way the team thinks about trust.

“Well, they’re not trying to throw me under the bus right now, but…”

I can’t say I’ve mastered this skill yet. Sometimes, in moments of frustration, I flat out suck at it. But I’m trying and that’s kind of the crux to all this. Everyone is trying, no one has arrived, and the more we empathize with the unknown constraints of those who came before us, the better off we’ll be.