Back to blog

Owning the Outcome, Not Just the Code: Three Moments That Changed How I Work

For years I thought being a good developer meant doing what you were asked — and doing it well. Task comes in, I implement it. Client accepts, I move on. That's how most people work. That's how I worked. Then three things happened.

I didn't read a book about ownership mindset. I didn't go to a workshop. I hit three specific walls, and after each one, something in how I thought about my work shifted. When people now tell me I "think like a founder," I'm honest: it's not a personality trait. It's what happens when you fail the same way enough times.

How I used to work

I was a reliable developer on other people's projects. I did what was written in the ticket — and I did it well. Tests, documentation, PRs with no open comments. Clients were happy. I thought that was the job.

Once, I built a contact form for a catalog page. Followed the spec exactly. Form sent emails — verified. No broken states — verified. Shipped on time.

Two months later: 380 of 400 submissions were bots. The client lost money on processing. Their sales team spent a week clearing junk. They shut the form down.

I did everything right. Ticket closed. Problem not solved.

First moment: the task was done, the problem wasn't

That form story bothered me not because I was at fault. I wasn't. Nobody said "add spam protection." I built what was specified.

What bothered me: I didn't ask. It didn't occur to me to ask what would happen to those submissions. Who'd process them. What volume the client expected. Whether spam was already a problem on their other forms.

I looked at the form as HTML and PHP. The client looked at it as a sales funnel. We were talking about different things and didn't know it.

After that I added a question I ask before building anything: what happens after this starts working? Not "how does it work" — what changes in the business three months from now. That question didn't come from a methodology. It came from watching a form I was proud of become a source of lost revenue.

Second moment: the client is always right — until the project fails

A couple years later. Client wanted a user account system with cart history, order tracking, and a loyalty program. Budget was reasonable, timeline realistic.

During the analysis phase I found something: 70% of users placed exactly one order and never came back. A loyalty program doesn't make economic sense for a one-time-purchase audience — there's no base for points to accumulate. I said so.

Client said: we need a loyalty program. We built it for the users who'd come back.

Six months after launch, the program was quietly dropped. Zero users had redeemed a single point. The budget was spent, the feature was dead.

I delivered everything in the spec. I knew it was the wrong call. I stayed quiet after the first "no."

A good technical executor speaks up once, and if the answer is "no," nods and builds it. An engineer with ownership mindset comes back with different data, not the same argument. Because they're accountable for the outcome, not just for following instructions.

The difference isn't about being smarter. It's about caring how it ends.

Third moment: I turned down the contract

The third moment came later, when I was working independently. A client wanted to rewrite their Bitrix e-commerce store from scratch. $40K, six months, team was ready.

I ran a pre-project audit. Found the actual problem: not architecture — 40 SQL queries per catalog page and disabled caching. LCP at 4.2 seconds. Not because Bitrix was bad, but because nobody had looked at a profiler in three years.

Rewriting from scratch would cost $40K, produce new debt instead of old, and have the client back with the same request in a year. I saw that, and I turned down the contract.

Not because I didn't want the money. Because getting paid to ship a solution I know is wrong isn't work. It's a different kind of problem.

I wrote about that project in detail elsewhere — the numbers, what we built instead. What matters here is a different question: how did I get to a point where turning it down was even possible?

It was possible because of the previous two failures. I knew by then that a task can be executed perfectly and still cause harm. So I was looking at the system, not the task. And I saw not "rewrite Bitrix" but "client wants the store to stop being slow." Those are different problems.

What changed, and what got harder

After these three moments, work got both better and more difficult.

On the better side: I less often do the technically correct thing that turns out to be wrong. I ask uncomfortable questions before projects start, not after. Clients sometimes push back, but usually thank me later.

The harder part: accountability for outcomes is heavier than accountability for tickets. When you think like an owner, you can't just "ship what was asked" when you know it won't work. That takes energy. Sometimes it means conflict. Not every client wants that in a contractor.

The ones who don't want it tend to self-select out, which is fine.

And there's a catch: you can't switch this mindset on selectively for projects that suit you. Either it's how you think, or it isn't. Otherwise you're not an engineer with ownership mindset; you're an engineer who occasionally gives opinions.

Three questions before every project

I've settled into a simple practice. Before taking on a project, three questions:

First: what happens when this starts working? Not "how does this function" — what changes in the business or for the user three months after launch?

Second: what's not in the spec but will break the result? The form without spam protection. The loyalty program without returning users. The rewritten store with the same queries underneath.

Third: am I ready to walk away if I see this isn't the right solution? That question is about honesty — with the client, and with myself.

These aren't a framework. They're a habit of looking past the end of the task.

Ownership doesn't mean knowing better than the client what they need. It means not agreeing to build something you know won't work. That's not arrogance. It's the same professional honesty as a surgeon who explains risks before operating, not just doing whatever they're asked.

Closing risks, not tickets — I wrote about that as a tool. The three moments above are the story of how I got to caring about it in the first place.