leechael.org

改過

夫過者,自大賢所不免;然不害其卒為大賢者,為其能改也。故不貴於無過,而貴於能改過。諸生自思,平日亦有缺於廉恥忠信之行者乎?亦有薄於孝友之道,陷於狡詐、偷刻之習者乎?諸生殆不至於此。不幸或有之,皆其不知而誤蹈,素無師友之講習規飭也。諸生試內省,萬一有近於是者,固亦不可以不痛自悔咎;然亦不當以此自歉,遂餒於改過從善之心。但能一旦脫然洗滌舊染,雖昔為盜寇,今日不害為君子矣!若曰吾昔已如此,今雖改過而從善,人將不信我,且無贖於前過,反懷羞澀疑沮,而甘心於污濁終焉,則吾亦絕望爾矣!

王守仁,教條示龍場諸生

在此承認當初我實在對 Framework 的存在太多的偏見,即使那時候,daqing 不斷努力去消去我這些偏見。

归因偏差

In psychology, an attributional bias is a cognitive bias that affects the way we determine who or what was responsible for an event or action (attribution).

在心理学上,归因偏差属于一种认知偏差,能影响我们判别一件事或某个行为归因于什么人或什么事情。

——Attributional Bias

动机心理学中,列出了最常见的四种归因偏差。

  1. 自我服务偏差(Selfserving Bias):接纳成功的荣誉而避免失败的责任的倾向。一个简单的例子是,在一次考试中,如果获得不错的成绩,我们在心理上更偏向于相信这是自己的能力如此而非运气的因素;如果结果相反,我们在心理上会偏向于相信这不是自己的过错,而是一些非自身能控制的因素所造成的。
  2. 虚假一致性效应(False Consensus Effect):指我们认为多数人都以与我们相同的方式来思考和行动的趋向。或者这个情景你会有似曾相识的感觉:我认为某个东西不错(或者某个主意不赖)而 y 君也会喜欢的(也会这般做的)。
  3. 行动者-观察者偏差(Actor-Observer Bias):对他人的行为做倾向归因而将自己的行为推断为情境归因的倾向。简单来说,“别人做了某事是他自身的过失,而我做了同样的事情,是环境所迫而非自身所愿意的”。
  4. 基本归因偏差(Fundamental Attribution Error):我们会倾向于将他人的行为归因于稳定的内部特征,而低估情境因素的影响。例如我们认为 A 君做某事的原因是出于自私而忽略了其他因素的影响。这一个与上面的行动者-观察者偏差是极为相似的。基本归因偏差也叫做相应偏差(Correspondence Bias)。

在 Wikipedia 上列出的归因偏差种类不只是上面的四种,还包括:

  • Egocentric Bias(利己偏差)。类似于自我服务偏差:和他人共同完成某事,认为自己做的更多,因而希望甚至认为自己应该获得更多。
  • Group attribution error(群体归因偏差)。相似于基本归因偏差,而差别在于,这个问题出现于整个群体之上而前者出现在个人身上。
  • Group-serving bias(群体服务偏差)。这个问题类似自我服务偏差,而这个问题出现于整个群体之上而前者出现在个人身上。
  • Hedonistic relevance。在 Wikipedia 上的例子是,假设 John 摔倒并且把红酒洒在 Jack 那新的白色地毯上面,Jack 或许会认为这与自身有一定的关系,即使 John 摔倒的真正原因是由于 Jack 那不平的地板。
  • Negativity effect。指人们倾向归因于,这并非对方所愿而所作出的消极行为,而忽略了其他因素在其中的影响。
  • Positivity effect。与 Negativity Effect 相反,指人们倾向归因于对方希望如此而作出这般的行为,而忽略了其他因素在其中的影响。
  • Positive outcome bias。被称之为 Positive Outcome Bias 的认知错误有两种:一种称为 Publication bias,指研究者倾向于公布已经存在肯定结果的研究;另一种称为 Valence effect,指人们高估了好运到来的可能性,或者说,是因为“过于乐观”。

上述心理学上的理论颇有意思,在推测别人行为的动机时,我们常归因某个原因,而事实上却是相差甚远;而正是这些归因偏差,或许会造成更多的错误。或许喜欢推测他人的动机已是我们人类刻在骨子里的小嗜好,看见那些抵制什么或者以什么形式(而非行动)标榜自己是怎么的一个人,却不考虑是否自己的推断中是否出现归因偏差。

又见华君的一篇东西,或许这也能归咎于教育体制和方法的问题吧。

窗边的小豆豆和放牛班的春天

很巧的是,我在同一天看了一本让我想及教育的书以及重看了一部与老师有关的电影。想及自己的专业是教育专业(体育教育),恐怕我不会是一个很好的老师。

放牛班的春天——该片中的,克莱门特和校长,都属于失意的人,在音乐上失意的人。校长把失意后的愤怒发泄于学生身上,而克莱门特却是把自己的梦想寄托于自己的学生身上。当然他也不能想到这般的后果。他作为一个音乐老师,就很认真地做好作为一个老师的工作。

早前看过《佐贺的超级阿嬷》,《窗边的小豆豆》给我的感觉与这本书很相似,或许都是采用回忆录的形式,来记叙第三者的一些事迹——就仅因为这个类似的写作方法而已。而《窗边的小豆豆》中描述的哪间小学,不知道会有多少个作为家长的读者,在读过以后,产生送子女到这般的一间学校上学的想法。

说起来,《窗边的小豆豆》的篇后语中有一句让我觉得是幼儿教育精髓的句子:

无论哪个孩子,当他出世的时候,都具有着优良的品质。在他的成长过程中,会受到很多的影响,有来自周围环境的,也有来自成年人的影响,这些优良的品质可能会受到损害。所以,我们要早早地发现这些“优良的品质”,并让它们得以发扬光大,把孩子培养成富有个性的人。

为什么而SNS

此文缘起与 Fenng: 作为每天我必上的站点之一,我希望得知我的朋友们最近在看的书,在听的音乐,看过了什么电影。个人认为利用找朋友工具添加好友是一个完全曲解好友功能的事情,如果有需要,请选择不输出该部分信息,谢谢。

SNS 有多热,看 Discuz!NT 这个东西就知道了。在我看来,SNS 有两个作用:

  1. 类似 Facebook 的初衷,poke —— 为了泡妞。
  2. Facebook 的副作用,借助收集到的海量用户信息,借助一定算法,给用户有用的 recommendation。

个人认为,豆瓣的好友功能是后者。但必须承认一个事实:即使这两个条目是相同的内容(Juno, Juno OST),但豆瓣还是会在你确认听过前者的同时,向你推荐后者。或者可以说,这是机器推荐的弊端。个人认为,现今人工智能还是无法代替人工编辑,这些在某些事情上尤其特出,例如各大新闻网站。假设是机器算法根据点击推测,我估计现在新浪的版面 90% 会被色情、娱乐新闻所占领。

所以,Fenng 的行为,我推测为,希望通过添加好友来扩大信息渠道,堆砌足够的数据来得到更好的推荐,或者,有一个我不愿意去想象的原因:像 Facebook 的 mini feed 一般,通过添加好友来进行某些推广行为;个人认为这些是恶意的行为,仅比在公众场合贴上“治牛皮癣”的广告稍微好一点,算是知道那些才是潜在的受众。我希望不是后者。至少目前看来,豆瓣好友给我带来的,都是优质的推荐,而我也希望,加我为好友或者关注我的人,能得到同样的结果。

或许上面的文字有些跑题了,为什么而 SNS 呢? SNS 只是把原本无形的人际关系用 0 和 1 表现出来,这不是单纯的划分为“好友”、“同事”而能划分出来的。而怎么分类,对于每个人来说,本来就是不同的,如果把这给实体化了,这会很糟糕。或者可以另辟途径,以 SNS 来改善原本恶劣化了人际关系,例如同事之间的,或者朋友之间的,或者知道了和喜欢的女孩之间的共同话题是什么,或者和父母以新的形式来填补代沟。网络只是一个工具,如果 SNS 只能用来泡妞,这何不是太可惜了?

这里回复上一篇中 g.zhen.ning 的留言,不再在原文中留言或者通过 Email 告知我的答案:

如果有一个category是技术栏,但里面有若干PHP,APACHE等的东西,我喜欢为很多篇是PHP的加上一个TAG。

一个还利用人工编辑分类的站点,如果是足够的良好,他们会科学而正确地处理分类的问题,例如 Amazon.com 的分类。至于 Tag,假设为了 SEO 优化,难避免就因为文中简单提及了 PHP 而加上 PHP 这个标签而让它更有用。

Untitled

Tag 只是一个链接。或许用户认为这是一个分类的名称,例如“周杰伦”,他们或许希望在点击后,显示这个 tag 下最新的条目。那么该在页面上显示哪些 tag 呢?忽略市容形式上的不同,tag 和 category 对于一个用户来说,更多的分别在于?现在是不是过高估计 tag 的好处,而忽略了 category 的局限性比 tag 给用户带来的更多的方便?

Web1.0 的站点,由于存在大量的人工编辑工作,就首页看来,即使是让用户眼花缭乱的首页,也不会让人迷失的感觉。那么 Web2.0 的站点呢?为什么我们觉得 web2,0 的站点比 web1.0 的站点为我们带来了更多的便利呢?因为我们经历过 web1.0 站点给我们带来的不便?

专家

今天看到了一个故事:什麼叫做專家 ? 什麼才是專業?

为什么会试着去让别人感觉自己很专家呢?是因为这可以自我满足?直率地说自己的不行,或者谨慎地证明着自己的说法很可靠(直到别人发现更为靠谱的方法并以此让自己信服),或者这般更好?

和专家权威们无意义地辩论是很浪费时间的事情,或者说,徒让自己浪费时间。或者可以更为低调一些:在别人面前,含糊地回应着专家们的说话。

关于 Leaf

此文已经是第二次的撰写——因为无法理解的死机事件,原来的文字全部丢失。对于一个写字的人来说,会是一个很打击的事情:或许就因此,破坏了初稿那种一气呵成的流畅,只能收拾着思绪的碎片,尽可能回忆起不久以前自己写下的文字。

首次读《大教堂和市集》已经是将近三年以前。我不知道这篇文章影响了多少的人,这刻的我肯定与三年前的我截然不同。这一次重读是出于一个偶然,或者可以加上一些很巧合的色彩:Project Leaf 的开发出于几乎停顿的状态。我希望我接下来的文字可以完整表达我的想法,以及给予那些对 Leaf 存在好奇心的朋友一些解释,为什么我这般的拖沓。

Leaf 是使用 Footbig Notes API 储存数据的 Blog 程序。简单来说,Leaf 的初衷之一,是可以让使用者不用顾虑数据服务器的问题,不需要对 MySQL Server 担忧,只需要一个运行着 PHP 的服务器,就能正常使用。

当初和 Livid 说的,大致所需的开发周期,是一个星期;而拖沓至今的已经近两个月,在公开范围内是零的进度,就连我自己也感到羞愧。在我对着 VIM 敲下文字的前一刻,我还没有任何激情,让我继续对 Project Leaf 进行代码的编写。

这里简单提及 Project Leaf 的两次重构:第一版的代码是在 PHP5 + Apache2(With Rewrite Module) 下进行开发,不超过十个人曾对这个版本的 Leaf 进行测试。但这一版本的 Leaf 没有足够的通用性,较为复杂的安装过程,在和 Sai 以及 daqing 交谈过后,第二个版本的开发开始了。我大幅度地修改代码,目标是,只需要安装了 PHP4+ 的服务器,就能正常运行 Leaf。然而问题再次出现了:对效率的追求,我对在第一版中使用的数据架构产生了怀疑。我希望储存在服务器上的每一个 bit 数据,都是优雅的。我尝试着建立一个新的数据架构,没有 XML 的繁琐,独特,人可阅读——而这一切只让事情变得更为复杂。我把第二版 Leaf 的代码疯狂地删掉,然后开始第三版的开发,然而,我的激情似乎已经完全耗尽,拖沓的我将 Leaf 的开发置于停顿状态。

我有在想我拖沓的原因。此前一次和 daqing 的谈话中,他认为原因之一,是我不使用 Framework。而我则不是这般认为,我们对于 Framework 使用与否上的分歧,让当时的谈话充满了火药的味道。我认为有必要提及我对待 Framework 的态度,我可以借此理清我的思绪:Framework 对于我,只是一个比 Library 有更丰富成熟的代码集,我不会基于任何 Framework 进行开发,我只会把 Framework 当作一个臃肿的 Library,我只是取其中我认为可靠高效的部分使用,而这一部分,随时可以被其他 Library,或者我自己的代码所替换。

真正的原因,是我在重复制造轮子,这也是我不愿意承认的原因。现有的 Blog 程序太多了,发展成熟的也不少,而我则狂妄地认为,以我 110 的智商,能比那些天才们创造出更好的东西——完全是错误的想法,这跟小孩那只是希望更炫的心态没有任何区别。此外也存在另一个问题:我并没有在使用这个程序。或者说,因为这个程序只是充满了我不切合实际的想法,也没有与我自己所需要的实际相结合,这没有一个可以让它继续存活的理由。

过往我作出了太多不成熟的决定,这一次的思考,我希望有更成熟的结果:删除 Leaf 现有的所有代码,然后找一个成熟的开源方案,在此基础上,重新开展 Leaf 的开发。我不知道这算不算是一个草率的决定,我还在思考这一切。而我希望这一篇说明,能给我自己一个心理上的安慰。

i18n

在这里 收到了一个让我惊讶的留言。此前只曾听说过 王建硕 的英文 blog 为一些将到上海旅行的外国人提供一些有用的信息,但我没有想到我会收到一个类似的求助。尽管我经常到广州买书喝咖啡,但却发现,我对这个城市的熟悉程度,仅比一个从没访问过广州的人略好一点。幸好 Google 有我所需要的答案。

我在想,有没有这般的需要,把这里稍作修整,例如换上中英文双语的 brief,以及可以提供一些更有用帮助,比不知道什么时候才冒出的技术文章,可能还会更靠谱一些。

那该死的用户体验

抽象化程度

或者我们可以这般理解用户体验:某件事情可分解为若干个步骤,而把这若干个步骤组合起来然后执行就是这件繁琐的事情,而增加用户体验要做的事情,就是把这繁琐的步骤,通过抽象化为一件简单的事情。以播放一首 MP3 为例,我们不必需要了解解码器怎么去把数字信号转化为音箱可以理解的电信号,我们只需要打开自己偏好的播放器,点击播放,而声音自然就会从音箱里跑出来。高度抽象化的结果,就是一个在当时社会文化下能了解的符号,较为相似的例子是,红色在不同时期、不同地域之间代表的含义。

响应速度

我们不能忽略一个事实:响应速度。一台生产于九十年代末电脑,和一台现时普及的电脑相比较,哪一台电脑在播放 HDTV 时更流畅呢?答案是很明显的。对于电脑来说,它们做的事情没有任何分别,都是抽象化的结果,遵循一样的步骤去完成某件事,而区别仅在于响应速度。而这则是致命的:我们不是机器,响应速度造成的差异,对于我们来说,是一个折磨。

比较

就如和女朋友上街的时候看见一个更漂亮的女孩迎面而来,或许在心底里难免就此小作比较。或许这样的比较只是无意识下进行的。就以我们常用的阅读器为例,无论 Google Reader、Blogline,还是鲜果、抓虾,都是完成同样的事情,但却因为比较,而造成选择上的差异。选择 Google Reader 的原因,或许是因为这是 Google 的产品;或者它的界面比其他阅读器更能迎合自身的偏好;或者因为 Google Reader 不会翻页而打断自己阅读的连贯性。我们不能说 Google Reader 比鲜果有更好的用户体验,在抽象化程度和相应速度相当的情况下,我们或许是因为个人偏好而产生的比较,又或者所注意的某个细节上的比较,而可能产生的偏好。当然,也会产生因为你注意了这个细节,而造成你的产品比其他产品比其他人的产品有更好的用户体验。就如 ipod,有人认为这是一个功能不强的奢侈品,也有人认为这会能让自己专心欣赏音乐的发明。

这三个因素,是我所认为影响用户体验的三个因素。用户体验也是划分群体的:群体 A 能理解标记 X 的意思,而群体 B 不能了解 X 的意思,而表达同样意义的 Y 对于他们来说,是用户体验更好的标记——对于群体 A 而言,X 是用户体验更好的东西,群体 B 则相反,Y 是用户体验更好的。为了提高用户体验,同类型产品或许在某个程度上都是一致的:一样的抽象化程度,一样的响应速度。而比较则是较为麻烦的事情,我们不能控制用户自身对同类型产品进行比较的结果。较为妥当的做法是,面向用户数目最多的用户群进行细节的优化,提高一定的抽象化程度,那般对于该用户群来说,这是同类型产品中用户体验最好的。可这不是最完美的方案:实际上,我们都是不同的个体,一千个读者就有一千个哈姆雷特,所以,做到完美的用户体验,有点像是不可能的事情。

破万卷书

标记为 2008.2 的书有六本,这说明,过去的一个月里,我读了六本书。作为孩提时的一个目标——“破万卷书”——或许较适合形容这个目标的词语,那么,目前豆瓣记录我只读过 132 本书,也只是达到目标的百分之一。如果算上在使用豆瓣之前看过的书,或许也能达到 1000 这个数字。这不是一个很精确的计算。

在接下来的日子里,如果每个月只是读六本书,那么破万卷书,怕是没有近 200 年的寿命,也是不可能的了。如果每三天读完两本书,倒是有可能在四十年后,实现这个目标。