A product manager friend once told me that in his line of work he thinks a lot about funnels — that’s usually how growth is modeled — and he’d begun looking at other aspects of life through a similar lens.
I’ve been working full time as an engineer for almost a year now, and it’s gotten me wondering how that’s shaped my own views. If product managers think in funnels, what do engineers think in terms of?
I’ve narrowed my own thought patterns down to three major concepts: optimizations, failure modes, and methodical searching. In this post I’ll just talk about the first two, as the third is a whole beast of its own.
There is never a silver bullet that solves every possible problem. Instead you have to choose which problems are the most pressing and optimize for solving just those, while neglecting (or less optimally solving) the others.
If you want your algorithm to run faster, usually you’ll need to use more memory. If you want to decrease data loss, you’ll need to store multiple copies of the same data, which increases complexity as well as storage costs. It’s important to keep in mind that it’s almost always impossible to optimize for everything; something has to give.
Outside of work, time management is a huge problem for me. I don’t have enough waking hours for everything I want to do, so I have to evaluate what I want most. If I want to meet more new people, then I have less time to spend with my existing friends. Or if I spend large portions of time on both, then I have less time for self improvement.
There are some micro-optimizations I could do, like doing self improvement activities with friends. But in the end, it’s still not possible to achieve it all. So which of these desires do I care the most about?
To optimize, when I come to a crossroad for how to spend my time, I try to quantify as best as I can exactly what I’d give up and what I’d gain in doing each activity. When I weigh my options and remind myself that there’s not a perfect solution, it makes it much easier to come to terms with my decision.
Whenever we’re designing a system, we have to consider what could be potential bottlenecks and points of failure down the line. And if a failure does occur, how would the system react?
Imagine a social media site stored every users content on a separate computer. If a user’s post when viral, then that one computer would likely get overwhelmed and crash. What if we stored several copies of the same post across different computers in the same location? What could fail then, and when? Maybe during a power outage?
It’s crucial to poke holes in the system and preemptively think about potential problems and how to handle them, so that when something does go awry, the consequences are manageable.
Looking at life, I often think to myself: realistically what are all the ways this could go wrong? Thinking like this allows me to address issues before they occur, and has helped me rationalize and overcome many of my fears.
When I was at a stage in my life where I had anxiety in talking to new people, part of what helped me overcome it was thinking about the failure cases and realizing how inconsequential they actually were. The other person isn’t interested in talking, so they politely decline to partake? You at least gave it a shot, no feelings were hurt, and you move on with your life without regrets. They say something mean, or they flat out ignore you? You feel briefly humiliated, but within moments neither of you will think about each other again and your lives move on. Is that really so bad?
Overall, this mindset has helped me justify some risks, and convinced me to not take certain other ones. But always considering failure modes can have its own failure modes! If a friend tells me about their upcoming plans, my first reaction is to try and find gaps in it, to help them think through all the scenarios. This sometimes appears as if I’m unsupportive and pessimistic, and may not have been what they were looking for. I’m still working on figuring out when to turn this off!
What About You?
I’m sure none of the mindsets I’ve described above are unique to engineering. I suspect many careers would mold us in similar ways, but the vocabulary for talking about the mindsets may be different.
I’m intrigued to find out what commonalities there are among different disciplines’ ways of thinking, and I’m especially curious about what may be radically different.
So how do you think your profession has changed how you think? I’d love to hear your responses!