Everything starts as a fragment
Nothing starts finished. It starts as a fragment — a half-idea, a file with two functions, a sentence you wrote down because it wouldn’t leave. The gap between that and the thing in your head is where most projects die, and it dies from comparison rather than difficulty.
The comparison is always unfair. You’re holding a fragment against someone else’s shipped work, which is their fragment plus two years you didn’t watch.
Friction is information
The parts that resist tell you where the actual problem is. A section that won’t come out right is usually one you don’t understand yet. A feature that keeps growing in scope is usually two features. An architecture that fights every change is telling you the model is wrong.
None of that arrives as insight. It arrives as annoyance, which is why it gets treated as an obstacle to push through rather than a reading to take.
The practical version: when something is unusually hard, stop and ask what it’s telling you before applying more force. Half the time the answer is that you’re building the wrong shape, and force makes it worse in a way that takes months to undo.
Endpoints are illusions
Shipping is not an ending. It’s the point where the thing stops being yours alone and starts being shaped by contact — which is the beginning of the interesting part, not the conclusion.
Abandonment gets misread too. A project shelved because it was impossible often becomes possible later without anyone touching it: a dependency matures, a price falls, a platform ships the missing primitive. The file you closed in frustration wasn’t a failure, it was a correct assessment of that month. Reopening it a year later isn’t sentimentality — it’s the cheapest research available, because the hard thinking is already done and only the blocked part changed.
Where it breaks
“Value is in the motion” is a lovely sentiment and it is also how people accumulate forty unfinished projects and call it a practice.
Continuous becoming, taken seriously, removes any obligation to finish. Finishing is where most of the learning actually is — the last ten percent is where you find out whether the thing works, and it’s the part every fragment-lover skips. A person with twenty starts has usually learned one thing twenty times.
And not all friction is information. Some is just difficulty. The tedious data migration isn’t telling you anything; it’s tedious, and the answer is to do it. Treating every struggle as a signal to reconsider is a very sophisticated way of avoiding boring work, and it’s especially available to people who enjoy thinking about systems.
The distinction I’d use: friction that recurs in different forms is a signal. Friction that’s just heavy is a task. The first means stop and re-model; the second means put the hours in.
Takeaway: treat struggle as fuel.