“Yeah, it’s a good start... but I don’t think it’s the right approach.”
The year is 2011, it’s my first programming job, and the look in my boss’s face expressed clearly that he was not pleased with my work. He leaned across my desk in the living room of the Palo Alto home where we lived and worked, and gestured loosely towards a region of code on my screen.
“See how you have all those comments explaining this complicated function? That’s a code smell. Ideally you can re-write this so that the code is more self-explanatory and easier to work with.”
By that point I wasn’t even listening. All I could think about was that he said my code was smelly! What a weird turn of phrase!
“Code smells?”, I asked, bewildered.
“Oh, right! It’s a thing!”, he said, explaining that “code smell” is a term that programmers use to talk about signs of design flaws in source code. The idea is that it’s not exactly a bug, but it indicates a problem. It’s like when you step in dog poop — the actual problem is located under your shoe, but it’s your nose that detects the first sign that something has gone wrong. (I should know, I just got a puppy.)
And with that, my boss gave the table a solid pat, and wished me well. I chuckled and got back to work. And then the idea of code smells sat dormant in my brain for nine years.
Until today, when I realized that strategies can have smells too.
In the very first essay on Divinations, I said:
Every strategy is really just a theory: “We bet if we do x, then y will happen.”
Often, those theories are wrong. And a key skill every entrepreneur needs is the ability to smell failure before it’s too late.
Of course, this is more art than science. It requires deep domain knowledge and superior judgment. But perhaps, like in programming, there are certain patterns that recur across many businesses that are worth documenting. We can make memes out of them, that way they can be detected and corrected more easily. This kind of cultural knowledge is what enabled my boss to see the connection between my convoluted code and the proliferation of explanatory comments. Programmers have built decades of formal and informal knowledge on code smells. Perhaps we can build a similar body of knowledge around strategy.
Below I’ve collected as many good examples as I could think of, but I’d love to hear from you. Leave a comment with strategy smells that you’ve seen in the wild! I’ll de-duplicate and edit for clarity, and update the body of this post as they roll in (with attribution, of course).
An Incomplete Compendium of Known Strategy Smells
When a user-generated content platform has to incentivize users to create content with upfront cash payments, it’s a problem. Giving creators a percentage of revenue generated from their content after the fact is usually fine, but upfront payments are a lot riskier, and usually a sign that the platform doesn’t offer creators anything unique.
When an enterprise software company has to write a lot of non-reusable custom code to make every sale, it’s often a sign that they haven’t identified a problem yet. Of course, some businesses write lots of custom code for each customer by design (Palantir, for example) but even then, their “forward-deployed engineers” are leveraging a sophisticated internal infrastructure, and the custom work is built into the pricing model.
When a media company learns to use a platform to drive rapid audience growth, but the users have little loyalty to the media company, it’s a sign that the media company is vulnerable to change in the platform’s strategy.
When a DTC brand spends more to acquire users than they make back in the first purchase, and keeps launching new accessory products to try and increase repeat purchases and AOV, it’s a sign that there’s a problem with the core unit economics that should not be ignored.
When a business with a low cost strategy experiences high customer churn, and consistently hears that the product quality is not good enough, it’s a sign that they don’t have any economic leverage to execute a low cost strategy (e.g. economies of scale) and they are simply degrading the user experience.
When a software company that markets itself as the most customizable in its category experiences high customer churn and is consistently inundated with feature requests, it’s a sign they need to narrow their focus and pick a specific value proposition, rather than a catch-all like customizability.
Ok! That’s what I’ve got.
What strategy smells do you know of?