Dreaming in code, Dreaming out reality.

读完梦断代码,细节已经遗忘了很多,但看到全书最后译者的感叹时,还是会感到一种莫名的震撼:

“这里躺着一个野心勃勃的开源项目。他曾立志超越Outlook,最后却无疾而终。许多程序员以心血养育他,惜乎全不见成效,他是温室中的花儿,有过绚烂的梦想,还未绽放即已枯萎。在那软件的花园中,还有多少次会渐次凋零呢?”

Chandler的轨迹如同流星一样,从最初的震撼起步,到最后的草草收场,只因为他们怀有这样一个遥不可及的梦想。

我们不得不说Chandler的起步是震撼的,一个基金会的资金支持,一个出色的领袖,一帮经验丰富的程序员,一个备受追捧的项目愿景,没有时间和资金的约束,似乎具有了一个完美开源项目的一切条件。

但问题恰恰也就从一开始就出现了。没有时间的约束,卡普尔和他的团队希望追求完美,在需求确定、技术路线和设计方案的选择上纠结了太多的时间。作为一个开源项目,他们却没有做到真正开源,团队很不稳定、人员变化很大,每个老成员的离开和每个新成员的到来尽管会带来一些变化和一些新的东西,但终究还是没能逃脱布鲁克斯法则的魔咒,让开发进度越来越缓慢。

做软件难,因为软件是人类自以为最有把握、实则最难掌控的技术。做软件难,是因为软件成功与失败只是在天堂地狱一线之间。有梦想,但是不能实现。

回顾Chandler的开发过程,从最初的以Agenda之魂为宗旨,他们就希望Chandler具有其他PIM软件所不具备的灵活性和可扩展性;他们确定采用Python语言,希望充分发挥Python开源跨平台的特性以及速度优势;他们希望打通数据存储的地窖,实现资料库灵活适应、自由变换的存储;他们还希望采用P2P架构,实现不同用户间的在线同步和共享…

如果都成功了,Chandler毫无疑问会超越Outlook,但是这只是个梦想。

为了实现这些“杀手级特性”,卡普尔和他的团队们越陷越深。项目从02年春天开始,与03年4月才发布了0.1版,他们希望03年底即发布1.0版Canoga,但实际上当年春天还没有奠定软件后端的基础架构。而03年秋天的0.2版简直就是个悲剧。Linux之父李纳斯说:“对于开源项目要从小项目开始,而且永远不要期望他变大。如果这么想,就会做过度设计,把它想象得过于重要。更坏的情况是,你可能会被自己想象中的艰难工作吓到。所以要从小处起步,着力考虑细节。别去想大图景和好设计。如果项目没解决某些眼前的需求,多半就是过度设计了。”说的就是Chandler。直到Ajax引领的Web2.0时代到来,基于Ajax技术的Gmail等开始流行的时候,Chandler过于缓慢的进度终于让将自己沉没于新技术的潮流中。

我依然对卡普尔和他的Chandler团队怀有无限的敬意,他们只为打造超卓软件,他们是真正的勇士。

我们的Moon不希望重蹈Chandler的覆辙。虽然这是两个根本不具可比性的项目,但Chandler的经验和教训有许多是Moon可以学习和借鉴的。

我们采用的是微软的敏捷开发方法MSF,我们的项目是时间驱动而不是功能驱动,但是项目进度缓慢的问题依然很严重。不过与Chandler太过追求卓越不同,我们主要还是因为能力有限和经验不足。我们虽然不存在团队成员流动的问题,但是我们会有人员时间分配的风险。我们一开始设想中的Moon也希望具有良好的可扩展性,但受困于时间,最后将开发目标定在了更为合理的Moon单机版。我们在技术方案和细节视图的选择和设计上并没有纠结过多,这当然是在前人工作的基础上,虽然进行了代码重构,但技术路线并没有变化。但我们的Moon却有着一些和Chandler颇为相似的特性:可扩展性、类似于无地窖式的存储。

再回到梦断代码。这本书除了讲Chandler,更是通过Chandler的开发过程揭示了软件开发中的一些根本性大问题,确实,这真的是一部代码史。

软件和人类文明之间,到底是一种怎样的关系?人类文明运行于软件之上,而软件创建艺术却隐于暗处。没有银弹,我们只能期待渐次前行。

开源模式和基于互联网的协作集市虽然是一种飞跃,但依然不能真正驳倒布鲁克斯法则,没有解决软件开发中的时间难题。构建软件最难之处在于决定说什么,而不是怎么说。

生产出通用构造块式软件包并不容易,尽管屡经失败,但乐高之梦不曾泯灭。从可复用代码的小复用,到可复用组件的大复用,乐高之梦无关乎技能,难题只源自软件的多样性。

并非所有geek都是程序员,亦非所有程序员都是geek,但两者之间的重叠非常彻底。软件需要geek,但更需要协作。

软件设计不仅只是在程序员代码之上覆盖一层诱人的图形,它是一种设想用户需求并在软件结构中满足这些需求的创造性基础工作。良好的软件设计如同一个完美的建筑一样:坚固——良好的结构、没有缺陷;适用——程序应符合其设定目标之所需;愉悦——实用程序的体验应令人愉快。

从以软件成熟度模型(CMM)为代表的重量级方法论,到以敏捷软件开发为代表的轻量级方法论,从瀑布模型到极限编程,软件史过去30年中的方法论队伍丰富了这个领域,而且给了程序员以新工具和思考其工作的方法。

软件和工程两词已密不可分,编程既是工程又是文学,既是科学又是艺术,而工程师就是艺术家。

梦断代码,梦醒现实。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值