所有权与问责制:从概念到生产,您拥有自己的代码

发布: (2026年2月19日 GMT+8 20:22)
10 分钟阅读
原文: Dev.to

Source: Dev.to

所有权的表现

所有权不仅仅是编写代码。它是从你产生想法的那一刻起一直拥有这段代码,直至它在生产环境中退役。

这意味着你要:

  1. 理解你要解决的问题
  2. 设计解决方案
  3. 编写代码
  4. 测试代码
  5. 部署代码
  6. 监控代码
  7. 当出现故障时进行修复
  8. 随着时间的推移进行改进

如果你只写代码然后把它扔给别人处理,你并没有承担任何所有权——你只是单纯地写代码。

两小时规则

我经常看到的模式

开发者遇到一个 bug,盯着它看了六个小时,最后在下午 5 点求助:
“嘿,这个不工作,你能看看吗?”

六小时卡住,零沟通。

更好的做法: 如果你被阻塞超过 2 小时,就提出。

但不要只说“它坏了,帮我”。展示你已经尝试的内容:

“我在这个 auth bug 上卡住了。我已经尝试了:

  • 检查 JWT 令牌过期时间——令牌是有效的
  • 验证签名算法——与我们的配置匹配
  • 使用 Claude 审查中间件——未发现问题
  • 这里是我的日志:[paste]
    我认为问题出在 token‑refresh 流程,但我需要另一双眼睛。”

你已经完成了工作,耗尽了选项,记录了尝试的过程,并形成了假设。现在同事可以真正帮助,而不是花一个小时去复现你本该已经完成的工作。

在请求帮助之前

先使用你手头的一切资源:

  • 阅读文档
  • 使用 AI 工具(Claude、ChatGPT、Gemini、Cursor)
  • 编写能够准确展示问题的失败测试
  • 检查代码库中的类似问题
  • 在 Google 上搜索错误信息

如果你已经完成了上述所有操作,但仍然卡住超过 2 小时——那就可以了。请求帮助 并且 展示你已经尝试过的内容。

“你能帮忙吗?” — 没有上下文并未承担责任。这是在让别人为你的问题负责。

当生产环境出现故障时

这正是所有权真正体现的地方。

糟糕的所有权

“部署失败了。应该有人去看看。”

良好的所有权

“部署失败了。我负责。根本原因:数据库迁移超时,因为我没有考虑到表的大小。我现在正在回滚。
解决方案:将迁移拆分为更小的批次。
我将在 30 分钟内准备好重新部署。
下面是我们下次如何防止此类问题的措施……”

注意区别:

  • 立即承担责任
  • 解释出了什么问题
  • 提供解决方案计划
  • 说明如何防止再次发生
  • 给出时间表

这就是所有权。

成功的准备

当你发布一个功能时,你应该具备:

监控

  • 监控关键指标(延迟、错误、吞吐量)
  • 仪表盘一目了然地展示健康状态
  • 日志能够真正帮助你调试

警报

  • 在发布 之前 配置
  • 包含上下文——不仅仅是“出了问题”
  • 路由到合适的人员

文档

  • 这是什么原理?
  • 可能出现哪些问题?
  • 如何解决常见问题?
  • 谁构建了它,如何联系他们?

如果你的功能在凌晨 3 点宕机,且其他人值班,他们应该能够:

  1. 从警报中了解故障原因
  2. 找到你的运行手册(runbook)
  3. 修复它 知道如何联系你

如果他们做不到,说明你并未完成发布。

部署失败的案例

一名开发者曾经部署了一个支付重构。它经过了彻底的测试,在预发布环境中运行正常,随后在周五下午推送到生产环境。

Saturday morning: 警报频发,支付处理速度降至爬行,用户无法完成交易。

“老开发”可能会说:“在预发布环境里运行得很好”,然后等别人去调查。

相反的做法:

  1. 立即介入
  2. 找到问题:没有使用生产级别的数据量进行测试
  3. 在 10 分钟内回滚
  4. 撰写事后报告
  5. 修复实际问题
  6. 将负载测试加入我们的 CI/CD 流水线
  7. 周一自信地重新部署

这才是担当。不是“在我的机器上可以运行”,也不是“周末不是我的问题”。而是:我负责,我会解决,这里是我们防止再次发生的措施。

拥有所有权让你更出色

令我惊讶的是:全面承担所有权让我更快成为更优秀的工程师。

为什么?因为当你知道自己对生产环境中的某件事负责时,你会:

  • 深入思考边缘情况
  • 编写更完善的测试
  • 建立适当的监控
  • 记录你的决策
  • 关注性能
  • 为故障做好计划

你不能只写代码后就算了。你必须考虑整个生命周期。这会让你在工程的每个环节都变得更好。

领悟的初级开发者

我团队里有一位初级开发者,正在负责他的第一个重要功能。他对部署感到紧张,但他把每件事都做对了:

  • 编写了完整的测试
  • 设置了监控和告警
  • 编写了运行手册(runbook)
  • 通过功能标记(feature flag)进行部署
  • 在首小时内监控指标
  • 在 Slack 上发布更新

该功能运行得非常完美。更重要的是,他对它全程负责。两周后出现问题时,他准确地知道它是如何工作的,以及我们为何要这样构建它。

这就是思维方式:不是“我写了一段代码”,而是“我拥有这个功能”。

小步起步

选取你当前正在做的一件事。在发布之前:

  1. 建立基础监控
  2. 为最关键的故障模式添加一个告警
  3. 编写简易运行手册:“如果 X 出现故障,按以下步骤处理……”

通过这些小步骤,培养所有权的习惯,这种习惯可以扩展到更大的项目。

如何修复

  • 记录你的思考过程:“我们为何这样构建”
  • 告诉团队:“我正在发布 X,请注意以下事项”

这就是所有权。

持之以恒,你会发现:人们更信任你的工作,你成长更快,代码质量也提升。并不是因为你完美,而是因为你对整体负责——不仅仅是代码本身。

真正的考验

下次你构建的东西出现问题时,注意你的第一反应。

  • 是:“嗯,它在我的环境里能跑”?
  • 还是:“我现在就去看看”?
  • 是:“可能得让别人来修复它”?
  • 还是:“我来处理,下面是我的计划”?

这些反应之间的差别,就是 代码编写者交付产品的工程师 之间的差别。

每次都选择第二种。
这就是所有权。

这是一套 14 部分《核心领导力原则》系列的第 2 部分。下周:每日交付——为什么每天都有进展比偶尔的英雄式冲刺更有效。


你是如何在工作中实践所有权的?有什么方法帮助你对生产环境中的代码承担全部责任?

关注我的 Twitter
如果你想支持我的工作,请 查看我的 Patreon
更多内容请访问我的 Linktree

图片来源:@Miguel A. AmutioUnsplash

0 浏览
Back to Blog

相关文章

阅读更多 »