笔记五:完成即开始
Chandler项目是贯穿全书的一条主线,它的经历堪称软件开发的悲喜剧。这个项目的目标是打造一个超越Outlook的个人信息管理工具,团队由一群经验丰富的程序员组成,资金充足、理想远大。然而开发过程却充满了反复和波折——团队不断推翻重写,追求“完美架构”,结果功能永远加不完,bug永远修不尽。每一个看似简单的功能,在实际开发中都会引出意想不到的复杂问题。
Chandler开发团队有一个习惯:每次遇到困难,就想着“重写”。觉得当前代码不够优雅,重写;觉得架构设计有问题,重写;觉得技术选型不合适,重写。每一次重写都耗费了大量时间和精力,而每一次重写之后,新的问题又随之而来。这个循环不断重复,最终导致项目严重延期,功能远远达不到最初的设想。
这种“重写综合征”在软件开发中非常普遍。为什么程序员总想重写代码?因为重写比理解别人的烂代码更爽,因为新代码看起来更干净、更符合自己的审美,因为从零开始有一种创造的快感。但问题在于,商业世界不等人,用户不等人。软件发布的时间窗口是有限的,错过窗口就意味着失去市场机会。软件工程和软件艺术的矛盾之处在于:工程要求按时交付,艺术追求尽善尽美。而大多数项目死于前者,只有极少数死于后者。
核心洞察:软件永远不会有“完成”的那一天,有的只是“发布”。发布不是终点,而是开始接收真实反馈的起点。重要的是让它在真实世界中跑起来,而不是在理想中永远打磨。正如书中一位程序员所说:“完美的软件是不存在的,我们能做的只是让它在大多数时候、对大多数人来说‘足够好’。”
浙公网安备 33010602011771号