对程序员来说,“创新”是一个永恒的话题。它给世人的感觉是既简单又玄妙。说它简单是因为创新似乎不需要严格的外在条件,说它玄妙是因为我们很难说清楚创新产生的过程,所有的创新几乎都是不可复制的。
批判性思维
批判性思维是创新过程最显著的特征(也就是剔除错误),就让我们先从它开始吧。
在程序员江湖闯荡久了,就会深知创新的艰辛。不求一鸣惊人、但求独善其身是程序员队伍中一种比较具有代表性的思潮。我们真正能做到独善其身吗?试想如果现有代码的可维护性很差,任何人都很难在有限的时间内写出高质量代码,最终很可能落得个同流合污。
有 时我们也会一不小心走到另一个极端:如果留意,我们总能在公司的茶水间里听到员工关于公司缺乏产品创新的恶评。批评是有益的,但我们更需要批评过后的冷静 思考和实际行动。创新无疑需要批判性思维,但前提是我们能将“批判”与“批判性思维”区别开:批判的目的只是为了达到对某个事物的否定;而批判性思维则是 通过否定来寻找更好的做事方法。单纯的批判是消极的;而批判性思维则要积极得多。
问题的定义
批判性思维是建立在问题定义基础上的,因为“没有问题就无所谓批判”。
什么是问题
什 么是问题?期望与现实的落差就是问题。现实是容易觉察的,但界定外界期望就难得多了。人们倾向于把外界的输入作为建立合理预期的唯一标准,而不是独立形成 自身对预期的认识。例如,开发人员总乐于将测试人员在缺陷描述中记录的期望行为和结果作为实际的用户需求,并据此来修改代码。
随着被灌输信息的增多,人们所受到的来自外界的影响和约束不断增强。一个人对现实的接受程度越高,问题形成的难度就越大。
外界是不完美的
对 于软件研发团队,定义问题的能力直接影响其需求分析的质量,进而最终决定了产品的质量。一般认为软件工程师参与到需求分析与产品设计的机会并不是很多,他 们接收来自用户或者产品经理的需求规格,并且努力把功能列表转变为可以运行的程序。不幸的是,现实中软件生产过程要复杂得多:在开始阶段,写下来的需求只 是冰山一角;未写下来的需求才是沉浸在水下的巨大冰块;即使写下来的、被用户所确认的需求规格也不能确保最终一定能够让用户满意。
外界的不完美导致我们必须关注自身定义问题能力的培养。首先,通过独立的思考形成自己对一个事物的预期,而不是唯命是从;其次,通过各种可能的手段 来确认这个预期是否合理,并进行必要的修正;最后,对比现实与预期形成对问题的认识。当这种思维模式成为你的一个思考习惯时,问题就会不断地从脑海中涌现 出来。
概念的建立
建立概念模型的意义
合理预期是建立在合理的概念模型基础上的。只有明确了概念,才知道未来的路该往哪里走,才知道什么时候需要坚持原则、什么时候需要像现实妥协。只有建立起概念模型,你才有可能进一步思考现实与存在于你脑海中的概念是否一致。
每一个软件设计问题的背后都隐藏着一个或简单或复杂的概念系统。很多时候,软件工程师并没有意识与能力去主动地发掘这些概念,这是导致软件设计不确定性的重要原因之一。因此,对概念的驾驭能力就成为软件架构师最为倚重的基本能力之一。
忽视概念的历史根源
对概念的忽视有其深刻的历史原因,如下所述。
炒作概念。不 知从什么时候开始,“概念”常常与一个动词相关联,它就是“炒作”。一个新产品往往借助炒作热门概念来提升自身的价值,“概念”渐渐变成了假、大、空的代 名词。这与概念本身的功能完全背道而驰——概念原本是为了让一个或一类事物能够更准确地被大众以一致的方式所理解。说句公道话:“之所以盛行炒作概念之 风,不是因为今天概念太多了,恰恰是因为现如今人们缺乏对概念的理解。”这一切大概发生在过去的十年里(十年前的我大约刚刚完成学业、步入社会)。
只摸石头不过河。我 们不妨把时间推得再久远一些:在我念书的年代里,对概念的深入研究变成了教条与迂腐的代名词,因为对很多人来说概念意味着陈旧,意味着一成不变。概念确实 表现出一定程度的稳定性,这种稳定性源于其抽象的本质。但我们切不能将这种稳定性绝对化。概念同样也会像这个世界上的绝大多数物质一样,随着时间的流逝发 生变化。这种可变性源于其主观的本质。没错!概念并不是像人们想象的那样客观。人们只是试图通过自身的努力将自己对概念的理解无限趋近于客观。
“实 践是检验真理的唯一标准”—这是几乎每一个中国人都熟知的一句话。我从不怀疑其合理性,但放在上述社会环境中,难免容易让人迷失:既然是“检验”,我们就 应该首先澄清待检验对象。换句话说,我们应先形成对真理的假说,然后不断地用实践结果增加其可信程度,亦或反之。现实中,人们渐渐丧失了事先形成对真理认 知的耐心,这种不耐烦也许是源于人们对于可能出现的自我否定的恐惧,这直接导致实践最终仅仅成为一些人收集数据的工具。
我曾与一些软件研发 人员讨论有关软件性能测试的问题。我发现他们并不能清楚地说出某个测试的目的。当我进一步询问测试结果能否帮助我们得出一些结论时,他们就变得含糊其辞。 在我看来:单纯为收集数据而进行的测试是毫无意义的,这就好比只惦记摸石头而忘了过河才应是原本的目的。
缺少点科学精神。曾 经的诺贝尔奖得主杨振宁在对比中华文化与近代科学时,有如下精彩总结:中国传统文化所追求的“理”与近代科学所追求的“自然规律”方向上一致。但它们在求 “理”的方法上是不同的。传统中国文化主要依赖归纳法求理,这里面没有逻辑与推演;而近代科学除了使用归纳法以外,更依赖演绎法。
显然,对于建立复杂的科学体系而言,演绎法更高效。这就不难解释:为什么自然科学在近现代中国更多是以舶来品的形象出现?演绎法需要逻辑,而逻辑建立在概念的基础之上。如果缺少这方面的先天基因,那么就更需要后天努力了。
更多电脑IT知识 ,欢迎进e良师益友网
创新思维对程序员有什么作用
评论
20 views