第 1 章创造和沟通的合作博弈
在思考软件开发时,有一种富有成效的方式,那就是把它当作一个创造和沟通的合作博弈。
第1节提出了这样一个问题:“如果它不是我们正在开发的软件,那么开发软件的体验应该像什么?”。本节的目的是与主题拉开一些距离,从而发掘出其他讨论它的方式。
第2节回顾了很多被称为博弈的活动,并找到了软件开发在这一光谱中的位置。如果你还不熟悉零和博弈、位置博弈、有限博弈和无限博弈,那么可以快速地浏览本节的第一部分。接着,本节把软件开发与另一个团队合作博弈—攀岩做了一番比较,然后与两个对照者—工程化和模型构建做了一番比较。
第3节更深入地研究了把软件开发当作一个创造和沟通的合作博弈的观念。它认为这一博弈的首要目标是:交付可工作的软件,而辅助目标(或者说博弈的积淀)是:为下一次博弈做准备。下一次博弈是更改或替换系统,抑或是创建一个临近的系统。
本章的最后一节将这些观念与日常生活关联在了一起。
1.1 软件和诗歌
如果软件开发不是软件开发的话,那它会是什么?而这个体验又会像什么?我认为它像一个群体在一起写叙事诗集。我做这个比较不是因为我认为你有集体编写诗集的体验,而是因为我认为你没有这种体验。你的想象力能够向你提供各种反驳的理由,而这正是我希望唤起的。
想象一下,把50个人聚在一起,在有限的成本和时间内编写2万行的叙事诗。那么,你预料会发现什么呢?对一件事情,有很多争论。人们努力追求创造,努力竭尽所能,却没有足够的才能、时间或资源。
这出戏中的演员是谁?首先是那些订购了这首诗的人。他们想要的是什么?他们想要一些能够用来娱乐自己或打动朋友的东西,不要太昂贵,但要尽快。
接着,我们要有关键的诗歌设计师。
正如你可能想象到的,这要从一个人的项目开始。但我们虚构出的诗人发现自己承诺的太多,超出了在给定时间内她能够交付的范围。因此,她请几个朋友来帮忙。他们拥立她为首席诗人和诗歌设计师,并由她来确定主题和顺序。
她的朋友开始帮忙了,但是很快就遇到了工作的同步和沟通上的问题,其结果是不能按时完成工作。因此,他们增加了两个文员、更多的朋友,甚至在绝望的时候还叫来邻居帮忙。当然,这些朋友和邻居不是真正的诗人。因此,我们的设计负责人为那些不过分要求天赋的诗定出了分段。
你认为会发生什么呢?
有个人擅长描述性的段落,另外有个人擅长血淋淋的文字,还有一个人擅长刻画人物,这是好消息。除了这个负责的诗人之外,没有人擅长抒情。而现在她正在急得挠头,因为她没有时间写诗,而是正忙于协调、检查和分配任务。
实际上,有两个人做不到适可而止。他们两个人写了一篇又一篇的文字来描述一个配角,而我们这个负责的诗人却不能让他们把篇幅削减到合适的长度。另一个人总是对自己的工作进行重写和修订,并且永远也不满意结果。负责人想让他们继续处理其他的段落,但他们却不愿停止瞎摆弄他们之前的部分。
随着时间的流逝,这组人变得绝望,同时又新加了一些人。麻烦的是他们已经用完了资金,真的负担不起所有这些人。沟通很糟糕,没人有诗的当前副本,没人知道诗的实际状态。 让我们给这个故事一个大团圆的结局吧。
幸运的是,他们请来了一位非常有效率的管理员,他为整个诗安排了一个计划,建立了一个目录来记录每个人的技能,为每一部分都设定了时间范围和沟通计划,建立了用于对诗歌的片断进行版本化和合并的标准,还有秘书服务以及其他技术服务。
他们交付了令客户满意的诗,当然也超出了预算。而这个负责的诗人必须出去度个假,恢复一下灵感。她发誓再也不会做这种事了(这个结果我们早就料到了)。
确实有过把一群人召集到一起共同写一个长诗的事情。并且我可以确定,大多数软件开发人员遇到过的问题,他们也遇到过:喜怒无常的天才和水平一般的工作者,以及难以解决的需求和沟通的压力。人们在一起工作,构建一些他们并不十分理解的东西。做得好,结果是令人吃惊的;做得不好,就是垃圾。
软件设计中的平衡
我曾参加过某个面向对象系统的评审,当时有一个评审者提出了一个替代的设计方案。 设计负责人回答道这个替代方案不平衡,不像原来那个方案那么流畅。 因此,即便是在顽固不化的编程圈子里,我们也能发现设计师们使用平衡、流畅等词汇来讨论设计。
与我们虚拟出来的这些诗人相比,软件开发人员有着更大的负担,那就是逻辑。
结果不仅必须是有韵律的,还必须能“足够精确”地运行(如果不是正确地运行的话)。
尽管编程是一个孤立的、基于灵感的、逻辑学的活动,同时它也是一个群体的工程化活动。这是矛盾的,因为它不是这样的情况,同时它又正是这样的情况,软件开发是:
•数学,如C. A. R. Hoare经常说的那样。
•工程,正如Bertrand Meyer经常说的。
•技艺,像很多程序员说的。
•神秘的创造活动,正如一些程序员所说的。
它的创造是对工具敏感的;它的质量与工具无关。有的软件质量优美,而有的则是垃圾。这是对立面的会合,及多组对立面的会合。
它是一个由进行沟通和思考的人们完成的认识和表达的活动;他们根据一定经济边界进行工作,这一活动以他们的文化为前提,容易受到特定参与者的影响。
| 回书目 上一节 下一节 |
|
· C语言之基础自测获奖名.. · Linux服务器架设自测获.. · 边界网关安全防护自测.. · Cisco CCNA最新真题自.. · 我在美联储监管银行 书.. · 我在美联储监管银行 目.. |
· 我在美联储监管银行 前.. · 入侵的艺术 目录 · 入侵的艺术 前言 · 网管员全真面试题自测.. · 子弹的本质—— 形势没.. · 学习大量的词汇—— 对.. |
|
||||
| · 运营商封堵非法ADSL共享 · 珊瑚虫QQ作者侵权案开庭 · Windows Server 2008 · SQL Server 2008/2005.. · 打造安全网络环境 · 网络安全产品检验规范 · 社会工程学与网络安全 · 离职员工安全隐患 |
· 杀毒软件评测专题 · Sun以10亿美元并购开源.. · 中间件应用技术专题 · 杀毒软件优化和使用技巧 · 信息安全等级保护专题 · 补丁自动分发管理策略.. · 杀毒王牌 · AMD Phenom三核处理器.. |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · SOA 面向服务架构 · 子网掩码教程 · SQL Server 2008/2005.. · 中间件应用技术专题 · 深入了解PGP加密技术 · MySQL数据库备份 |
· 病毒查杀专题 · VPN技术 · Solaris 10 配置管理 · Linux 基础 · SSL VPN详细知识 · Linux防火墙 · 路由器设置与口令恢复 · Linux 集群技术专题 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 中间件应用技术专题 · SQL Server 2008/2005.. · SOA 面向服务架构 · 子网掩码教程 · MySQL数据库备份 · 身份认证技术 |
· 病毒查杀专题 · 清除流氓软件——51CTO.. · SSL VPN详细知识 · Sniffer安全技术从入门.. · 常用交换机典型配置 · 路由器设置与口令恢复 · Linux 集群技术专题 · VPN技术 |
|||