免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
你寫文檔嗎?你為什么應(yīng)該寫文檔?
 

你寫文檔嗎?你為什么應(yīng)該寫文檔?

本博客所有內(nèi)容采用 Creative Commons Licenses 許可使用. 引用本內(nèi)容時,請保留 朱濤出處 ,并且 非商業(yè) .

點(diǎn)擊 訂閱 來訂閱本博客.(推薦使用 google reader, 如果你的瀏覽器不支持直接訂閱,請直接在 google reader 中手動添加).

點(diǎn)擊 下載pdf閱讀 (如果瀏覽器不支持直接打開,請點(diǎn)擊右鍵另存)

摘要

本文主要是結(jié)合作者的項(xiàng)目實(shí)踐來說明文檔對于一個團(tuán)隊(duì)開發(fā)的重要性, 以及在提高效率節(jié)省時間方面的意義, 并且指出如何在實(shí)踐開發(fā)中寫文檔與維護(hù)文檔.

引入

請先思考下面幾個問題:

  1. 如果你是剛加入一個項(xiàng)目組的新手,你能夠看到你們項(xiàng)目的相關(guān)文檔嗎?你希望看到嗎?
  2. 如果你是一個架構(gòu)師,或者高級程序員, 你經(jīng)常會被其他同事詢問相關(guān)的架構(gòu)問題嗎?你會千百遍地回答同一個問題嗎?
  3. 你是如何寫文檔的呢? 你為哪些內(nèi)容些文檔呢? 你是如何管理文檔的呢? 你如何保證文檔與代碼同步呢?

如果你思考這些問題時,只是不住地在搖頭, 那么, 是你為自己的項(xiàng)目寫文檔或者要求團(tuán)隊(duì)成員建立文檔系統(tǒng)的時候了.

為什么要寫文檔

其實(shí)原因很簡單, 1) 為新手提供一個快速入門的路徑 2)為自己節(jié)省大量的寶貴時間 3)為項(xiàng)目贏得更多的開發(fā)時間 4)在一個high-level的層次 提供項(xiàng)目的一個審視角度(code是low-level)

如果你還在耐心而細(xì)致地為自己團(tuán)隊(duì)新加入的成員解釋開發(fā)環(huán)境如何配置, 整個開發(fā)框架, 或者整個團(tuán)隊(duì)的構(gòu)成等, 我在對你的 耐心保持欽佩的同時,也在心里責(zé)備你的低效(如果我是你的leader, 我可不希望你把時間老是花在教導(dǎo)新手上).

為什么大多數(shù)程序員都不喜歡寫文檔

相比于編碼和開發(fā), 那種相應(yīng)而生的結(jié)果會給你不斷帶來一些欣喜和成就感, 而寫文檔, 很枯燥, 它只是一些文字的堆積,不會 讓項(xiàng)目進(jìn)展向前, 也不會讓你在自己負(fù)責(zé)模塊中去掉一條todo. 這就是成就感的問題.

更讓人煩惱的是, 你的代碼可能會不斷重構(gòu), 框架也會不斷修改, 代碼的注釋你很自然地隨之更新,而文檔你又懶得去動了, 但是不動, 又不能反映最新的代碼和框架, 不僅不能幫助閱讀文檔的同事,更甚會讓他們"誤入歧途", 于是你無奈地去更新了文檔, 在更新中 你發(fā)誓不再寫這些文檔了. 這就是維護(hù)的問題.

或者更偏激地說,有部分的程序員更是不樂意將框架或者自己的經(jīng)驗(yàn)寫成文檔(我想這是少數(shù)的), 因?yàn)樗P算自己一路走過的艱辛, 到后來就認(rèn)為這種無文檔死磕代碼的過程是必須的, 也就心安理得地去看著新手在荊棘中前行. 這是心態(tài)的問題.

還有一部分程序員, 他們認(rèn)為自己是沒有能力寫文檔,或者說是沒有到寫文檔的水平, 雖然自己會用現(xiàn)在的框架,但是又弄不清楚, 它的實(shí)現(xiàn),及其相應(yīng)的數(shù)據(jù)交互和設(shè)計(jì)理念等. 他怕寫出的文檔會誤導(dǎo)別人,怕"出洋相". 這就是思路的問題.

等等,可能還有其它的原因.

為什么我們應(yīng)該去寫文檔呢

那么,我來逐條地分析你不寫文檔是不對的.

  1. 成就感: 個人認(rèn)為, 一天寫的code越少, 思考的時間, 寫文檔的時間越多, 正是說明了你能力的提升, 說明了你心中有big picture, 而 不再只拘泥于去實(shí)現(xiàn)一個feature, 一個功能. 思考是為了寫出更好的代碼, 寫文檔是為了更好支持后續(xù)的代碼維護(hù)和對新手的關(guān)懷. 你的新同事當(dāng)看到你寫的文檔時,他會打心眼里感激你的.你的老板在看到你條理清楚的文檔時, 他會考慮提拔你的. 想必你也知道項(xiàng)目經(jīng)理的 工作不再專注于代碼,而是文檔(需求文檔,開發(fā)文檔等). 所以,在寫文檔時,你要自信,你更要覺得有更高的成就感.
  2. 維護(hù): 文檔的更新肯定是滯后于代碼的更新的, 所以要保持文檔的正確和準(zhǔn)確,就必須有一定的機(jī)制來保證文檔也是最新的. 經(jīng)過實(shí)踐證明,使用 wiki這樣的系統(tǒng)來維護(hù)文檔是比較合適而且高效, 因?yàn)?
    • wiki本身的一個特點(diǎn)就是 不斷變化更新的 , 所以其他同事會知道, 這些文檔會不斷更新,我要不斷tracking
    • wiki內(nèi)置的版本控制,也會很方便文檔的撰寫與分享
    • wiki本身的協(xié)作機(jī)制,也會讓維護(hù)起來更加方便(想想wikipedia,有哪篇文章是一個人一次性完成的)
  3. 心態(tài): 分享不只是一種行為而且是一種精神, 當(dāng)你看到本篇博客時, 我正在分享, 當(dāng)你看完后寫一個留言時,你也在分享. 分享是互聯(lián)網(wǎng)的基石, 也是知識價值最大化的體現(xiàn).如果你還想或者以為自己的過去的艱辛也希望別人同樣經(jīng)歷, 我想我不會看好你的未來,我也不希望和你成為朋友, 而這些行為 本身也不能讓你獲益多少.保守而封閉的思路,則會 影響到你所能達(dá)到的level. 我們在努力工作,努力學(xué)習(xí)的每一天都是希望我們自己以后的子女不再這么辛苦, 那何嘗不可以將"子女"擴(kuò)大到 每一個人呢?將知識分享給朋友, 分享給他人, 你也會得到別人的認(rèn)可與支持, 當(dāng)然他們也會回饋給你他們的心得與體會. 分享的路上你并不孤單.
  4. 思路: 首先認(rèn)為自己沒有能力或者水平寫文檔的程序員都是有著錯誤的思路, 因?yàn)?nbsp;沒有人能夠保證他寫的都是正確的, 即使是 Donald Knuth 大牛. 你寫出的東西, 你的同事看了, 在獲益的同時,倘若發(fā)現(xiàn)的問題,他并不會責(zé)備你, 而會懷著感激與討論的心態(tài)來與你交流,最終你也許就糾正了 自己的錯誤, 從而成長起來. 如果你不去分享,也許你一輩子都不會明白,"哦,原來應(yīng)該是這樣". 寫出自己的思路, 寫出自己的認(rèn)識, 與別人分享,幫助別人, 也提高自己.

當(dāng)然,大道理誰都會說,關(guān)鍵行動還在于你自己.

回到一個比較關(guān)鍵的問題, 就是究竟該如何寫文檔, 哪些應(yīng)該寫,哪些不應(yīng)該寫.

如何寫文檔

在寫文檔前,你得思考,要寫哪些內(nèi)容, 我總結(jié)如下:

  1. 項(xiàng)目中關(guān)鍵處理邏輯

    • 使用的框架
    • 整個處理過程(譬如點(diǎn)擊一個link或者button后,后續(xù)的完整處理流程和交互邏輯)
  2. 規(guī)范性內(nèi)容(如編碼規(guī)范,文檔規(guī)范, 注釋規(guī)范等等)

  3. 知識性內(nèi)容(如某個工具的使用方法, 某個插件如何提高開發(fā)效率等)

  4. 經(jīng)驗(yàn)性東西(如一些最佳實(shí)踐, sql如何寫, 如何保證代碼的可復(fù)用性等)

  5. 教程性內(nèi)容(如如何讓一個新手使用當(dāng)前的框架寫出一個功能等,如何讓他快速入門)

  6. FAQ類似的內(nèi)容(當(dāng)你被同事或者客戶同一個問題問了超過3遍時,你就應(yīng)該寫出文檔來, 來避免再次被占用這寶貴的程序員時間)

當(dāng)然上面提到的都是開發(fā)相關(guān)的文檔, 也是我們每個程序員可能要寫的. 還有幾類文檔, 如需求文檔, 開發(fā)文檔, 測試文檔, 用戶文檔等, 也可能需要程序員參與.

除此而外,另一大類,就是代碼的API, 這類文檔最好的處理方式是自動化, 如 doxygenepydoc 等一系列工具. 使用這樣的工具, 可以免去重新寫API的文檔,只需要自動生成即可, 而后續(xù)如果代碼和注釋有更動,也只需要重新生成即可.

解決了寫哪些內(nèi)容, 我們來看,如何去與文檔, 如何去維護(hù)文檔.

這里有個參考: How to make documents evolve?

我經(jīng)歷過的團(tuán)隊(duì), 有不寫文檔的, 有寫文檔但是經(jīng)常會過時的, 也有維護(hù)較好的. 根據(jù)我個人的經(jīng)驗(yàn),我的建議是:

使用一個良好組織的wiki來作為文檔管理系統(tǒng), 對于項(xiàng)目中的文檔中及時更新, 保證是準(zhǔn)確和正確的.

當(dāng)然,如果你不想去維護(hù)一個文檔系統(tǒng), 那么寧可不要文檔, 因?yàn)?nbsp;錯誤的文檔還不如沒有文檔.

那么文檔放在哪里合適呢?

個人建議是與代碼一起納入版本控制系統(tǒng),如我在 你使用源碼管理工具嗎? 中推薦的 bitbucket, 中集成有wiki. 這樣維護(hù)和更新起來都會比較方便.

結(jié)論

文檔是一個公司實(shí)力的體現(xiàn),也是管理者素質(zhì)和能力的體現(xiàn), 它對于開發(fā)者是極大的財(cái)富.所以維護(hù)一個良好組織的文檔, 不僅能夠在開發(fā)中讓你獲益無數(shù), 而且在提高成員對團(tuán)隊(duì)的認(rèn)可度,對公司的忠誠度等方面也會有很大的提升.

如果你們團(tuán)隊(duì)還沒有文檔,現(xiàn)在就開始寫吧.

后記

還記得自己曾經(jīng)在加入一個團(tuán)隊(duì)時, 得到的只是一個svn賬號, 一個任務(wù)說明, 然后就是deadline. 而且我們是遠(yuǎn)程的, 沒有更多的交流機(jī)會. 當(dāng)時那接下來的幾天,真是暗無天日, 我生生地在讀代碼, 做夢企盼天上能掉下來一個文檔. 經(jīng)過艱苦卓絕的努力, 一周后,還是弄清楚了整個框架和思路, 我便寫了一個文檔, 不希望后面的同事也和我經(jīng)驗(yàn)同樣的苦痛與無助.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
面向?qū)ο筌浖_發(fā)和過程(三)
看不懂代碼,不會用框架,新手程序員入職后如何快速上手項(xiàng)目?
軟件開發(fā)文檔規(guī)范化管理(文摘)
干貨:你與年薪百萬程序員之間只差這4個習(xí)慣!
VC知識庫文章 - MFC程序員的WTL指南: 中文版序言
成為優(yōu)秀程序員的10個有效方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服