The Feature I Almost Shipped Out of Fear
Shashank Manjunath
A competitor in the habit-tracking space shipped a social features update in March — friend feeds, shared streaks, the whole apparatus of turning a private habit tracker into something with a timeline. Within about six hours of seeing the announcement, I had a branch open and had started scaffolding a friends system into Frictionwell. I want to write down what stopped me two days in, because the stopping mattered more than the branch ever did.
What the fear actually said
The reasoning I gave myself, in the moment, felt completely rational: if a comparable app is adding social features and getting attention for it, and I don't have an equivalent, users comparing the two options will see Frictionwell as missing something. That's a real category of risk. It is also, I noticed on the second day of building, not actually a reasoning I'd arrived at by thinking about my own users at all. It was a reasoning I'd arrived at by watching someone else's announcement and feeling the specific, familiar discomfort of being behind.
"I wasn't building the feature because I thought my users needed it. I was building it because someone else's launch had made me feel like I was losing a race I hadn't actually entered."
The question that stopped the branch
What actually made me close the branch was a much smaller, more boring exercise than any strategic reassessment: I went back through eighteen months of support emails and community messages and searched for any mention of wanting social or friend features. There were four, out of several hundred messages, across the entire history of the product. Compare that to the notes-field pattern I've written about elsewhere on this desk, where a genuinely unprompted signal showed up constantly, unmissably, in what users actually wrote. Four mentions in eighteen months is not nothing, but it is not remotely the signal that justifies a multi-week feature that would touch authentication, privacy settings, a new data model, and ongoing moderation responsibility I have no appetite to take on alone.
"Four requests in eighteen months. I was about to spend three weeks building for a signal that quiet, because a competitor's launch had made the silence feel louder than it was."
Why two days was long enough to notice, and why that's not luck
I don't think I caught this quickly because I'm unusually disciplined — I think I caught it because the cost of the mistake was still cheap enough, two days in, that noticing it didn't require admitting to a large sunk cost first. That's the actual argument for building small that I keep coming back to on this desk: it's not that a solo builder has better judgment than a funded team would. It's that a solo builder can still change course on day two, before a roadmap commitment, a hiring decision, or a public announcement has made reversing course expensive in ways that have nothing to do with whether the original call was right.
A team with a product manager, a few engineers already assigned, and a stakeholder update already promised for the feature would have had a much harder time closing that branch on day two, even if someone on that team had the exact same doubt I had. The doubt would have had to survive a meeting, a justification to whoever assigned the engineers, and the specific social cost of being the person who said "actually, I think we're chasing a feeling, not a signal" out loud in front of people who'd already started planning around the launch. I had none of that friction. I had a branch, a terminal, and permission to just close the tab.
What I built instead
I didn't build nothing in response — the fear wasn't entirely groundless, and dismissing it completely would have been its own kind of overcorrection. What I actually did was smaller and cheaper: I added a single, private "share your streak" export — a nicely formatted image a user can save and post anywhere they like, with zero infrastructure on my end, no friend graph, no feed, no moderation surface. It shipped in an afternoon instead of the three weeks the full social system would have taken, and it satisfies the actual, narrow version of the desire — wanting to show off progress — without the ongoing cost of a feature nobody had really been asking for at any scale that justified it.
The lesson I keep this one on my desk to remember is narrow and specific: watching a competitor's launch is useful information, but it's information about them, not automatically information about your users, and the two get confused fastest in exactly the moment — hours after an announcement, adrenaline still up — when you're least equipped to tell them apart. The three weeks I didn't spend went instead into a retention fix that quietly moved a real number. That trade only happens if you catch the flinch before the branch turns into a shipped feature nobody asked for, and catching it is a lot easier when the whole cost of being wrong is a closed tab and two afternoons, not a quarter's roadmap and a promise you've already made to someone else.
Shashank Manjunath
Small & Deliberate · Editor & sole writer
An Indian builder-operator writing about AI, teams, and the cross-cultural patterns shaping tech — read from Asia outward, with the West as the contrast class. This is a one-person publication; reply to any email and it reaches me directly.