超越过程

来源:互联网 发布:python运维自动化 编辑:程序博客网 时间:2024/04/28 05:39
真的很感谢CSDN再一次带给我们这样机会,让我们能够聆听到世界一流软件工程专家的演讲。也许看过我博客的朋友以前也看过我听Martin Fowler演讲时候写的报道,呵呵。可惜今天去的时候没有作好充分的准备(居然迟到了,faint),就没有办法再写一篇“不客观”报道了,只能写一些我的肤浅的感受了。
 
本来是做好要听一场宣扬非常“笨重”软件工程学方法准备的,没想到一开篇,Ivar博士就不断地提到一个词汇“Agile”,看来敏捷的革命已经不可避免的开始深入的影响了美国的软件工程学理论了。有一种说法是,如果你什么都考虑到了,那就意味着什么都没有考虑到。软件工程学发展到今天,的确给开发者印象最深的还是那一堆堆的文档,如果有朋友像我一样在日本企业里工作过,一定对产品开发中的一次次review和出核前繁忙的文档整理有着深刻的印象。敏捷开发,携带着“做到刚刚好”的概念,像救世主一样把程序员从繁忙的事务性劳动中解放出来,颇得开发者的欢迎。Ivar博士从另外一个角度解释了两种不同的开发方法,那就是我这篇文章的主题:超越process。Ivar博士用两种不同的“知识”来定义了这两种不同的开发过程。前者被称为“显性知识”后者被称为“隐性知识”,从这个角度把UP和敏捷开发结合在了一起。所谓的隐性知识,指的是头脑中经验的积累,而显性知识更像是被印刷出来有条理的论述。但是,从本质上来说,笔者认为其实这两种开发方式并不矛盾,他们所常采用的迭代的技巧更是共通的。

从这样一个角度出发,Ivar博士为下一代的软件过程定义了一个新的名词“Smart Process”,怎么说呢,有点像是“统一的”的敏捷开发。在他对未来软件过程开发的描述中,未来的那些程序员应该十分幸福了。现代程序员在开发中对知识的处理往往是“发现问题”->“寻找答案”->“分析答案”->“利用答案”。其实这才是每个开发者在工作中真正的处理流程。而smart process所关注的,正是对这个处理流程的智能化,“主动”的帮助程序员去寻找问题的答案。也许未来每个程序员的桌面都都会有一个“聪明的”robot agent,当程序员遇到问题的时候,这个小小的agent就能够帮助程序员来解决问题。不仅仅是如此,在未来,甚至实践XP结对编程的时候,都不需要两个“人”结对了,只要跟着robot agent一起工作,你就能获得你所要的。为什么agent能够有这样强大的功能呢?因为在它的背后有一个强大的知识库作为支撑,这样的知识库包含了软件开发各个方面的最佳实践,并按照一定的标准进行抽象和划分,使得知识能够最为有效的被使用。

相当不错也很前卫的设想。 跟我此前和朋友讨论的虚拟专家系统有一些相似的地方。不过有一些问题我想Ivar博士并没有明确的说出来,自然给我不少的想象空间,呵呵。
 
首先就是这个虚拟专家系统,建立一个庞大的知识库,是一个既容易又困难的事情。为什么容易呢,从技术上来说,最近最为火热的Web2.0带来了大众参与的热潮,正如我正在撰写中的一篇文章中指出的,“草根文化”必然将取代“精英文化”成为互联网的主流。在这样力量的趋势之下,我们已经有了诸如wiki,或者iAsk类型的网站,从某种意义上讲,我们正逐渐的在建立我们的知识平台。在这个问题上我并不太认同Ivar博士关于知识平台建立的想法。也许我的理解并不太完整,但是我理解Ivar博士所希望建立的指示平台应该是基于最佳实践的,而且也应该是类似于(或者可以抽象为)UP的知识平台,而且是来自于专家的。我的感觉每个人都是某个领域的专家,精英性质的专家系统,反而会变得没有弹性而且缺乏创新。
 
然后就是人工智能agent的方式,软件开发的复杂度是相当高的,很难想象在现在的技术水平状况下,怎样才能实现这样的一个smart的agent,所以我觉得应该结合自动和人工咨询两个方面,在面对系统设计,客户流程分析等比较复杂问题的时候,可以采用人工干预咨询的方式。而在面对采用什么样代码结构等比较简单的问题的时候,可以自动化地为开发者提供好的模板或者模型。而我们所说的人工干预咨询所需要的人才,不单是某个领域的咨询专家,更应该是能够通过互联网和知识系统聚合知识的好手,或者说一个能够发现问题的好手,我觉得,最好的咨询专家不应该是一个回答问题的专家,更应该是一个提出问题的专家。
 
以上就是我今天的收获和想法,发表在这里希望与朋友们分享。