面向開發者的網站,真的是認真設計過的嗎?
最近幾年,隨著技術產品化的流行,越來越多的公司(如雲廠商、開源軟體公司)將軟體提供給市場,2D(to Developer)成為了一種炙手可熱的商業 “風口”。所以,我們會看到各種面向開發者的網站以及各類的服務。
只不過,絕大多數的公司並沒有考慮開發者們的體驗,諸如於:
- 只需要在網站輕鬆點選三步,你就可以建立一個專案。呵,就不能提供個 CLI 一步到位嗎?
- 在頁面上拖拉拽就可以構建流水線。呵,就不能提供配置來修改嗎?
- 我們提供了高階搜尋功能,你需要選好你的條件,就能搜尋。呵,就不能提供表示式和示例嗎?
- ……
從傳統的意義上來說,這種設計也沒錯,面向新手開發嘛!只是,這樣的功能,新手用了一次之後還需要嗎?一個有經驗的新手,它需要的就是一系列更便捷的方式。
在這個關注於體驗的時代,我們還能設計好面向開發者的網站嗎?你們有考慮過開發者體驗設計嗎?
上半場:搜尋框的體驗設計
剛好,最近,我,一直糾結於一個搜尋框的設計。所以,先讓我們來看,兩類型別的不同搜尋框設計。
一個普通的搜尋框:面向普通使用者
因為不可描述的原因,我的部落格一直在 AWS 上,大概快有七八年了。同樣是一個搜尋功能,相比於某些公司,AWS 在這方面就能提供一個更好的體驗。通過 Option
+ S
就可以喚起搜尋框,隨後就可以到具體服務下的: Top features。
具體的服務提供得好不好另說。但是,這種:
- 還有能用的搜尋。更不用說有的雲廠商,連搜尋個 “AI” 都做不好?
- 適合於顯示器的字型與佈局。開發人員,誰沒有個大顯示器呢?
- 快捷鍵喚醒搜尋。老程式設計師,誰沒有過滑鼠手呢?
當然,AWS 這垃圾伺服器太貴了,大抵這就是智商稅。在傳統的 2B、2C 場景下,強業務方的公司裡,業務領導決定了一切,他們看不出平平無奇的 Google 搜尋框的背後花費了幾億,甚至於幾十億的成本,為的就是為幾十毫秒。而在 2D(to Developer)的場景下,開發人員完全可以看出這方面的技術水平和能力。
基於程式碼的搜尋框
最近,在開源軟體 ArchGuard 裡,我們實現了一個名為 Insight 的架構洞察功能的 PoC(概念驗證)。在這次驗證裡,我們參考了 SourceGraph 的搜尋設計,使用 Monaco Editor 構建了這個功能的搜尋框。結果,如下圖所示:
圖中的 field:dep_name == %dubbo% field:dep_version > 1.12.3
即為搜尋框。與搜尋功能相比,它更像是一個帶有搜尋功能的輸入框;然而,搜尋的方式是通過表示式的方式來進行。而為了更友好地支援 表示式
的輸入,表示式變成了一個程式碼編輯器。只有在程式碼編輯器裡,你才能自由地去書寫這種形式。
如果你有一定的前後端開發背景的話,那麼就能評估出這樣一個功能的工作量:
- 語法解析、高亮的輸入框。在 Monaco Editor 上自定義語言、語法解析、高亮、自動填充等。
- 自動關聯上下文。
- 表示式設計。
- 表示式合法性校驗。
- ……
後期,也非常有益於擴充套件,加一個新的欄位什麼的,完全不考驗設計人員,也不考慮開發人員。於是乎,在考慮了工作量和之後,選擇了這樣的一個方式(PS:在領導的角度,下面的方式看上去就非常高階):
看上去還不錯,如果不新增新的欄位 —— 但是,新增新的欄位幾乎是 100%。也許是開發者的體驗都讓狗吃了,面向領導服務才更重要 —— 我見過其它更迷之設計,只是因為領導覺得程式碼化(配置化)的體驗對開發者不好。所以,總有公司會比 K8s 的配置化做成了表單……,不是嗎?
下半場:“狗” 看了都直搖頭的文件
首先,文件都是給不懂的人寫的,包括寫文件相關程式碼的人。其次,文件都是寫出那些出現 bug 的人,只要不出 bug,我就不需要看文件。
- “啊,這個文件不錯,良心地給了個程式碼示例”
- “等等,這是一個圖片”
- ”嘿,我去找個圖片識別工具“
- ”啊,這個圖片識別工具需要看一下文件“
好慘。
祈禱過程不出錯
每次在使用新的工具的時候,我總會期待我不會在過程中失手。然而,有時候會在最後一步,有時候它是在第一步。所以, 如果你的工具足夠穩定,你就不需要任何文件 。
而在用了文件之後,我選擇再試一次,並祈禱不出 bug。
以至於我至今懷疑,國內的新手程式設計師不看官方文件的習慣,可能源自於國內的公司給新手們一個印象:官方文件非常不靠譜。
讓人迷失的連結
在考慮平穩開發者體驗與文件體系的時候,我們通常會這麼考慮: 有意義的 URL 命名 。以便於構建一個網站-程式碼-文件相關聯的體系,即程式碼出錯可以找到文件,文件可以連結到網站
然而,使用國內的雲服務時,我經常丟失在文件的海洋裡。於是乎,我會有幾種方式解決:
- 自帶的文件搜尋。我沒見過,幾家公司能做好的,因為自己人都不用。
- Google / 百度搜索。說實話,在這一點,百度還是比 Google 好用,建議你使用另外一家的服務。
- ……
作為一箇中老年人,我儲存了這個地址在我的記事本里,以便於下次開啟的時候使用。於是,下次開啟記事本, 狗看了都就直搖頭 :
- /document_detail/1364/53045.html
- /document_detail/1234/45678.html
- /document_detail/13432/23445.html
地址是哪個來著,微服務框架是哪一個連結來著?咦,這個連結怎麼失效了?要怪就怪微信不支援 URL preview。年輕大就是吃虧。
文件還需要體驗嗎?
類似的一些槽點就諸如於《 文件工程體驗設計:重塑開發者體驗 》所描述:
- 文件程式碼不同步。即文件的 API 變化可能落後於程式碼,導致 API 與文件出現不一致。
- 頻繁的 API 變更。API 變更時,文件需要手動進行更新,不能自動化同步。
- 概念不統一。對於同一個概念,文件的不同地方描述不一致。
- 重複的文件塊。文件需要重複引用某一部分的文件,不能像程式碼一樣引用。
- 程式碼無法執行。按照文件的步驟下來編寫的程式碼、複製的程式碼,是不能執行的。
簡單來說,就是人們從未把 文件當成一個工程 來考慮。當你把一個支撐域當成核心域的時候,那麼剩下的就自然而解了。
中場休息:UI vs CLI
我覺得這又是另外一個很有意思的話題:如果我們都用 CLI 的話,那麼誰來考慮 UI 的問題。不過,我反正是不想繼續吐槽了,前面都做不好……。
當然,在設計 CLI 的時候,還要考慮這個問題:
- CLI 的文件體驗設計。又繞回去了
- 服務更新時,是否提供自動遷移能力?
- CLI 的更新機制。
- ……
在不考慮將開發者的體驗作為第一優先順序時,我覺得沒有人會去考慮這些。要怪就怪程式設計師都鍛鍊得太刁鑽了 —— 誰讓他們就是寫體驗的人。
其它
咦,過頭來看,什麼是開發者?什麼是開發者的體驗設計?
所以,我覺得程式設計師都應該在顯示器下面放一個手辦,不是用來祈禱上線成功,而是用來祈禱自己不用寫文件 —— 這樣就不會被罵。
- 如何用 DDD 給 DDD 建模,破解 DDD 的魔法?
- 去中心化線上協作:Feakin 的圖形協作是如何設計的?
- 移動應用架構治理初探:從依賴分析與 Android 應用的生命週期說起
- 技術的成長:如何從畢業生到技術專家?
- 圖的抽象:概念與模型的構建
- 分層、分步與康威定律
- 1000 行輸入框的養成:如何平衡體驗與靈活性?
- 面向開發者的網站,真的是認真設計過的嗎?
- 架構工作臺:構建企業(應用)架構的數字孿生
- 架構即程式碼:編碼下一代企業(應用)架構體系
- 架構治理調研:規則、表示式還有語言
- 為“架構”再建個模:如何用程式碼描述軟體架構?
- 專家 x 抽象 x 類比
- 組合架構:Arduino 淺析
- “分散式” 開發規範治理
- 回到單體架構:一個開源專案的重構
- 資料處理的抽象:資料與知識處理的思考
- 領域元元件:領域特定的元件集合
- 2021 節點:趕不上變化的計劃
- 前端技術規劃與戰略:2022(草稿)