前段时间一直都在忙着项目的事情,这篇文章在心里放了很久了,今天终于能写出来,不至于老放在心中发霉生锈了:)
文章主要说的是易经中卦的顺序和软件业发展顺序的对应,希望能从易经中得到一点启示。
下面会简单谈一谈软工的发展,不过充其量只能算是“野史”,并且具体的时间也没有经过专门的考证。大家随意看看就行了,不必深究。
一、软件工程发展史
1946年2月14日,世界上第一台电脑ENIAC在美国诞生。不过那时候还不存在现在所说的软件,而到了软件工程兴起又是过了很多年。
第一次软件工程概念提出是在1968年的NATO会议上,使软件开发开始了从“艺术”、“技巧”和“个体行为”向“工程”和“群体协同工作”转化。
30多年来,软件工程的研究和实践取得了长足的进步,其中一些具有里程碑意义的进展包括:
20世纪60年代末~70年代中期,在一系列高级语言应用的基础上,出现了结构化程序设计技术,并开发了一些支持软件开发的工具。
20世纪70年代中期~80年代,计算机辅助软件工程(CASE)成为研究热点,并开发了一些对软件技术发展具有深远影响的软件工程环境。
20世纪80年代中期~90年代,出现了面向对象语言和方法,并成为主流的软件开发技术;开展软件过程及软件过程改善的研究;注重软件复用和软件构件技术的研究与实践。
(摘自:杨芙清 《软件工程技术发展思索》)
二、自然的规律
上面简单介绍了软件工程的发展情况,任何事物的发展规律都是一样的,所以才有了象易经一样的揭示所有事物发展规律的资料。
易经中共有八八六十四卦,这些卦的排列顺序并不是随意分布,而是经过精心安排的。比如说前面几卦为:乾、坤、屯、蒙、需、讼、师、比、小畜、履、泰、否、同人、大有……
“乾”为天、“坤”为地,有了天地才有万物。接下来的屯卦代表事物的起源、“屯”字就是种子刚钻出地面的形象,从字形上可以看出来。软件工程提出来后很多 地方是模糊的,毕竟是一个全新的概念,屯卦后面接着就是“蒙”卦,迷茫、幼稚的意思。20世纪60年代,由于高级语言的流行,使得计算机应用范围得到较大 扩展,对软件系统的需求急剧上升,从而产生了“软件危机”,由此提出了软件工程的概念,在经过一段时间的迷茫后,由社会客观世界的需要才能触发软件工程的 成长,接下来就是“需”卦。在发展的过程中,人们会有不同的观点,各种争论的出现代表了 不同思维的碰撞,“讼”就是争论。这时候越来越多的软件横空出世,软件产品之间的竞争又推动工程化的发展。“师”者,聚伍纷战也。
随后也是软件行业发展进入了高速发展时期,软件产品规模不断扩大,不同的软件作者、或者软件公司都聚集起来形成更加有竞争力的团队,“比”说白点就是拉帮结伙。软件公司或者工作室形成后开始的 是资金与技术的积累,为“小畜”。当积累达到一定的层次后,发现制定一系列的规范与标准大家才能更好地合作,所以出现了“履”卦,履就是规范、礼仪的意思。履卦出现后,进入了一个欣欣向荣的阶段,称为“泰”。
不过美好总是不能长久,在进入了“泰”卦后,却是出现了问题,进入“否”卦。问题是什么呢?因为规范与制度的不人性化,导致文档繁重,团队响应迟缓,流程僵化等。这些现象尤其在软件 业比较发达的国家更加严重一些,软件项目的低成功率也是大家有目共睹的。所以国外有不少大师推崇“敏捷”。先不说它的好坏。在“否”卦之后是“同人”卦,然后是“大有”卦……
下面说一说同人卦的秘密。
三、同人卦的秘密
卦象
同人,柔得位,得中而应乎乾,曰同人。同人曰:“同人于野,亨,利涉大川。”乾行也。文明以健,中正而应,君子正也。唯君子为能通天下之志。
3.1 同心同德
从下往上第二爻为柔(阴)爻,与第五爻刚爻相呼应。用卦象来解释管理上的事情时,一二爻代表基层,三四爻代表中层,五六爻代表高层。卦象显示是基层和高层相呼应,所以称为同人卦,同心同德的意思。以前就写了些文章说管理时“志”很重要,这里又说同人卦,都是一个意思。
制度规范能让大家更方便的做事,但完全这样就将人当作了机械,不能发挥出创造力,至少对于软件行业,这样的方式是不可取的。真正高明的管理者能够将团队成员的志向集中在一起,符合同人卦的含义。
同人卦上半部分为乾卦,“天行健,君子以自强不息”。上面说到了软件工程发展到了“否”卦,需要的是有一部分人努力领导软件工程的发展,团队中同样需要有 人引领着走出困境。在此之前,软件业因为制定了标准化流程取得了很好的成效,但经过时间推移现在的软件有了新的变化——向服务转型。软件开发中人(尤其指 基层的工作人员)的因素再一次体现出来了——在同人卦中,处于基层的第二爻为全卦的主爻。
下半部分为离卦,离为火,为光明。在上层领导刚健不息的推动下,作为下层的人员应该以更加坦然的态度进行沟通,交流。当然,很重要的一点,这种坦然应该是 双向的。以前带着几个人一起尝试敏捷方法,发现只要坦率地说出来,很多人对于提高自身效率的方法还是非常乐意接受的,并且团队之间坦率地交流是成功的一个 关键因素。
上层的刚健加上下层的坦然才可能同心。
3.2 核心是什么
从另外一个角度来看,同心协力总有一个目标。企业的核心目标就是利润,没有利润任何一家企业都没有存在的价值;程序员的目标是个人发展、更好的生存环境。所以很多时候企业和程序员的目标是冲突的。不过敏捷倒是非常巧妙地将这种冲突转到了另外一个地方。
平时和一些朋友聊到敏捷,问敏捷的核心是什么?
有人会说,敏捷的核心是程序员。诚然,程序员在敏捷的价值观中备受重视,但程序员绝对不是敏捷的核心。
敏捷的核心是迭代,而迭代的核心是客户。客户就意味着利润。推崇以客户为中心可以缓解企业和程序员之间的利益冲突,毕竟大家都是在赚客户的钱。
所以说同人除了内在的条件需要满足,外界的因素也是必须具备的。
四、“揠苗助长”还是“直接晋级”
上面提到敏捷,但并不一定敏捷就是同人卦的卦象,只是就现在来看敏捷更加接近。
软件工程发展从比、小畜、履、泰、否到同人卦共有五个阶段。那些软件发达的国家顺利地经过了这几个阶段,所以他们对履卦的缺陷也理解的更加深刻。
但在中国来说,大部分企业是“比”或者“小畜”的阶段,少数到“履”。这种情况下是否能直接晋级到同人卦确实值得商榷。就像前段时间出现的“敏捷热”一样,最近较少听人提起了。敏捷是好东西,但是不是能符合我们中国的现状,不一定了。
或者有一种说法是,我们的软件企业比较小,能轻装上阵更加快速地推行敏捷。这也是我希望看到的。
就像这篇文章的标题一样,我认为中国现在是“撞”进软件工程的新时代,整体水平要比国外的同行晚了几个阶段。但国际化的趋势是越来越快,在本土软件和外来软件之间的竞争中,我们怎样才能稳步发展呢?至少不至于几年后,还是踉踉跄跄、撞来撞去的,那样就让老外看笑话了。
由于自己掌握的资料比较少,还是希望能多多听到大家的看法。