
What happens when you hit your goal, but lose the sense of ownership along the way.
Liam
Project 1 was PlainCoach.
And I shipped it.
That was the goal. No excuses, no backing out, no quietly abandoning the idea once it got uncomfortable. In that sense, the month was a success. But it didn’t feel like one.
I expected to build a small, lightweight, well thought-out app. Nothing huge, just something clean and intentional. Something I could come back to in six months and still understand and feel good about.
That’s not what happened.
PlainCoach works. On paper, it’s fine. The idea makes sense, the pricing is fair, and it solves a real problem. I even managed to keep costs down by switching to WhatsApp messaging instead of SMS, which let me price it at around £6 a month or £54 a year.
But I’m uncomfortable with it.
The code is messy. The UI feels confused. The branding doesn’t quite land. There’s more AI-written code in there than I’m happy with. It’s probably the worst thing I’ve ever released, at least by my own standards.
And that’s hard to admit publicly.
The issue isn’t that the product is bad. It’s that it doesn’t feel like mine.
I like looking at my code and feeling proud of it. Clean classes. Clear intent. Strong typing. Tests where they make sense. A UI that feels deliberate rather than accidental. With PlainCoach, I don’t get that feeling.
Part of this came from the way I built it. I deferred design decisions instead of exploring them properly. I leaned on AI more than I normally would, not just for small refactors or isolated changes, but for entire features. Somewhere along the way, I lost the sense of authorship.
The app exists, but it doesn’t fully represent how I think or work.
Looking back, I think a part of me didn’t believe I would actually ship it.
If something feels temporary, you don’t protect it. You experiment, you cut corners, you tell yourself you’ll clean it up later. By the time I realised this was going live, the foundations already felt wrong. I tried restarting at one point, but by then the project had become more frustrating than fun.
In hindsight, I probably should have powered through the mess instead of resetting. But at the time, it felt easier to start again than to untangle what I’d already built.
If I hadn’t committed to this challenge publicly, PlainCoach would never have seen the light of day. I would have quietly walked away, added it to the pile of unfinished ideas, and gone back to saying I wished I could just ship things.
This time, I didn’t let myself do that.
I shipped something I wasn’t proud of. And that’s new for me.
This project taught me that shipping and craft are two different muscles. I’ve spent years building the craft muscle. This challenge is forcing me to build the shipping one.
It also showed me that believing something will exist changes how you build it. If I want to keep my sense of ownership, I need to design, structure, and think as if the thing is going live from day one.
AI isn’t the enemy here either, but it has a cost. Used carelessly, it can speed you up while quietly taking away authorship. That’s something I need to be more deliberate about going forward.
I’m taking this week off and properly celebrating the new year.
I’m not totally sure what Project 2 will be yet, but I know a few things. It’ll be smaller. It’ll be in a language I’m comfortable with. The goal will be to exercise the shipping muscle without fighting everything else at the same time.
One thing I do know is that it needs to be paid. Work Worth didn’t trigger the same discomfort, and I think charging for something brings a whole new layer of resistance that I need to face head-on.
If you’re curious, you can check out PlainCoach here:
https://plaincoach.com
On to Project 2.