第三章 如何研究程序设计

 

在前两章里,我们已经将程序开发看成一项以人为主体的行为来加以研究,但由于程序开发是一项异常复杂的行为,现有的有关人类行为的科学结论并无法完全适用,因此我们必须创造一些新的方法来研究程序开发行为。本章介绍了几种研究人类行为通常使用的方法,并一一指出这些方法不完全适合程序开发行为研究的原因。

 

1.自省

例如,在使用PL/I语言的时候,有些程序员无法处理五层以上括号的嵌套。通过对这种现象的自省,我们还不足以得到下面更具一般性的规律:人脑无法处理五层以上的括号。

 

就程序开发心理学而言,每个命题都有可能成为一条“定律”。仅仅凭借一个关于自省的例子,还远不足以作为支持其成为定律的证据。为了获得一条“定律”,我们必须对其原理进行研究,以便对其应用范围做一界定----因为,每条定律都会受到这种限制。确实,通常对这种限定的了解,较之对定律本身的了解更重要;而只有对大量的案例进行调查分析之后,才有可能明确这些限定。

 

2.观察

我们要观察人们到底在做什么,而不是他们自认为在做什么。

 

需要注意的问题一:观察只能告诉我们人们确实在做或做过的事,而不一定就是他们能做的全部。因此,即使在对几百名程序员进行观察后,没有发现任何人使用超过五层的括号,我们也不能据此得到“结论”:没有人能使用六层括号。

 

需要注意的问题二:要搞清楚我们究竟要观察什么。一旦我们观察到一例六层括号,我们还需要对促成或者妨碍这一案例发生的环境条件进行界定。

 

需要注意的问题三:观察者与被观察者之间的干涉现象“霍桑效应”。此效应得名于西部电气公司所属的霍桑工厂。1924~1927在此进行的一项有关工业心理学的实验以失败告终。在实验过程中,无论工作条件如何变化,生产效率始终一路攀升。实验者最后意识到,这是因为工人们受到关注内心油然而生的自豪感产生的效应。解决的办法:“参与式观察”,观察者融入到被观察者的文化氛围中而不会被察觉。

 

在有关计算机的研究中,我们可以使用计算机对程序开发进行不为人察觉的观察。但是计算机产生的数据量巨大,给研究人员分析提取有效数据带来障碍。而且计算机用于记录日志的计时分辨率通常为一秒,但在许多心理学研究中,我们需要精细到毫秒的级别。

 

3.实验

为了降低数据量太大带来的处理的代价,同时增加与我们感兴趣的行为有关的信息却增加了,我们可以设计一些实验。

 

实验带来的限制:

I.          由于实验经过了高度的精炼,以至于可能遗漏了我们最感兴趣的数据。

II.       实验的特殊条件会限制被试的行为,以至于我们在也无法观察到在自然条件下所观察到的结果。

a)         选择实验对象时,过分依赖于实习生

b)        强调程序开发是个体行为,忽略群体效应的研究

个体式的研究方式,必然会强行将单个个体从其正常的工作环境中剥离出来。如果在研究青蛙游泳的行为时,有人将他们的腿割下来放到水中,然后试图观察到腿会游泳,那么一定会让人贻笑大方。然而那种强迫程序员在工作时与外界隔绝的做法,与割青蛙腿有什么区别呢?事实上,很多人都习惯于这样一种推理的逻辑:既然青蛙是凭借腿来游泳的,为什么还要去研究其它部分,把一件原本“显而易见的”事情搞得如此“复杂”呢?

----很精彩的一段比喻,不过我认为对程序个体行为的研究不仅非常重要,也是研究群体效应的基础。

4
.心理学测量

我们可能用“从事程序开发时间的年头”来衡量“程序开发经验”的问题。但在有关人类行为的观察和实验中,可以测量的指标很多,我们不得不在林林总总的指标中搜索,期望者通过某一个或少数几个,就能获得一些领悟。在这个过程中,任何蛛丝马迹都不能放过,也不能将任何看起来荒谬的观点排除在外。

 

就目前而言,在程序开发心理学方面将要进行的大多数工作,不得不先去“寻找问题本身”,我们需要首先弄清楚哪些是可以测量的以及那些是值得测量的。与其说我们在研究被观测对象,不如说我们在研究测量的方法本身。

 

5.利用行为科学中的数据

 

在行为科学中以前所积累的经验有能够为我所用之处,但这些理论所依据的前提条件,与程序开发过程的实际情况相去甚远。

 

我们可以从众多领域中获得有益的启发,通过结构中存在的缺陷,将有助于我们确定可以向哪些领域寻求帮助。但是,我们千万不要把这种结果太当回事,这只不过是一个提供方便的工具而已。

posted on 2004-09-17 22:17  banian  阅读(1304)  评论(0编辑  收藏  举报