無為論壇采用的是樹形排版。俺一直覺得樹形排版是論壇唯一合理的排版方式。
被肉聯封殺,俺想過做自己的論壇。做論壇,有兩個問題,一個是hosting,一個是軟件。論壇的免費軟件外麵比比皆是,但是沒有一個是樹形排版的。俺之所以喜歡肉聯,一個主要原因是它用的是樹形排版。俺真正決定自己做論壇,是在看到了胡同口的開源軟件之後。胡同口也是用的樹形排版。
這篇文章俺以前就計劃要寫的。前兩天藍鳥哥和阿九網友提到論壇的排版方式,俺這兩天就一直在思考這個問題,所以決定把這篇文章寫出來。
很多年前俺去美國找工,第一次,又沒有人問,所以是一頭霧水。好在有一個論壇,上麵有很多人討論去美國找工的問題,尤其是有關TN簽證的事。俺在那個論壇裏得到了不少有用的信息,所以俺去美國找工,辦簽證,沒有走彎路。
那個論壇用的是樹形的排版,跟無為一樣。當時俺是第一次見到這種排版,覺得真是太好用了,太合理了。
之前見到的論壇,都不是那樣。從那以後見到的論壇,也不是那樣。論壇為什麽不采用樹形排版,這是俺一輩子比較納悶的幾件事之一。
要解釋清楚論壇為什麽該用樹形排版,俺覺得首先要解釋兩個概念,一個叫 context,另一個相關的,叫 context switching。俺覺得這兩個概念無比地重要。
俺想大家都有過這種經曆,就是做了一個奇怪的夢,夢裏你不是你自己,周圍的人和事也完全是陌生的。你醒來以後,費了好大功夫才反應過來你是誰,你在哪裏。
你是誰,你在哪裏,就是 context。做了一個怪夢,你需要時間精力再回到你原來的 context,就是 context switching。
俺的 context 定律有兩個意思:第一,context 很重要;第二,context switching 有代價。
加拿大有一個哲學家,叫 Marshall McLuhan。他有一句名言,叫"The medium is the message"。
所謂 The medium is the message,俺估摸著就是說載體就是信息,或者說載體是信息的重要成分,或者說載體決定信息。
論壇裏的帖子跟 context,有同樣的關係。每個帖子在話題裏麵的位置,就是"你在哪裏"。被回的帖子,就是"你是誰"。任何一個帖子,context 是這個帖子全部信息量的重要成分。論壇如果用平麵排版,這個 context 就蕩然無存,讀者看帖子的時候,往往有不知身在何處的感覺。
這個 context 裏麵,俺覺著被回的帖子尤其重要。這個被回的帖子,俺甚至覺得要占整個信息量的40%。因為如此,用平麵排版的論壇,網友們往往要引用被回的帖子。引用少了,信息量不足。引用多了,既浪費版麵,又浪費讀者時間。大多數情況下是沒有引用,所以讀者心裏永遠也不會對討論有一個完整的畫麵。
平麵排版的論壇,一般都有兩頁。一頁顯示所有話題,用戶點擊某一個話題以後,論壇切換到另一頁去顯示這個話題的所有帖子。從一個話題到另一個話題,要經過兩次 context switching。這些 context switching,大大地降低了閱讀效率。
降低閱讀效率的另一個重要原因是讀者沒有機會進行批量處理(batch processing)。樹形排版的論壇,一頁可以顯示二三十個話題,用戶不用任何 context switching,就可以 scan 所有話題的所有帖子。這個 scan,就是批量處理。平麵排版的論壇,讀者就無法 scan。
平麵排版的論壇,還普遍有一個俺百思不得其解的怪癖,就是每一個帖子都顯示發帖者的所有信息,從何時注冊,到積分多少,到資曆深淺,到小圖像,不一而足。這些信息,往往要占五六行,帖子本身,往往隻有一行。這種排版,無端地浪費了大量的空間。
既然樹形排版這麽合理,為什麽絕大部分論壇不用呢?
一個道理,說起來大家都懂,大家都同意,但是做起來卻是背道而馳,為什麽?俺覺著,那是因為做的人沒有真正理解這個道理,至少是沒有刻骨銘心地理解,沒有切膚之痛。
1+1=2,小孩子都懂,都不會反對。但是到具體問題,很多人會得出 1+1=3 的結論。說 1+1=3,確實荒唐,但是類似 1+1=3 的說法做法,卻是層出不窮。
前不久在<文學城>發文章,被一個叫多哥的網友發長篇大論批評了一番。多哥說俺走歪門邪道,要給俺一個當頭棒喝,否則俺會毀了自己 :-) #14634
令多哥如此糾結的,是俺文章裏的一句話:"計算機軟件裏麵有一個很重要的概念,名字叫 coupling",多哥說俺概念不清,邏輯混亂。
這個 coupling,是俺麵試時候愛問的一個問題。以前問的時候,竟然還有不少人根本就沒有聽說過。現在似乎大家都知道,但是大部分人都答不好,包括這個多哥。
coupling 這個概念,跟 context 一樣,無比的簡單,任何人都能夠理解,都沒有異議。但是碰到現實問題的時候,很多人的做法跟正確方法背道而馳,說明他們其實並不是真正地懂。
他們的做法,無異於說 1+1=3。
麵試時問 coupling,答不好的人肯定就是沒有真正地懂。什麽樣的回答算答不好?
第一,沒有自己的觀點,沒有自己的經驗,隻能背定義,背書上的誇誇其談。多哥的長篇大論,就是這種情況。
第二,說 1+1=3。多哥說,coupling 這個概念,隻有軟件設計過程中才有,計算機軟件本身,並不存在這個概念。多哥的這個說法,就是 1+1=3。其實 coupling 是一個普世概念,既然是一個普世概念,它就是無處不在。不光計算機軟件裏有,連日常生活裏也是比比皆是。
第三,做 1+1=3。context 和 context switching,也是普世概念,也是無處不在。很多流行的做法,其實都是違背了 context 和 context switching 的原理的,隻是大家不知道。
既然樹形排版這麽合理,為什麽絕大部分論壇不用呢?
context 和 context switching,也是普世概念。
無論做什麽事情,都需要一個 context,這個 context 需要時間建立起來。腦力勞動者尤其如此。
俺在 IT入門係列一開始就提過,碼工一個很重要的能力就是心中成像。碼工在寫代碼的時候,心中往往要同時成很多像。這些像的總和,就是 context。碼工心裏的這些像越完整,他們做事的效率就越高,出錯的可能性就越小。這些像需要時間建立起來,一旦被打破,他們又要花時間重新成像。
所以對碼工來說,context 和 context switching 無比重要。可惜大部分人都不懂這個道理。
俺打工的某一個地方,老板喜歡做 Scrum。每天早上十一點鍾,她把俺們招到一個會議室,一個一個地給大家匯報這一天做了什麽,有什麽問題。每天的這個 Scrum meeting,都差不多要半個小時,有時候甚至是一個小時。
辭職的時候,老板要俺給她提意見。俺說,你每天早上的那個 Scrum meeting,嚴重地違反了 context 和 context switching 的原理,是 1+1=3。
俺跟她說,碼工做事,需要很大的 context,所以需要極度的 concentration。你的這個 Scrum meeting,把俺們辛辛苦苦建立的 context 砸了一個粉碎,而且還是在早上這個黃金時間。因為這個,俺們的工作效率至少降低了30%。
老板聽了以後,把 meeting 移到了中午12點,而且說要壓縮時間。俺不知道她是不是真的懂了 context 和 context switching 這個道理。如果真的懂了,俺以為就不應該搞 daily Scrum meeting。
軟件行業不懂這個道理的,俺覺得是大有人在。俺工作過的不少地方,都要求碼工把任何事情,無論巨細,無論跟誰有關,發 email 的時候都 CC 到整個 team。俺每天收到的 email,少則一百封,多則三四百封。俺不光要看這些 email,而且還要及時地回應。
每看一個 email,就是一個小的 context switching。一天裏一個接一個的 context switching,效率是可想而知。
老板問,大家說說,俺們的效率為什麽這麽低? :-)
context 和 context switching,在用戶界麵上比比皆是,俺覺得大部分做用戶界麵的人都沒有明白這個道理,連 Google 都不例外。
如果你用 Google Chrome 去做 Google search,一開始這個 search box 是在窗口的正中間,但是你輸入了一個單詞以後,這個 search box 會突然消失,你敲的 search 單詞竟然出現在瀏覽器的地址欄。俺這個人膽子小,每次 Google 這麽幹,都嚇俺一大跳。
國內的網站,一個普遍的毛病就是什麽東西都開一個新窗口。一個新窗口,就是一個新的 context,所以用戶每時每刻都要做 context switching。
肉聯發完一個帖子,它不是給你帶回到論壇的網頁,而是重新開一個窗口,這個窗口裏隻顯示這一個帖子。這個也是 context switching,而且毫無意義。
肉聯的帖子如果有正文,你點擊以後帖子會在一個新窗口裏顯示。看一個帖子,就有兩次 context switching。而且看帖子的時候,讀者又失去了整個話題這個 context。
論壇 context switching 最極端的例子,是文學城。俺去年提過意見,可惜他們說文學城一向如此,大家都很喜歡。
文學城的帖子,限製字數很少,基本上大部分帖子都不能被全部顯示。要想看到帖子的全文,用戶隻有點擊去一個新窗口看。而且帖子有沒有正文,用戶並沒有任何何 visual clue,隻有點擊了才知道有沒有。
所以在文學城,每看一個帖子都是兩次 context switching。而且看帖子的時候沒有話題的 context。
在俺看來,這個是不折不扣的 1+1=3。