IT 入门 实战篇 (13)context and context switching

来源: 1sthiker 2015-01-18 13:01:58 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (12026 bytes)
本文内容已被 [ 1sthiker ] 在 2015-01-18 13:54:25 编辑过。如有问题,请报告版主或论坛管理删除.

无为论坛采用的是树形排版。俺一直觉得树形排版是论坛唯一合理的排版方式。

被肉联封杀,俺想过做自己的论坛。做论坛,有两个问题,一个是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。
 

 




更多我的博客文章>>>

所有跟帖: 

很多事情都有个习惯问题,我就喜欢文学城论坛的排版,一目了然 -天蝎- 给 天蝎 发送悄悄话 (75 bytes) () 01/18/2015 postreply 15:20:35

文学城的排版也是树形的,就是我认同的那种。文学城的问题是对每个帖子的处理,每个帖子都需要点开,不点开就不知道有没有正文。另外帖子 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/18/2015 postreply 15:42:46

另外帖子标题的限制字数太少,很多帖子都得进正文,所以读者非点开不可。一点开,就是两个 context switch。 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/18/2015 postreply 18:03:39

也是,但限制字数是可以节省版面,加快浏览速度。两全其美很难做到,必须要做取舍 -天蝎- 给 天蝎 发送悄悄话 (0 bytes) () 01/18/2015 postreply 19:50:08

贴子后面有字节标明,通常0byte就是没有正文 -天蝎- 给 天蝎 发送悄悄话 (0 bytes) () 01/18/2015 postreply 19:52:19

你这一说我才知道有这个讲究。相信很多网友都不知道 - 0 bytes的帖子经常有很多reads。 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 04:10:12

read 了以后还不知道怎么回去,我很多次以为这是新窗口,把它关掉了。关掉了才发现文学城没了。 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 04:16:56

相信很多网友都知道。lz,不管是在工作中还是网上还是生活中 -arcsigh- 给 arcsigh 发送悄悄话 (173 bytes) () 01/19/2015 postreply 06:45:31

你的思路有点偏negative。你说老板被忽悠了,我信。你说老板有意让下属效率低,我不信。老板之所以被忽悠,是因为整个行业的不成 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 19:19:18

老板之所以被忽悠,是因为整个行业的不成熟。 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 19:41:35

老板并不想降低手下的郊率,但是以不损害自己为原则 -arcsigh- 给 arcsigh 发送悄悄话 (269 bytes) () 01/20/2015 postreply 01:05:53

好奇一下,连我这个和电脑不搭界的人都看出来 0 bytes 是空帖,读帖好像你是内行, 为什么不知道呢。 -废话多多- 给 废话多多 发送悄悄话 废话多多 的博客首页 (0 bytes) () 01/19/2015 postreply 08:54:19

以前学用户界面,有一个例子印象一直很深刻。碰到一扇门,是push还是pull?门上是一个环子,大多数人都是pull。门上是一小块 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 19:09:46

板,大多数人都是push。即使你在板上写上PULL,或者在环子旁边写上PUSH,很多人还是要犯错误。 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 19:16:48

俺最大的缺点就是看东西不仔细:) -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/19/2015 postreply 19:11:33

呵呵:建议将“0 byte” 改为“无内容” -halfdummy- 给 halfdummy 发送悄悄话 (0 bytes) () 01/20/2015 postreply 00:12:40

最好的办法就是不给用户点击的机会 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (0 bytes) () 01/20/2015 postreply 15:52:12

6 bytes是一个空行。不一定是不知道,有时候我点进去想接茬儿,但想想又改主意了,也许很多人如此 -慧惠- 给 慧惠 发送悄悄话 慧惠 的博客首页 (6 bytes) () 01/19/2015 postreply 16:34:03

论坛不点开定律 -1sthiker- 给 1sthiker 发送悄悄话 1sthiker 的博客首页 (881 bytes) () 01/20/2015 postreply 15:50:42

Scum其实就是daily status report. 目的是三个 -arcsigh- 给 arcsigh 发送悄悄话 (490 bytes) () 01/19/2015 postreply 02:28:42

developer 太伟大了。 养了这么多闲人。 -jiuyuetianxin- 给 jiuyuetianxin 发送悄悄话 jiuyuetianxin 的博客首页 (0 bytes) () 01/19/2015 postreply 10:03:46

嘿嘿,不能吃独食,就是这个理儿! -arcsigh- 给 arcsigh 发送悄悄话 (0 bytes) () 01/19/2015 postreply 11:39:32

好人一枚 :) -xiaoxiao2013- 给 xiaoxiao2013 发送悄悄话 (0 bytes) () 01/19/2015 postreply 13:30:42

有的公司就这样, 真干活的没几个 -xiaoxiao2013- 给 xiaoxiao2013 发送悄悄话 (0 bytes) () 01/19/2015 postreply 13:25:30

请您先登陆,再发跟帖!