README 驅動開發

最近,我又挖了幾個開源項目的坑,Ledge、Ledge Framwork、Igso 等等。每次挖新坑的時候,經常性地都要花很多的時間,想着怎麼編寫 README、完善 README。而就是這麼一個簡單的 README 的編寫,它都要花費我相當長的時間,或是幾個小時,或是幾天。

問題來了,我真的是在寫 README 嗎?

引子 1:不止自述的 README

README,又稱“自述文件”,是隨着軟件發佈的一種說明文件,裏面通常包含有軟件的描述或使用的注意事項。

在衆多的開源項目裏,README 是我們最常修改的文件之一。每當我們添加了一個新的功能,一個新的特性的時候,我們的第一反應就是更新一下 README,以向世人宣告我們的開源產品又添加了新的功能。

所以,在我的那本《GitHub 漫遊指南》裏,其中有一部分的話題就是關於 README 的編寫。對於一個 README 來說,有這麼幾個關鍵要素:

  • 一句話簡介。這個項目做什麼?

  • 項目介紹。它解決了什麼問題

  • 特性。包含已完成和待辦

  • 使用指南。如何一步步使用這個項目

  • 示例。hello, world 示例

  • 開源協議。

對於某些項目來說,它們還有:

  • 項目對比。如性能、特性等

  • ……

其中的一個主要原因是,在開源領域 GitHub 有比較高的話語權。而 GitHub 使用了 README 作爲項目的『首頁』,作爲了整個開源項目門房。而正是這個首頁,讓我們重新意識到 README 的重要性,刷新了 README 的作用。

引子 2:產品而非項目

緊接着,在上一篇文章裏,我強調了開源產品而非項目。再重新以產品化的維度來考慮 README 的幾個要素,我們就有了者的對應關係

  • 電梯演講 <-> 一句話簡介

  • 用戶旅程 <-> 項目介紹

  • 競品分析 <-> 項目對比

  • 用戶故事 <-> 待辦清單

  • 示例和使用指南 <-> 用戶手冊

  • ……

換句話來說,通過編寫這個 README 的同時,相當於是一次關於這個開源項目的產品化思考。

README 驅動開發

由於,看不到一個成熟的 RDD 定義,所以我先按我的理解定義出第一個版本的 README 驅動開發:

README 驅動開發是一種通過事先編寫 README 的方式,以一步步驅動出受用戶歡迎產品的軟件開發方法論。它被廣泛的應用在開源軟件領域,旨在通過從使用者的視角來思考軟件的意義和用戶體驗等。

從這個角度來看的話,在編寫 README 的時候,我們要讓使用者能:

  • 一眼能理解項目的目的。

  • 快速瞭解項目的效果。即通過截圖或者是線上 DEMO 等方式

  • 迅速地獲得反饋。即我只需要執行一個命令,或者是打開網頁,就能知道的效果。

  • 知曉他她們的權利與義務。即 LICENSE

  • ……

也就是爲什麼 README First 在開源領域非常流行的原因。

README First

README First 即通過先編寫 README 的方式來:

  • 重新思考項目的價值,而無需真正動手寫代碼。

  • 吸引更多的潛在用戶或者是開發者。

  • 做正確的事情。

  • 構建更好的開發者體驗。

它遠遠要比你做完一個開源項目,再去編寫 README 來得快速、可靠。特別是,對於 GitHub 這樣的開源平臺來說,當別人爲你的項目 star 的時候,他/她的 followers 就可以看到這個動態,進一步地提升項目的傳播效果,進一步地爲你帶來更多的 star。

而如果你的項目的 README 不夠吸引人的時候,那麼你就失去了這種先發優勢。

持續更新

它是一份初期的文檔,隨着項目的進行,越來越多的需求將會由社區反饋過來,文檔也會越來越完善。

README 測試

順便一提,最近我開始在尋找一種新的測試方式,README 測試。

既然一個 README 可以寫成結構化的,那麼它必然也是可以測試的。它可以是類似於 Gauge、Cucumber 等這樣的 BDD 框架,也可以是解析 markdown 後生成的特定的測試用例。

結論

程序員恨別人不寫文檔,自己恨寫文檔。

README 就是一個輕量級的文檔方案。

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