今天阅读了倪健写的《简单之美——软件开发实践者的思考》一书的序言,收获不少,以下是部分摘录。
业界有那么多知识财富,可是在实践中真正能够被吸收和应用的却很少,这些知识财富的价值是毋庸置疑的,软件开发人员的热情和渴求也是毋庸置疑的,可问题究竟出在哪里呢?
无论方法论也好,管理理论也好,都是技术层面的,它们来自于大师们的总结和提炼,本身是非常好的,但是它们有复杂的上下文。如果割裂这些上下文,机械运用那些技术层面的东西,效果就总是不怎么好。
所谓机械运用,就是追求形式化的执行,而没有站在以人为本的角度展开思考。以人文本的核心就是对思想和文化的关注。成熟的思想和文化,可以使软件开发中的每个细节都变得浑然天成,相反,不注重思想和文化的建设,就只能依赖无法预料的外部约束,例如,沉迷于方法论的技术细节而无法自拔。事实上,在软件开发领域,没有解决问题的银弹,没有提升效率的短期计划,也没有获得成功的操作指南,一切都依赖于人。
禅宗的心髓是悟,在禅宗思想推广的历史上,有很多具体生动的故事阐释了这个概念。最有名的是六祖慧能的偈句:“菩提本无树,明镜亦非台。本来无一物,何处惹尘埃?”。“本来无一物”——说明了慧能在洞悉事物本质上的境界。
禅宗的历史就是这种种境界被建立和被超越的过程。为了达到无法超越的最高境界,参禅者们发明了机锋公案、棒喝直指、扬眉瞬目、拳打脚踢、斩蛇杀猫这样一些辅助手段,这些手段可以让人快速通过量变到质变的一刹那,直达内心顿悟。进入顿悟状态后,所有言语、文字和思想都变成了阻碍。
唯一例外的词——想入非非——可以作为那种境界的缩影。想入非非的意思是说,那种至高无上的境界不是我们头脑中可以想到的,因为可以想到是一种阻碍;也不是我们头脑中无法想到的,因为无法想到是指除了可以想到之外的。非非,表示否定了否定,这里的双重否定不代表肯定。想入非非,把没有边界的思想通过一种特殊的方式表达了出来。
把软件开发变成乐趣,有两个原因使这种转变成为可能:第一,把想象力和创造力结合起来;第二,软件开发思想已经比较成熟和完整了。这两点很重要。想象力和创造力的运用使人的精神得到了满足,而软件开发思想则使任何事情在开始之前都有了一个合理的解释。合理和满足都会带来乐趣。
首先,思想是解决一切问题的根本,是一种坚定不移的信仰,并且是在经过了足够的实践检验后形成的。在软件开发过程中,稳定的思想会使得所有的力量汇聚到一个有效的方向。
其次,思想是一盏明灯,但有时也会成为一种桎梏。像参禅者一样不断追求完美的境界,使思想成为你自己不断成长的体验。
最后,思想必须转换成习惯。在实践中运用思想比停留在思考层面显然更有乐趣。
总之,构建一套完整的思想体系是软件开发能力成熟的标志。只有思想成熟,才会使你的一言一行、举手投足、细节决策等在复杂的实践中收放自如。
软件开发思想的成熟,还需要操作层面上的大力支持。很多软件开发人员在实践中经常处于一种混乱状态。所谓混乱状态,就是当出现问题的时候没有人知道怎么做才算最好,或者人们之间缺乏足够的信任和共识,或者大家不断地讨论却得不到满意的解决方案。对于软件开发老手而言,经验是帮助他们保持清醒并走出混乱状态的安全绳。可是要想依靠经验来持续地造福一个团队就比较难。
事实上,造成混乱状态的原因有很多。
首先,没有操作性强的方法论的指导。软件开发者的很多工作和努力都基于个人经验的积累。即便某些经验丰富的软件开发者掌握了一些必要的方法论知识,也不能在组织范围内有意识地推广,从而成为有实用价值的共享体验。
其次,有经验的软件开发者获取知识和使用知识的方法无法系统地传递给软件开发新手。无法传递知识,会使新手们在软件开发领域的成长起点变得很低。在这种情况下,软件开发项目的成功通常依赖于个人英雄主义、人海疲劳战和运气。
当你经常对软件开发中的某些现象,如无休止地加班、返工、资源紧张等产生迷惘时,应该停下来认真思考;当你认真思考后仍然没有确定的解决之道,不妨看看别人的想法。
每个人的一生都在获取知识。有些知识来自于被动接受,有些知识来自于主动学习。知识有不同的类型,学习知识也有不同的方法。
当你追溯一个问题的根源时,哲学总是追溯的源头。
世上不存在可以供你直达目标的操作手册。每个人实现目标的方式都是不同的。除了最后一步的领悟之外,有效信息收集和经验积累是必需的基础。
什么样的信息是有效的呢?
简洁明确的思想表述;层次清晰的分类信息;令人信服的论证过程。