程序員爲什麼都不喜歡寫文檔

        我們一直針對項目文檔有一種矛盾的疑惑,自己不喜歡寫文檔和不喜歡別人沒有寫文檔。我們都知道項目文檔很重要,但是我們總是在項目中短期高估文檔的重要性,長期低估文檔的重要性;結果口號喊得很響,要重視文檔,要寫好文檔,要多些文檔,但是在項目推進中,總有比文檔優先級更重要的任務,文檔總是被退後,導致項目文檔缺失、老舊、無人維護。

    我總結了下程序員爲啥不愛寫文檔,首先不知道怎麼寫,其次太忙沒時間寫或者懶得寫,程序員忙的時候情有可原,不忙的時候也很少去寫文檔,寧可去想代碼怎麼重構,其實還是太懶;敏捷開發不用寫文檔?這個是大家都存在的誤區,敏捷開發從來沒有否認文檔的價值,只是更重視“工作的軟件”。

    爲什麼要寫文檔?寫文檔,對個人、項目和團隊非常重要,首先幫助寫文檔的人理清楚思路,因爲寫作的過程,就是一個思考的過程,寫文檔,可以讓我們在寫代碼之前,梳理清楚思路,想清楚整體架構,如果一開始就開始寫代碼,會陷入技術細節中,忽略了整體結構;其次先寫文檔,會拋開代碼細節,站在全局思考,每個模塊之間的依賴關係、存在安全隱患,這些都需要去討論諮詢、查詢資料、反覆縝密思考才最終寫出來,其實真正的寫文檔障礙是沒有想清楚,心中只有一些未成型的混亂的想法和概念,我們必須努力把模糊的想法確定化和具體化,換個角度,如果我們連文檔都寫不出來,還能指望代碼寫的好麼?

    寫文檔有哪些好處呢?

1.便與未來的維護和交接

“好記性不如爛筆頭”,存在腦子裏的內容是不可靠的,一個正常的項目組,如果要長期維護,就需要有一定的文檔,記錄設計、操作流程、配置環境等。

2.團隊更好的協作溝通

團隊成員間通過文檔更好的溝通,例如產品設計雛形期會有產品設計的評審會議,基於文檔,項目成員一起參與其中討論。

如何寫好文檔?

1.從模仿開始

依葫蘆畫瓢”,學習別人的文檔格式,

2.從小文檔開始

3.從粗到細,迭代更新

    我們小時候寫作文都是要求提綱挈領,先列提綱,把基本結構梳理清楚,然後寫PPT,PPT好處是不用太多文字,列個一二三,畫幾張圖,就是簡單文檔,主要PPT是拿來收集反饋,然後一篇文檔的骨架就搭好了,剩下細節補充。

    爲什麼不一開始就寫很細的文檔,因爲太難寫,要花很多時間精力,而且收集反饋的過程中會有很多修改,寫的越細無用功越多,最後甚至會因爲不想改文檔而牴觸不同的意見。

    從粗到細迭代一開始是爲了梳理清楚大概思路,然後確定基本細節。

1.基本的畫圖技巧

"字不如表,表不如圖,一圖勝千言";用好畫圖軟件Visio、PowerPoint、Keynote、OmniGraffle等,比較常用的圖有線框圖、流程圖和時序圖

2.線框圖

線框圖用簡單的方框代替功能、模塊、服務,用箭頭表示關係或者數據流向。看看Twitter當前的緩存方案:

https://static001.geekbang.org/resource/image/17/fb/1789cf7139c74de3a5667d50dd8406fb.png

例如Netflix的賬單系統架構圖

https://static001.geekbang.org/resource/image/d1/4e/d11279dd5d943264f190c22578b21e4e.png

  1. 流程圖

流程圖表示各種不同條件下的邏輯路徑,重點在於梳理清楚邏輯關係,各個關鍵節點不同條件下的走向。

例如重置密碼流程圖

https://static001.geekbang.org/resource/image/c3/fa/c310f2fdef032b99c659deac5857d2fa.jpeg

  1.  
  2. 時序圖

時序圖表示不同對象之間發送消息的時間順序,涉及通絡通信中特別常用,重點要清楚所有涉及的對象或者服務,以及消息發送的先後順序。

例如註銷登錄過程的時序圖

https://static001.geekbang.org/resource/image/02/5f/0234da35f3bc080864a99d5ea755e25f.png

  1. 各種格式截圖

軟件UI、交互設計效果、數據趨勢圖、數據統計圖直接截圖配上箭頭、文字。

還有,不需要過度追求文檔的花哨,把大量時間浪費在寫文檔上,我們一直推崇敏捷宣言的觀點,文檔很重要,但工作的軟件高於詳盡的文檔,平衡最重要。好的代碼格式、良好的註釋、完善的單元測試代碼很大程度上代替針對代碼而寫的文檔。

我極力推薦Markdown文檔格式,讓我們更專注於內容而不是根式,後續會專門弄一個Markdown的介紹文檔。

最後總結就是,文檔的寫作要多練習,寫的越多,就越熟練。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章