精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

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

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

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

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

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

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

摘要

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

引入

請(qǐng)先思考下面幾個(gè)問(wèn)題:

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

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

為什么要寫文檔

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

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

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

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

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

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

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

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

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

那么,我來(lái)逐條地分析你不寫文檔是不對(duì)的.

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

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

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

如何寫文檔

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

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

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

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

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

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

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

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

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

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

這里有個(gè)參考: How to make documents evolve?

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

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

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

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

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

結(jié)論

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

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

后記

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

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

聯(lián)系客服

主站蜘蛛池模板: 辽阳市| 小金县| 武清区| 亚东县| 仁怀市| 沭阳县| 巨鹿县| 荆州市| 长治市| 遂川县| 佛坪县| 罗源县| 雅安市| 巍山| 左贡县| 翼城县| 龙口市| 罗平县| 盐山县| 岳西县| 胶州市| 彭山县| 四川省| 图木舒克市| 江门市| 聂荣县| 碌曲县| 岳普湖县| 西乌珠穆沁旗| 石门县| 沅陵县| 石狮市| 孟津县| 湘潭县| 凤凰县| 沭阳县| 开鲁县| 尼勒克县| 黎平县| 锦屏县| 田林县|