One concept I keep returning to is that of local maxima. If you recall, local maxima occurs when a graph swells to a particular point, dips, and then ascends to a prior point. It’s a recurring problem in optimization - naieve optimization will always reach the local maximum and stop. There are many techniques to avoid this - picking a random starting point, jolting forward when you think you’re at an apex, and retrying, among others.

But we’re talking about software. Software delivery consists of layers of abstraction - put simply, the individual, the team, and the company.

Team Over Self Link to heading

We’ve probably been a part of failed teams before. It’s incredibly common. Everyone is out for themselves, seeking to optimize their own small area of the company - whether it’s a fiefdom or a workday. But this is an extreme example - a simpler (more insidious) version occurs with siloing.

In any case, everyone is focused on their individual circumstances and work. However, work depends on other work. Work has to be organized, integrated, and communicated. The typical failure starts with ignoring these -re and post steps, only shoveling more of the intermediate. This leads to buildups of work, and swings of progress.

We can also view a “local minimum” (probably an absolute minimum) - endless discussion, and decision by consensus. Lots of alignment, little action.

The solution? Leave the local maximum. Each individual has to optimize less for themselves, and more for others. This is uncomfortable for many people! They have to shift from doing work to doing “work” (because helping others isn’t individual productive activity).

It requires education to get people to focus to focus on larger group productivity rather than just individual output.

Customers First Link to heading

This then extrapolates to multiple layers of abstraction. It’s easy to get lost in the layers, if you don’t have a north star to guide you. That north star, to me, is the Customer. Note the Capital C! This isn’t a customer, but it’s closely related the customers. You could think of the Customer as a sum of your ICPs - the people that you’re really trying to serve.

Back to local maxima, it’s easy to stop serving the Customer and start serving the customer. This is a dilemma I’ve run into time and time again - a customer who’s far from ideal, who doesn’t really want to be a customer, but one who is served with full energy, to the detriment of other more aligned and engaged customers. You get trapped with feedback from a non-ideal customer, and have to jolt yourself out of the maxima to really grow and reach product market fit.

This is why Customers First is so important vs Customer First. You need to have multiple customers, so you have the ability to fire them (and so they can fire you, without you losing the company). Not everyone needs or wants to be a Customer. There will be people you serve, and people you just do business with. That’s where the Ideal in ICP really comes in.

Yes, sometimes you have to work with what business you have. But the alignment towards the Customer, allows you to learn what work needs to be done and what work should not be done. Optimizing for customers who aren’t ideal can box you out of long term growth.

It’s a painful lesson that sometimes needs learning and relearning.