完美软件开发:方法与逻辑

 

前言:对软件开发的一次另类思考

在武侠小说中,常会把绝世武功分为两个部分:招式和心法。招式得其形,而心法传其神。从这个角度看,这本书是即讲招式也讲心法的书。招式繁杂,暂且不提;心法却可以概括。

如果非要用三句话来概括本书中所提心法的全部,那么他们是(顺序不可颠倒,有因果关系):

在尺度中潜在的已经包含本质;尺度的发展过程只在于将它所包含的潜在的东西实现出来。 --黑格尔,《小逻辑》

人心惟危,道心惟微,惟精惟一,允执厥中。 --《尚书》

横尽虚空,山河大地,一无可恃,而可恃唯我;竖尽久劫,前古后今,一无可据,而可据唯目前。---杨昌济

但这三句话都过于精妙,一般来讲很难把他们和管理、流程、估算、开发模型、需求开发、设计编码联合起来。本书做的正是这样一种尝试:在把软件作为一个整体进行考察的同时,把精妙抽象的东西和具体的东西结合起来。 把软件作为一个整体考察是因为管理、流程、设计编码等都是影响最终成效的砝码,单纯某一个维度上(比如流程)效能最佳不等于整体效能最佳。 把精妙抽象和具体相结合则是因为虽然众象纷繁,但总有些规则凌驾于现象之上,不把握这些规则必然陷入杂多之中,进而明于微而昧于巨。反之,精妙的东西又只有通过具体的手段才能实现自身,并无法单独而存在。恰如下棋时每一步都机关算尽,但总是脱不开既定规则,只有有限的结局(或输、或赢、或和),而既定规则之力量又只能实现于每一步之中。

作为结果,我们可以讲:

这书只信逻辑和事实。虽参照诸多素材(敏捷、CMMI、OO、设计模式等)但主要依赖于独立思考才最终塑成体态。纵然错漏难免,但书中所言皆是自主反思所得,虽常有反主流之观点,用心想来却不一定是无稽之谈。

这书直指本质。虽然有的地方略显艰深晦涩,但实是因为无法简化,绝非毫无价值,更非故弄玄虚。同时,为避免偏颇,本书主要使用演绎法,基于以下四个预设前提推导各种结论,并用事实进行佐证。

  • 软件是一种固化的思维
  • 意识指导行动
  • 项目所能耗费的资源是有限的
  • 重复做同样的工作会降低效率

这书是培养帅才的书。如果想成为一方悍将(比如:C++高手,Android高手),那这书是不太适合的;但如果想鸟瞰全局,运筹帷幄,带领团队攻城略地,那这书是很有参考价值的。

这书一定程度上可以终止某些争议。软件开发这个行业之中过度相信经验主义,但事实证明效果并不好。几十年下来依然异论相搅,纷争不断,比如:是做架构设计,还是测试驱动;是敏捷开发,还是CMMI等。本书一定程度上可以包容这些矛盾,恰如黑格尔的辩证法可以包容康德的二律背反。

这书是一个开始而非结束。限于作者的眼界、能力、时间等,这书无法终结所提及的所有问题。希望能有志同道合者一同来继续这个题目,也希望能收到各种批评的建议来不断自我提高。

注:本迷你书书节选了成书的部分章节,如果有需要的读者可以购买全本。

你可能感兴趣的:(完美软件开发:方法与逻辑)