操作指引裡有兩類補充資訊工程師確實需要:先備知識(這個參數為什麼值得用、背後的系統行為是什麼)與環境陷阱(特定平台上同一條指令會靜默失敗)。這些內容本身有價值,問題在它們出現的位置。

散落的形態

講課的時候講到哪補充到哪是自然的——講者正在操作,想到一個相關的事就說。搬到文章上,這些補充散落成遊離的散文段落,跟它們所屬的指令或參數隔了好幾行。讀者掃指令列表時跳過它們、在需要的時候找不到、在不需要的時候被它們打斷閱讀。

兩個實例:

  • logcat -G 16M 的參數表格說「放大緩衝區」,為什麼要放大的理由寫在表格下面一段遊離的散文裡——讀者掃完表格就往下一節走,那段散文變成沒人讀的區塊。
  • macOS 上 timeout 的靜默失敗寫在「找特定元件的啟動紀錄」段之後,但它跟啟動紀錄沒有關係——它是 logcat 時間窗那個概念的另一條(錯誤的)路徑。

歸位原則

先備知識與環境陷阱的正確位置是它們所屬的指令或概念旁邊,用固定的結構承接:

  • 參數的理由寫進參數的說明裡。表格的用途欄、或緊跟指令的那一段說明,讀者拿到指令的同時拿到理由。理由不獨立成段——獨立成段的散文在掃描式閱讀中被跳過。
  • 環境陷阱跟在它替代的那條路徑旁邊。timeout 的陷阱跟的是時間窗的概念,因為讀者決定要用 timeout 的時間點是在讀到時間窗的時候,而不是讀完啟動紀錄之後。
  • 判斷歸位的問題是「讀者在讀到哪個位置時會需要這段資訊」。答案指向的那個位置就是它該放的地方。

跟其他抽象層原則的關係

教學定位被讀成教室講課(#355)管的是教室形式的根因——為什麼會有講到哪補充到哪的寫法。本卡管的是那個形式的其中一個後果——補充資訊散落——以及它的歸位原則。兩者的判別方式不同:#355 問「刪掉這一段讀者還知不知道在講什麼」,本卡問「讀者在需要這段資訊時找不找得到它」。

敘事的解碼材料要在讀者已讀的文本裡管的是材料的存在,本卡管的是材料的位置。材料存在但位置錯了,每一段單獨讀都通順,而讀者在需要它的時候翻不到。