文檔,文檔都在代碼裏」,還有一部分人認爲,文檔容易過期,很難跟上代碼的更新節奏,於是沒有必要寫文檔。
凡此種種觀點致使了一個局面就是:
接手業務的時候吐槽別人不寫文檔,交接業務的時候又以爲這東西無需解釋,根本不須要文檔
。
對此,首先我我的認爲涉及代碼細節的部分確實不必寫文檔,可是對於整體的設計和業務的變動是絕對須要寫文檔的。有些人以爲文檔有過期問題,那是由於他們沒有引入版本(ChangeLog)的概念,
過期的文檔自己就是業務歷史的一部分
,我在接手一個業務的時候,經常就須要這些歷史信息來輔助理解。工具
上週發生了一件趣事,一個產品跟我說,
開發兩句話能說明白的,爲何要看文檔
?確實,問開發能以最快速度準確地獲取信息,畢竟人腦就是一個強大的搜索引擎。可是長期來看有如下問題:
通常來講,一份 好的技術文檔
比起開發口述是不會有多餘的理解成本的,甚至更低,由於對於不少信息,圖片能比語言更好地表達。
我認爲 好的技術文檔 的核心是 敏捷 。一方面,好的的技術文檔是
高度可維護的而且常常維護
的,好比新增了一些功能,文檔的做者可以快速更新文檔,文檔的讀者能及時獲取更新;另外一方面,好的技術文檔是
易理解 的,更詳細來講要表述準確、結構清晰、排版美觀、風格統一。
最後,我想探討下寫文檔究竟是幹嘛?百度百科說:
軟件文檔或者源代碼文檔是指與軟件系統及其軟件工程過程有關聯的文本實體。
那麼寫文檔就是生產這個實體的過程了。但這樣實在過於抽象,根據我最近一年的經驗來看,我更願意將其定義爲
對特定信息進行結構化整理的過程 。
以上就是寫做技術文檔的道了,也就是咱們對於這件事最基礎的世界觀,接下來談術,即基於此執行的方法論。
在正式開始寫文檔以前,咱們必需要有如下三點認知:
本章節討論了一份技術文檔應該具有的各個單元,能夠做爲從此技術文檔寫做的框架或者Checklist。
簡單介紹項目背景信息,以下面是我爲某個項目寫的 Introduction :
,但我認爲放在平常的文檔寫做中有點矯枉過正了。
綜上,我推薦Asciidoc。
對於文檔的管理,我推薦使用Git,像管理代碼同樣管理文檔。
另外我推薦使用一個靜態網站來存放本身的文檔,這樣其餘同事訪問的時候看到的老是最新的文檔了。
另外,公司目前在推iWiki,我以爲iWiki最大的優點是 權限控制
,對於一些敏感文檔是必須的。可是,比起iWiki的變動記錄,做爲程序員的我更鐘愛用Git進行管理,此外,iWiki是Web網頁,編輯體驗確定也比不上本地本身配置的編輯器。固然,術沒有絕對的優劣之分,也要看本身是否合適。
以上,最近關於技術文檔寫做的一些思考。歡迎交流指正。