昨天有幸邀請到周愛民先生在懶懶交流會上分享《架構,框架和庫》,很精彩睿智的講演,受益頗多。其中提到對架構的一個描述:
架構是把握問題的關鍵,平衡設計。
很認可。下面是我的理解:
為了進一步闡釋,下面舉一個實例。
很喜歡看書,好幾年前開始,喜歡從網絡上收集各種書籍:
(幾年前的詳細分類已丟失,上面僅是模擬能想起來的幾個類別)
按照上面的書籍整理方式,很快發現一個問題:有些書籍,會同時屬於多個類別。比如《紅樓夢》,放在“古典文學”裡好呢,還是放在“精品小說”裡好?很明顯,這涉及圖書管理學的經典問題:如果做一個合理有效的分類?
於是開始嘗試從各種維度來重新分類,甚至跑到大型圖書館裡去借鑒圖書館的分類方式。但很快我就崩潰了:中國文學 – 古典文學 – 小說 – 清朝 – 紅樓夢。我不是圖書管理員,我就是想收集點自己喜歡看的書而已。這種完美主義者的“科學”分類法立刻被我拋棄。
後來很長一段時間,我的書籍分類一直很混沌。經常隔上幾個月,就要大動干戈全部調整一次,讓自己追求“完美”的心靈臨時安頓。
很漫長的一段時間,很糾結的一段折騰。
一直到大約一年前,忘了當時是什麼觸因,突然就找到了一個讓自己非常滿意的分類。在給出這個分類前,我們先“馬後炮”一把,嘗試從架構角度來進行分析:
這個例子中,什麼是問題?表面上看,是如何找到一個合理的圖書分類方式。但這真的是問題嗎?顯然不是。大型圖書館的書目,絕對是合理的。那問題在什麼地方?稍一分析不難發現,問題不在於書目分類是否合理,而在於是否適合我的習慣,是否能滿足我的需求。(初始的分類問題被轉換成了需求問題,有關問題轉換方面的話題,推薦閱讀溫伯格的書籍)
那麼,什麼是我的需求?我為何要對書籍進行分類?仔細思考,我將需求整理為:
從上面的描述中,可看出我的需求有時間線。我的需求是根據閱讀書籍的時間來組織的!“時間”就是我尋找了很久的書目分類的維度!因此時間維度就是該信息架構問題的關鍵!這樣,立刻就有了看似簡單但能很好解決問題的分類方式:
一切就這麼簡單!按照這個方式重新整理書目後,立刻心曠神怡。
當然,這裡也涉及到權衡:
上面兩個問題,不同的人有不同的方案。我的選擇是:
這就是權衡!
最後再給一個案例,我的 Google Reader 訂閱項分類:
必讀 — 符合自己脾胃的精品訂閱源
閒讀 — 可看可不看的訂閱源
待通讀 — 新發現的一些相見恨晚的博客,想翻閱其所有文章
更新 — 軟件更新提示等訂閱源
自從采用這個分類後,信息篩選的時間大大減少,有效閱讀的時間增加了很多。注意:這個分類適合我,但未必適合你。適合你的分類,可以從自己的真正需求出發,仔細的思考和分析,通過探索和實踐去獲得。
上面說的雖然是很小的生活中的分類問題,但往大裡說就是信息架構,再類推開去,就是軟件架構。道理是相通的。架構是個過程,是思考、實踐,再次思考、再次實踐的過程。在這過程中,下面三個問題經常遇到:
架構就是在特定應用場景下,不斷追問和尋求以上問題的過程。在這過程中,你的所有決策的集合,就是架構。