1.3 再论合作博弈
合作博弈的原则
软件开发是一个(有资源限制的)创造和沟通的合作博弈。博弈的首要目标是交付有用的、可工作的软件。次要目标,即博弈的积淀,是为下一轮博弈做好准备。下一轮博弈可能更改或替换系统,也可能是创建一个相关的系统。
1.3.1 程序员成为沟通专家
这种“软件开发是一个创造和沟通的合作博弈”的言论是一束非常不同的光,突然照亮了我们这个领域的人们。
通常有一种定式,认为程序员都是不擅沟通的人,他们喜欢独自坐在昏暗的房间里,对着电脑屏幕。
然而,这不是一个真的定式。程序员只喜欢交流那些他们喜欢交流的事情,通常是那些他们参与的程序。程序员们喜欢交换一些关于XML-RPC的经验或者面向对象设计与关系型数据库映射方面的难题。他们只是不喜欢加入到那些闲聊之中去讨论一些他们认为不相关的事情。
结对编程(programming in pair)是一项两个人坐在一起共同编写他们的程序的技术(Beck 2000),这项技术已经有了令人惊讶的高认可度。我说“令人惊讶”是因为:很多程序员第一次都预测他们不能那样工作,然而在尝试了一两周之后,他们就发现自己真的喜欢上结对编程了(Cockburn, 2001b)。
这个定式有积极的一面,即它强调了合作博弈的“创造”部分。直到现在,对于编程的关注更多集中在创造的博弈上,而不在沟通的博弈上。程序员对于彼此讨论编程问题的兴趣挡住了他们与出资人、用户和业务专家讨论业务问题的通路。
我们可以把这一问题的部分原因归结于我们的教育课程。想象一下,当人们翻阅大学的课程指南的时候,他们看到了两类课程:一类是要求很多读、写、说,还要求一些编程的课程;另一类是要求较少的读、写、说,但要求更多的单独工作和构建工件的课程。我们很容易就能想象出:那些喜欢说话的人会选择第一类课程,而不太喜欢说话的人则会选择第二类课程。
在历史上,我们专业的成功来自于一个人能够好几小时坐在那里不跟别人说话,凝视着纸或者屏幕。那些不喜欢这种工作方式的人都离开了这一领域。那些新的方法集,尤其是“敏捷”方法,更加强调沟通。人们选择这一职业是因为它不要求很多人际沟通,而现在,却突然间又要求这些人变得擅长人际沟通了。
只有大学才能扭转这一普遍特征。在软件开发的课程表中,大学应该增加一些包含沟通密集(communication-intensive)的课程。
在丹麦的Aalborg大学里,有一个新的信息专业,其中包含了软件设计和沟通技能(Mathiassen 1999)。系主任Lars Mathiassen说,要注意到人们在个性上的差异:新课程会吸引那些愿意接受沟通负担的人,而老课程会吸引那些对沟通不太感兴趣的人。
在某种程度上,软件开发真得是一个创造和沟通的博弈,我们必将看到在大学课程里会有对沟通更大的强调。
| 回书目 上一节 下一节 |