Yves Hanoulle has been a marvelous supporter and evangelist of Entaggle. And on occasion he’s been really pushy. But it’s all been good. Entaggle would not be where it is today if not for his pushing.
At the end of February he was nagging me: “You should announce Entaggle to the general public,” he said. This was after he had already started tweeting and writing about it on LinkedIn (with my blessing).
I resisted, “It’s not ready. I still have a to do list a mile long before I’ll feel like it’s ready.”
“What are you waiting for?” he asked.
I looked at my backlog. I had weeks worth of stories to implement before I hit my “Announce” milestone. But as I looked at the list, I thought about what he said. “What exactly am I waiting for?” I challenged myself.
So I went through every single backlog item standing between me and a public announcement.
Some of them were about moderation features: the ability for users to flag something as inappropriate or spammy. Others were about what I saw as core capabilities of the system. All of them represented my first pass approximation of a minimally viable feature set.
But perhaps I hadn’t stripped it down to the truly minimal set.
So for each and every item I asked myself: “What is the absolute worst thing that could happen if the system doesn’t have this thing when we announce it to the general public?”
In each case, the answer was, “not much.”
Sure, I wanted moderation features to protect people from spam. But in the absolute worst case if someone decided to try to use Entaggle to spam people, I could delete the offending content through the Rails Console. I didn’t actually need a special interface to manage content.
Besides, the probability that a spammer would find Entaggle to be an enticing spam vector was low: the system only supported text; no links. And users were protected from having spam show up on their profile by the simple mechanism of requiring taggings to be “accepted” before they showed up anywhere.
So I decided to go for it. I announced Entaggle. People signed up in droves: 172 signups that week. I was amazed.
Predictably, I spent a good chunk of time that week on support issues. But here’s the kicker: none of those support issues had anything at all to do with any of the items in the backlog that had been holding up my announcement.
Most of the feature requests were for things I hadn’t thought about or hadn’t thought were important enough to be at the top of my list. All the serious bug reports were for things I hadn’t thought (enough) about. No one said, “Gee, I wish I could flag something as inappropriate or block a user from tagging me.”
In fact, the worst thing that happened in production during that first week was not related to spam at all. Rather, it was test content from well-meaning testers wanting to exercise the system. They created tags with names like “<script>alert(“HI!”)</script>” that cluttered up the list and made it look like no one cared about the data in the system.
So I solved that problem not through moderation, but by making my staging server available to the public and telling everyone they could create all the test content they wanted over there.
The bottom line was that the risks I imagined turned out to be completely different from the risks that manifested.
To put it another way, empirical evidence trumps speculation Every. Single. Time.
When Entaggle users write in to ask, “Is there a way to…”, I often I find myself replying, “No, I’m sorry, there’s not a way to do that yet.” I feel a tiny twinge of regret every time I have to say that, so I sometimes add a wry, “Ah, the joys of a minimally viable product.”
That feeling of regret lasts no more than a nanosecond before it is replaced with gratitude. By having released a minimally viable product, I am getting a huge amount of feedback about what people using the system actually care about. Every one of those “is there a way to…” is a story that goes into the backlog (if it’s not there already). The more people ask for it, the higher I prioritize it.
As a result, I’ve learned the difference between what people actually want and what I imagined they might want or need.
They wanted a list of new tags and users since their last login more than they wanted twitter integration. They want a better interaction model for tagging with the ability to do bulk tagging. They want email notifications.
At least for now, there is not spam in the system. So the moderation features I envisioned are an incredibly low priority. That will change if spammers discover Entaggle, of course. But getting the interaction model right is currently more important than mitigating a non-existent risk.
This means that if I had taken the time to “do it right,” and finished all the things on my list before announcing Entaggle officially, I would not have been any better off. No one would have cared about all the bells and whistles I added. I would have wasted a huge amount of time.
By releasing early, and continuing to release often, I make much better use of my time and limited resources.
Behold the power of releasing a minimally viable product.