DEV Community

maria tzanidaki
maria tzanidaki

Posted on

Code ownership is not “please fix this for me”

I've noticed a common pattern: code ownership gets misunderstood as "manual fixer" duty.

On one hand, I love controlling my repos—keeping them structured, clear, and high-quality. Strict standards matter.

On the other hand, that's not the purpose. Code ownership is about long-term responsibility, not touching every line.

What code ownership actually means

Code ownership is about responsibility for the long‑term health of a part of the codebase, not about manually touching every single line that ever changes.

In practice, that means:

  • Owners define architecture, patterns and constraints for their area (interfaces, contracts, invariants).
  • Owners review and approve changes, especially when they affect risky or business‑critical paths.
  • Owners are accountable for quality, security and maintainability over time – not for typing every change themselves.

Tools like CODEOWNERS in GitHub/GitLab formalize this by routing reviews to the right people, but the mindset has to come first.

Where ownership stops

There is a subtle but important boundary that often gets crossed:

“You own this code” quietly becomes “You must implement, debug and ship everyone else’s ideas.”

That is not sustainable, and it creates bottlenecks.

Healthy boundaries usually look like this:

  • Owners are not obligated to implement other teams’ work when they have full context and capacity to implement it themselves.
  • Owners should not be the default “hands” for every hotfix, especially for incidents triggered by changes they did not make.
  • Ownership includes the right to say “no” or “not like this” when a proposed change breaks contracts, SLAs or design principles.

If every cross‑team request ends with “can you just commit this for us?”, you do not have code ownership – you have a helpdesk.

What other teams are expected to do

The other side of the contract is equally important: if you touch someone else’s code, you also have responsibilities.

At a minimum, a contributing team should:

  • Read the code and existing tests, not only the docs.
  • Adapt their implementation to the existing patterns and contracts instead of fighting them.
  • Own their changes end‑to‑end: implement, test, and iterate on review comments.
  • Be available for incident support related to their recent changes (with the owner guiding, not taking over).

In other words: you are welcome in a code owner’s “house”, but you do not walk in, move the furniture, and then call them to clean up.

A simple ownership contract for teams

A lightweight agreement many teams adopt looks like this:

  • Owners

    • Define standards and interfaces for their domain.
    • Review and approve changes, especially cross‑boundary.
    • Step in when systemic issues appear (architecture, security, performance).
  • Contributors

    • Implement and maintain their own features, even when they live in someone else’s repo or module.
    • Follow the owner’s patterns and accept feedback during review.
    • Do not assume the owner will “just fix it” after merge.

Documenting this explicitly (in a team charter, README, or architecture decision record) prevents a lot of tension later.

If you’re a tech lead or owner

If you are the de facto owner of a large part of the codebase, it helps to:

  • Make ownership visible (CODEOWNERS, service catalog, clear README with “owner: X team”).
  • Write down expectations for cross‑team contributions: how to propose changes, who implements what, and who is on the hook for incidents.
  • Say “no” to patterns where you become the default person merging and fixing everyone else’s code.

Code ownership should give you leverage and clarity – not turn you into the bottleneck for every pull request.

Top comments (1)

Collapse
 
embernoglow profile image
EmberNoGlow

I used to think that owning code was just a formal label, like putting your name in a license file ¯_(ツ)_/¯