2010-06-08

重设计, 轻编码

Views: 17444 | Add Comments

软件项目的开发过程中, 要重设计, 轻编码. 这并不代表先设计, 后编码, 也不是要贬低程序员的地位. 即使是你一个人在负责一个项目的设计和编码工作, 你也应该重设计, 轻编码 - 当你设计的时候, 你会看低编码的你自己吗?

有些同学提到, "重设计, 轻编码", 会使项目的完成时间遥遥无期, 因为设计往往想不到一些重要的细节. 不, 你犯了一个错误, 你把这句话看成了"先设计, 后编码".

有些同学认为, "重设计, 轻编码", 会使程序员变成没有创造力的机械人, 这不好. 且不说, 不是每一个项目都需要所有人的创造力, 事实上大部分人在大部分时间做的项目谈何创造? 而"使程序员变成没有创造力"这个想法无非是自卑的受迫害臆想狂症状.

设计第一步: 需求分析

需求分析的目的是把需求方的文档, 转换成程序员理解的文档. 需求方的文档可能一字也没有谈到程序, 但需求分析应该涉及到系统的可能样子, 包括大致界面, 用例. 需求分析和总体设计是同时进行的.

设计第二步: 详细设计

详细设计完全是给程序员看的, 越详细越好. 详细设计的最终目的是, 让最普通水平的程序员, 也能照着文档, 把文字翻译成代码. 当然, 实际开发中会遇到少数几个技术难题需要攻关. 除了理所当然的金字塔结构, 程序员也应该参与详细设计工作. 如果你不想当那个最普通水平的程序员, 你就应该参与进来. 塔尖的负责人也有义务提供这种机会.

哪些项目不需要"重设计, 轻编码"?

所有项目都应该遵循"重设计, 轻编码"原则, 即使是那些可能带来革命性效果的探索型项目. "重设计, 轻编码"既然不是"先设计, 后编码", 所以也不是"一次设计, 一次编码", 也可能是个迭代的过程.

即使是 Linux 内核早期这种几乎完全工程型的项目, 也是因为有了 Unix, Minix, 无法教材和原理分析所提供的设计基础. Linux 同样沾了别人设计的光, 多亏有了前人的设计.

如果你没有理解到"重设计"的极度重要性, 那么你只能是一个编码者.

Related posts:

  1. 我要转到 Windows 平台了
  2. 面试IT业界顶尖企业所应该知道的10道题(1)
  3. Linux发行版的选择
  4. 如何为Linux生成和打上patch
  5. 安装和使用Skype for Linux
Posted by ideawu at 2010-06-08 09:03:41 Tags:

Leave a Comment