Perfect! I found the blog post you were looking for. It's "Climbing the Wrong Hill" by Chris Dixon (not from mathewanders.com), published in September 2009. This is the exact post that uses the mountain peak and local maxima metaphor you described.
The Core Metaphor:
Chris Dixon uses a computer science concept called "hill climbing" to explain why smart, ambitious people often get stuck pursuing the wrong career path. Here's how he explains it:[1]
Dixon describes a classic computer science problem: Imagine you're dropped at a random spot on hilly terrain where you can only see a few feet in each direction due to fog. Your goal is to reach the highest hill.
The simplest algorithm is to always take a step in the direction that takes you higher. The risk with this approach is that if you start near a lower hill, you'll end up at the top of that lower hill—not the top of the tallest hill. This is exactly the concept you mentioned: you think you're on the highest mountain because you can't see the higher peaks from where you are.[1]
Dixon tells the story of a brilliant young banker who wants to leave Wall Street for tech startups but is tempted to stay because his bosses offer him a raise and more responsibility. Even though he knows he wants to work in tech in 10 years, he's being lured by the next step up on his current hill.[1]
The problem, as Dixon explains, is that "there is a natural human tendency to make the next step an upward one." Ambitious people systematically overvalue near-term rewards over long-term goals. Their ambition actually makes it harder to leave the current hill, even when they can clearly see a higher hill elsewhere.[1]
Dixon suggests learning from computer science algorithms that solve this problem:
- Add randomness early on - Meander in your walk, especially early in your career
- Drop yourself into new terrains - Randomly explore different parts of the landscape
- Once you find the highest hill - Don't waste any more time on the current hill, no matter how appealing the next step up might appear[1]
This 2009 blog post has become one of the most referenced pieces in startup and career advice literature. The metaphor resonates because it perfectly captures a common human dilemma: we optimize for local improvements while missing the global maximum.[2][3][4][5][6][1]
As one analysis put it: "The problem is not differentiating between local maxima and global maxima... The problem is getting down from whatever hill we're on".[3]
The original blog post is at: https://cdixon.org/2009/09/19/climbing-the-wrong-hill
This metaphor has since been widely adopted in discussions about optimization algorithms, machine learning (where it's called the "local maxima problem"), career planning, and life decisions.[7][8][9]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
The article explores how software development teams can get stuck at "local maxima"—peaks of productivity that feel optimal but aren't the best possible—and how to escape them to reach higher levels of performance .
The Mathematical Concept
A local maximum represents the highest point within a limited area, while a global maximum is the absolute peak across all possibilities . In software development, teams can reach a local maximum where their current practices, tools, and approaches are working well, but better alternatives exist elsewhere that they haven't discovered .
Dave Thomas's Perspective
The author draws on insights from Dave Thomas, co-author of The Pragmatic Programmer, who emphasizes the value of learning new programming paradigms and languages . Thomas explains that exploring different approaches like Elixir creates "a-ha moments" by forcing developers to think differently, even if their current methods are working . He sees recognizing suboptimal practices not as frustration but as an opportunity to improve the entire field of software development .
Breaking Free
Signs you're in a local maximum include stable performance without improvement . To escape, the article suggests experimenting with different technologies, trying pair or mob programming, exploring functional versus object-oriented languages, experimenting with test-driven development approaches, and using different operating systems or data stores . Even unsuccessful experiments expand thinking and expose teams to potentially superior approaches .