程序员的README

《程序员的README》(The Staff Engineer’s Path / The Software Engineer’s Guidebook / The Programmer’s README)由克里斯·里科米尼(Chris Riccomini)、德米特里·里亚博伊(Dmitry Ryaboy)等著。本书涵盖了从学校过渡到现实软件工程项目所必需的非编程技能与实践工作流,包括代码变更技巧、如何提问、应对心理障碍、软件架构治理、以及运维与 On-Call 技巧。

核心内容

个人成长与心理机制

Source: 2026-06-21-note-程序员的README(来源未公开)

  • 能力的四个阶段:无意识无能力、有意识无能力、有意识有能力、无意识有能力。新手工程师首要任务是迈入“自觉阶段”。
  • 提问的艺术:新手常常因为害怕打扰别人而独自闷头苦想,或者发出缺乏背景的模糊求助。提问前应进行自主研究、限制研究时间以防收益递减、并在提问时详述背景、已做尝试和日志。
  • 冒充者综合征与邓宁-克鲁格效应:
    • 冒充者综合征:过度自我怀疑,将成功归因于运气。应用觉知、重塑消极想法并向管理者或导师寻求积极反馈来克服。
    • 邓宁-克鲁格效应:无意识的无能力导致过度自信、批判技术栈且无视反馈。可通过保持好奇、接受犯错、权衡利弊来对抗。

代码变更与架构维护

Source: 2026-06-21-note-程序员的README(来源未公开)

  • 软件的熵:混乱的代码是变化的自然副作用(走向无序),而非开发者的过错。
  • technical-debt(技术债):为了修复现有代码不足而欠下的未来工作。具有本金与利息特性。
  • 安全变更步骤:定义变更点 寻找测试点 打破依赖关系 编写测试 修改和重构。
  • 童子军原则:保持代码库的清爽,“住过的营地要比住之前更干净”。但重构需要务实,避免过度重构升级为全盘重写。
  • 自行车棚效应:过度在无关紧要的琐碎细节上争论,属于 bike-shedding 现象。
  • 保守的技术选型:新技术充满未知故障模式,而保守技术(Borning Technology)的故障模式容易预测,应在公司的非核心领域尽量使用成熟技术。

职业建议

Source: 2026-06-21-note-程序员的README(来源未公开)

  • 长线思维:资深工程师需要依靠长期跟踪自己决策的反馈来培养直觉,频繁更换工作会阻碍直觉发展。
  • 马拉松式节奏:拒绝过度加班和缺乏睡眠,缺乏睡眠会导致代码实现质量下降 50%。职业生涯是一场马拉松而非短跑。