What makes a product, project, or application become popular? People talk a lot about attributes such as stickiness, virality, addictive qualities, and gamification.
I don’t pretend to have a universal answer, but many of the successful things I’ve been involved with worked well because they were just enough better for people to care a lot.
I could cite a lot of examples from my personal career and work, but one in particular stands out to me because it has evolved a few times and has found more success each time for different reasons. I’m referring to the book High Performance MySQL, which is very successful by technical book standards.
The first edition was a hit for a few reasons. First, it was timely; people wanted the book because there was a lot of demand for and interest in using MySQL for the explosion of Web 2.0. Secondly, the MySQL database was pretty rudimentary, with a lot of limitations and performance issues, and Jeremy had experience using it at scale where performance mattered. Thirdly, in my opinion the audience was largely uneducated about relational databases. This was not a book for Oracle experts learning MySQL; it was a book for PHP programmers who didn’t know much about database fundamentals. Jeremy and Derek hit a few sweet spots. The book wasn’t a masterpiece, but it was five out of five stars for its audiences and their needs, because the alternative was a couple of blog posts here and there, plus the MySQL documentation.
The second edition was even more popular than the first. MySQL had spread far beyond the web use case, although that was still core, and was being used at far larger scale and under much more demanding performance scenarios. There was a huge audience for whom the first edition was now outdated and didn’t have enough breadth. Peter and Vadim brought the experience to address that. They’d solved far more than a handful of types of performance problems; they’d solved hundreds. There was practically nothing you could ask about performance that they didn’t have some experience with. Different workloads? Check. Widely varying hardware? Check. And so on. Where the second edition excelled was in presenting example solutions and worked-through narratives for a huge variety of problems. It was just enough better than the first edition that people bought it in spades.
What could a third edition offer? In hindsight, the second edition was pretty chaotic. All that information was scraped together and edited into as much of a coherent whole as possible, but it couldn’t teach much beyond the scope of the specific stories. It taught use cases and tips and tricks, but not a mindset and method. In the third edition I wanted to pull back the curtain and teach the reasoning that led to all of the successful solutions to difficult problems I’d seen with Peter, Vadim, and others. If I’d written about the problems and solutions themselves, it could have filled several thousand pages. There were other improvements over the second edition, but my focus was on teaching much more by teaching much less.
As a result, the third edition continues to sell extremely well, even as MySQL has seen several major new versions and there have been drastic changes to the technology landscape in general (hardware, cloud, blended relational and multi-model data access, etc). It’s no more of a masterpiece than the first edition, but it’s better in the right ways.
What would make a fourth edition just enough better than the third edition? I’m not at all sure that there will ever be a need for a fourth edition. I’ve seen many different books about databases and performance. Some of them barely talk about databases or performance at all. Some of them are about other things, like architecture of large-scale applications. I’ve been inspired by many of these books, but I’ve never thought, “aha! If I applied this to a MySQL-specific context, this would be the backbone and unifying concept of a fourth edition of High Performance MySQL!”
Maybe it’s just run its course. Maybe it’s good enough that there’s never going to be a just-enough-better MySQL-specific book.
Or maybe it will eventually be updated superficially just to meet demand for new MySQL versions, without doing much else. (Would that book sell well? I’m not sure.)
Who knows? All I know right now is that I don’t hear people telling me en masse that there’s a gap between what they need, and what they get from the book. I could be wrong, but it seems that the third edition has remained “good enough” for a larger group of people and for longer than before, and as long as that remains true, there’s no problem to solve. It’s hard to create something “just enough better” when there’s already something good enough.
And solving a problem, with something that’s not only good, but better, seems to be the threshold you have to cross.