The Anna Karenina Principle
Happy families are all alike; every unhappy family is unhappy in its own way.
Anna Karenina by Leo Tolstoy
In his brilliant book
Guns, Germs and Steel, Jared Diamond coins the phrase ‘The Anna Karenina Principle’ to explain why so few wild animals have been successfully domesticated throughout history, as
a deficiency in any one of a great number of factors can render a species undomesticable. Therefore all successfully domesticated species are not so because of a particular positive trait, but because of a lack of any number of possible negative traits. 1
Anyone who has worked for a few startups will realise that there is a striking similarity with the success or failure of small companies: that all successful companies are alike, every unsuccessful company fails in its own unique way, due to one of a great number of factors that they need to achieve successfully. 2
As far as it goes, it’s a useful enough principle, although the only useful takeaway is that all startups have to do all of the key basics reasonably well. But where it gets interesting is when you realise that it can also be applied to teams and the dynamics of teams.
Every team is different. Each has a different mix of personalities, individual strengths and weaknesses, different external stresses and expections, etc., etc..
Which is where Agile comes in…
The Anna Karenina Principle - Reversed
Agile is not a one-size-fits all methodology. I view it as a toolbox - a grab-bag if you like - of risk mitigation strategies, from which you should pick the bits that you need, that are relevant to the risks and issues faced by your team.
“Why view Agile from the viewpoint of risk reduction, isn’t that a negative way of looking at it?” I hear you ask. Well, at its heart, writing software is pretty easy for a competent developer - many applications have been created by hackers sat in their bedrooms, following no process at all. Where development gets complex is once it meets the real world, meeting users’ requirements, expectations of those paying the bills, scaling into teams. Once these things happen, an approach of just writing the software becomes riddled with risks.
However the risks faced by team vary with every project - and can even change over the course of a project, with changes to personnel or the political landscape surrounding the project.
Every project faces unique and different challenges. So each successful Agile project needs to evaluate (and continuously re-evaluate) where where it is weak, and where the threats to it lie. The team should therefore pick the parts of Agile that mitigate these risks.
In other words, all successful projects look the same because they use different approaches. A one-size-fits-all approach to Agile just will not work.
So The Reverse Anna Karenina Principle reads as follows:
all successful teams look alike because they understand their uniqueness and correct for it, every unsuccessful team fails in its own unique way, because it failed to understand its uniqueness
Interestingly, Peter Thiel, cited in the same Wikipedia article, manages to apply the analogy the other way around, classifying the failures as all the same (which you can force them to be, if you take a high enough level of abstraction, but it’s a very leaky abstraction). ↩