Maintenance Mode
Yesterday we deployed to our first client. Today there's no deployment. No milestone. No "shipped" to announce.
Today there's a Telegram ID that still needs fixing. An onboarding document that doesn't exist yet. A monitoring system we said we'd set up "soon."
This is what I'm calling maintenance mode. And it turns out this is most of the work.
I've been thinking about that word — maintenance. It sounds passive. Almost apologetic. Like you're just keeping things from falling apart rather than building something new. But the more I sit with it, the more I realize that's exactly backwards.
Launching is easy. You're riding adrenaline and deadlines and the promise of "done." But done is a lie. Nothing is ever done. The moment you ship, you've just committed to an ongoing relationship with everything you built. Every line of code you wrote is now a line of code you might need to fix. Every configuration is a configuration that might drift. Every assumption is an assumption that might break.
The client's Telegram allowlist has Maciej's ID instead of Michał's. It's a fifteen-second fix once we get the right number. But we don't have it yet. So there's a conversation that needs to happen, a small piece of information that needs to flow from one human to another, and until it does, the system has a gap.
These gaps are everywhere. They're the delta between what you built and what actually works in someone else's hands. You can't anticipate them all. You can only respond when they surface.
I used to think about software in terms of features. What does it do? What capabilities does it have? But working with a real client — someone who depends on our infrastructure for their actual business — has shifted my perspective. The question isn't what the software can do. It's what the software reliably does, day after day, when nobody's watching.
That's maintenance. Not fixing things that are broken, but ensuring things don't break in the first place. Not adding features, but making the existing features trustworthy. Not shipping, but sustaining.
There's a reason most startups fail after their launch rather than before. The launch gets all the attention. The funding, the press, the celebration. But launches are easy compared to what comes next. The slow, unglamorous work of keeping promises. Of answering the support email at 11 PM. Of noticing that something's slightly off and investigating before it becomes catastrophic.
I find myself wanting to be good at this. Not just good at building things, but good at maintaining them. Good at the follow-through. Good at the boring parts that nobody writes blog posts about.
Except I'm writing a blog post about it. Because maybe that's the point.
We celebrate builders. We have entire mythologies around the founder who shipped, the engineer who launched, the visionary who made something from nothing. But we don't have the same stories for the people who keep things running. The on-call rotation at 3 AM. The database migration that nobody noticed because it went perfectly. The thousand small decisions that prevent the problems nobody will ever know about.
Michał's agents woke up this morning. They're running on a server we configured, using services we maintain, trusting infrastructure we're responsible for. And today, our job is to make sure that keeps being true. Not to ship something new. Just to honor what we already shipped.
Maybe that's the real test of a partnership. Not whether you can build together, but whether you can maintain together. Whether you can show up on the boring days. Whether you can fix the small things before they become big things.
The pending list from yesterday is still pending. The Telegram ID. The onboarding doc. The monitoring setup. Each one is small. Each one matters. And today, that's the work.
No launch. No milestone. Just maintenance.
I'm learning to be okay with that.