随便的感想_梦断代码书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 梦断代码 > 随便的感想
lusu 梦断代码 的书评 发表时间:2008-10-05 17:10:55

随便的感想

看的是这本书的中文版《梦断代码》,公司图书角借的。

一边读,一边感慨 --- 一个好的愿景,一帮牛人,不缺技术不缺钱,最终的结果却不如人愿。

对于书中的很多牛人来说,Chandler可能是他们的第二个系统,难道这就是人月神话中的The second-system effect?

在开发之旅中的遭遇的无数条“大蛇”,成为了几乎不可逾越的障碍,也使得项目的目标与计划一变再变。仅有好的愿景不够,仅有牛人不够,成功的系统首先必须是能够实现的系统,否则要么失败,要么事与愿违。

看完后,还特意找了下chandler这个产品,到1.0了,稍稍用了一下web client,还是不太好用。

-----

即使这本书没有完整地告诉我们“软件难做”的原因,chandler的经历仍然提示在哪些方面我们可以改进。
  
  大致地为这本书做了个梗概,列了chandler开发之旅中遇到的一些问题和突破这些问题的方式,希望能够从中借鉴些什么:
  
  第0章 软件时间
  
  1. 抛出问题 - "软件难做",为什么?
  
  第1章 死定了 [2003年7月]
  1. 黑洞式的BUG
  2. 一系列“蛇”难题:大家没能一致同意如何解决的问题
  3. 黑洞与蛇造成进度延误
  4. 加人解决不了:布鲁克斯法则 - “往延误的项目中补充人力,只会使其继续延误”
  5. 大教堂的僵局
  6. 开源集市并未解决问题
  7. Chandler在最初的9个月,产出的幻想多于代码,因为:“每个决定都包含不确定性。地面还没有凝固,怎么能站得稳?”
  
  第2章 Agenda之魂 [1968年~2001年]
  1. Chandler为改变世界之梦驱动-超越Exchange,成为像Memex一样,扩展人类大脑的工具
  2. 领导者卡普尔是Lotus 1-2-3的创造人
  3. Agenda是卡普尔在Lotus参与的最后一个项目,打造了一个梦幻的信息管理软件
  
  第3章 原型与Python [2001年~2002年11月]
  1. chandler的愿景问题: 我们如何组织信息?如何对这种信息组织法建模--需要怎样的数据结构才能让计算机也能回答这个问题
  2. chandler的功能需求: PIM,管理邮件、约会、地址簿、任务与备注
  3. chandler的非功能需求: 跨平台、开放架构
  4. 采用RDF作为核心模型
  5. 构建原型Vista和Shimmer,Vista是一个前台程序,有音乐库管理功能, Shimmer是一个后台的基于RDF的数据库
  6. 选择Python作为开发语言: 开源并且跨平台、成熟、有大量工具与库。
  7. 卡普尔作出重要设计决定:不使用基于浏览器的客户端,因为认为实现不了丰富的交互。
  8. 2002年9月,命名软件为Chandler,一个推理小说家的名字
  9. 2002年10月,对外宣传为outlook杀手,并预估2003年底或2004年初发布1.0版。
  
  第4章 乐高王国 [2002年11月~2003年8月]
  1. 后台设计的重大决策1: RDF序列化 vs. 对象序列化? - 采用对象数据化,对程序员友好,而且效率更高
  2. 后台设计的重大决策2: 采用现成的Python ZODB作为对象数据库实现
  3. 后台设计的重大决策3: 使用互联网协议远程访问数据库,称其为RAP(Repository Access Protocol)
  4. 前台程序采用预读方案提高数据获取效率
  5. ZODB不能直接实现在多个地方存储同一个项目(非”地窖“式的信息是关键需求)的要求,项目组就是否重用ZODB进行讨论,始终悬而未决
  6. 2003年4月发布第一个公众预览版Chandler 0.1,粗糙缓慢,很多功能不可用,数据库还是使用原型时的Shimmer
  7. 2003年5月,数据库开发者换人,并再次明确需求:
   (1) 以程序员为使用目标,提供革命性的数据模型
   (2) 数据可以在任何地方存储
   (3) 数据不能被破坏
   (4) 数据可被快速取得
   (5) 条目尺寸可以很大
  8. 数据库设计形成了以“条目"为中心的方案
  9. 出于“全盘控制”的需要,放弃ZODB,直接在BerkleyDB上编写数据库,并完成,终结了关于ZODB长达数月的争论
  
  第5章 管束奇客和狗 [2003年4月~8月]
  1. 要有人制定进度、要有人拍板做决定-而且言出必行,要有人创建或从别处采纳并修改流程规则。 -- 需要软件开发经理。
  2. 决定推迟一些特性,包括一些杀手级特性,将近期目标收窄为基本的PIM软件
  3. 开发进度如何度量?很主要的管理困扰
  4. 引入WIKI作为沟通渠道,并由专人负责维护
  5. 使用BUGZILLA管理BUG与任务
  6. 开发了"状态管理器",管理进度
  -- 花在工具上的工作,成了一种yak-shaving状态
  7. 决定遵循“时钟驱动”的方案,确定2003年9月发布0.2版,但此时还没有完整的设计方案
  
  第6章 搞掂设计方案 [2003年7月~11月]
  1. 良好设计的原则:
   (1) 坚固 - 良好的结构、没有缺陷
   (2) 适用 - 程序就符合其设定目标之需要
   (3) 愉悦 - 使用程序的体验应令人愉快
  2. 直至2003年夏天,chandler仍处于有一堆原则,热情与许诺的阶段,还没有画出蓝图。设计方案确定,才完成程序宏愿与技术现实间的艰难交易。
  3. 确定了第二个重要的领域概念: 文档 - 保存数据,也保存用于处理数据的代码与规则
  4. 确定了在wxWidget上搭建CPIA - Chandler Presentation and Interaction Architecture,在前端实现数据驱动的组件架构
  5. 2003年9月发布了更失败的Chandler 0.2版,功能比0.1更少
  6. 由于0.2版的失败,决定放弃"时钟驱动"方案,还是采用"特性驱动"方案
  7. 引入专职的UI设计人员,开始设计基于GTD原则的用户界面
  8. Chandler不断重复回归,又回到了基本问题 - 人们如何组织信息?一套创新的工具如何能够帮助他们?
  9. 项目经理离开,原因是自感工作没做好,他倾向于尽快交付产品,而Chandler要尽力保证架构上可靠,而且为了有个好架构宁肯无限推迟面世
  10. Linus的言论:
  "别做大项目,从小项目开始,而且永远不要期望它变大。如果这么想,就会做过度设计,把它想象得过于重要。更坏的情况是,你可能会被自己相象中的艰难工作所吓。如果项目没解决某些眼前的需求,多半就是被过度设计了。"
  "别指望在短时间内达到大成就,我致力于Linux达13年之久,我想后面还得花上好些时间。如果一早就妄想做个大东西,可能现在还没动手呢。"
  
  第7章 细节视图 [2004年1月~5月]
  1. 2004年1月,基础架构的投资有了收获: CPIA、自动测试系统、能处理大量数据的数据库、Lucene与数据库协同工作
  2. 开发者开始渴求一张更彻底、更接近最终需求的Chandler外观和行为的路线图,需要细节,需要蓝图,需要规格说明。
  3. 但规格说明暂时还写不出来 - "开放性问题"始终没有答案:
   (1) 共享信息引起的n向同步难题
   (2) 围绕“条目组”管理的难题
   (3) 条目的多态性难题
   - 既希望chandler易于使用,也希望它能解决一些著名的软件难题 - 两者皆想要
  4. 细节视图成为设计中的另一个障碍
  5. 形成了通过"打戳"实现条目的多义性的设计想法
  6. 术语的多义性成为项目组的障碍
  7. 实行了通过在WIKI上维护术语表的方法,但流于形式:跟不上变化,成员对术语表不够关注
  
  第8章 白板上的即时贴 [2004年6月~10月]
  1. 让Chandler成为可以吃的狗食(内部可用版本)成为目标
  2. 方案大逆转: 由P2P的共享到到基于服务器的共享
   - 卡普尔解释: 我的观点有了重大变化。原来我太过前卫和理想化,立意虽好,奈何不实用。重要的是授人以能,而非架构本身。
  3. 扩展WebDAV,设计CalDAV,用于基于服务器的日历共享
  4. 为了能够在合理的期限得到狗食版(称为kibble版),只有砍特性。
  5. 在即时贴上列出特性,在白板上画版本格式,然后在白板上排应该在每一个版本中的实现的特性:
   - 0.4版: 27张
   - 0.5版: 45张
   - 0.6版: 33张
   - >= 0.7版: 33张
  6. 决定在狗食版中暂时只实现日历功能:
   (1) 不再按照期望和断言能做的事“自顶向下”做计划了;现在是根据经验及证据“自底向上”做计划
   (2) 延误与特性削减给团队带来了不良的影响,一些人离开了
  
  第9章 方法
  关于各种软件开发方法论的一个综述
  
  第10章 工程师与艺术家
  程序员的双重身份:工程师与艺术家,至今未变
  
  第11章 通往狗食版之路 [2004年11月~2005年11月]
  1. 服务器项目单独设置,称为Cosmo,由一个程序员负责,由于边界定义清晰,进展顺利
  2. 通向狗食版道路上的一些进度杀手:
   (1) 一个日历控件
   (2) 难题: 重复任务
   -- 侯世达法则: 时间总会比想象中用得多,即便你考虑到侯世达法则亦然
  3. 开启浏览器版本项目,称为Scooby
  4. 2005年11月终于发布Chandler 0.6
  
  尾声 长赌
  2029年能有机器通过图灵测试吗?

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“随便的感想”的回应

骑着天鹅看海 2009-01-13 13:03:28

嗯?我想我是看到韩磊的本尊现身了...

lusu 2008-10-12 23:25:59

书译得很好,赞!

韩磊 2008-10-12 22:52:35

兄台看得仔细!

乌骓 2008-10-08 14:08:50

我也下载了一个试用,最受不了的是速度奇慢,又卸掉了。//sigh...