You are browsing the archive for 系统-架构-信息.

一种哲学化的系统论尝试

December 25, 2011 in 系统-架构-信息

温伯格是一位伟大的思想家,这一点是毋庸置疑的,我觉得每个行业做到“伟大”级别,都不得不进入哲学的领域,弗洛伊德如是,温伯格如是。他们这种哲学般的思考不仅仅是“听起来像哲学”,包括他们自己,也不得不接触更多的哲学,从而去了解自己的领域。

至今为止温伯格的三本书给了我三个方面完全不同的知识——一本是关于具体问题的解决的《你的灯亮着吗?》,一本关于高科技或者说创造性团队的管理《成为技术领导者》,这本《系统设计的一般原理》则是关于系统论方面的。但是这三本书都有着几乎相似的背后的某种哲学理念,使得再次出现那种“读起来就是这个作者”的感觉。这种背后的感觉是什么呢?很简单的说,就是作者对于人性和世界的复杂性的充分认知,以及在这样的认知之下,对整个世界“上一个层次”的理解。

无论从哪个角度,我们都很容易因为自我中心和某种粗浅的形而上学,使得我们对于这个世界的认知处于一种简单的状态,即使在我们建立了某种复杂性的模型的时候,也只是因为这种复杂性符合我们的观点,可以帮助我们简化对于这个世界的认知——这种在某个认知边界的“膜”之内的复杂性仍然是一种简单性,因为它完成了一种内聚的复杂的同时,再次割裂了与外界甚至是整个世界的复杂性。温伯格就是来打破这层自闭的薄膜的人,他一次次说明的是,我们始终有一个哲学上必然,但是有害的思维模式,这就是误以为我们能够认知的,就是这个世界本身。于是我们就不可避免地在任何问题上陷入这种认识论的错误——而这一点,显然是康德和黑格尔认识论的基础,但是如果陷入了这种认识论的一元观点,就不免在任何方向上都容易被自己的一元论所蛊惑。

我认为从某种程度上,无论温伯格的书可以对于系统论给予我们多么重要的观点,系统论本身是和认知论相冲突的,尤其是系统论作为一种科学的分支,某种程度上客观成为一种必然,而我们毫无疑问的已经知道,认知论一定是主观的,是这样的矛盾导致我们在系统认知方面存在的种种谬误,同时也是人类在不断解决这个永远无法解决的矛盾的过程中,对整个世界的认知在不断的发展。

这本书本身的逻辑是比较清晰的,也符合人类对这个世界的认知的基本规律。最初的认知必然是某种简单的集合论观点,集合论是一种形而上学,于是在批判了一系列集合论导致的认知问题之后,接下来还是只能继续讨论集合——这种做法很像我的大学数学分析老师,在介绍某种知识之前,首先介绍的是这种知识的缺陷,从而使得大家可以不那么迷信。当系统成为某种意义上的集合以及某种意义上对于某种集合施加行为的结构之后,便有结构、行为和集合之间的种种关系,以及体现在这种关系中的复杂性——不仅仅是系统本身的复杂度,而且同样包括一些简单的系统结构背后所体现出的复杂度。这一系列的复杂其实是用来解决问题的,用来解决一种预期和一种行为本身之间的问题,于是就有了调节——调节增加了系统的复杂度,这是因为这个世界是复杂的,对于简单的环境当然系统可以简单,可惜实际生活中这种状况实在太少。在书的最后,是对于盲目调节和过度调节的谬误的说明,从而结束了这样一本本质上及其晦涩的作品。

我很理解作者在系统论上的尝试,虽然从哲学的角度,这何尝不是在一个边界之外,再次划定一个相对较大的边界,从而做出的高一等级的形而上学尝试呢;当然同样在突破了这第一次突破之后,可以认为只要不拘泥于这一次的突破,便有某种不断突破的可能,从这个意义上,形而上学、知识论和系统论,甚至于科学本身,都是永无止境的。

周末随想——公开部分

December 5, 2011 in 系统-架构-信息

在看温伯格的《系统设计的一般原理》,这是一本非常深刻的书,我预计这是少有的几本不会过期的“技术类”书籍,和我书橱里大部分的技术类书籍有着本质的差别。

人类喜欢形而上学,因为毕竟人的大脑是有限的,要去理解的这个世界是无限的,于是想出了很多理解世界的方法,比如万物有灵论的巫术,形而上学的哲学和同样形而上学的科学。

根据这样的论证,科学一定是不可能做到一门精确的科学的,因为科学中充满了抽象,而把大量的细节抽象掉了——如果这个世界是科学的,那么这个世界是不存在的。科学既然无法精确的用于描述一个集合,那么科学就更妄谈精确的描述这个世界了,对这个世界使用分类原则和数学原则进行抽象的结果是一种认识论,一种属于科学的认识论。

科学,是用一种形而上学的方式,利用数学等等的手段,将复杂的世界抽象到人类大脑可以认识的水平的一种认知论。经过历史的证明,这种认识论的可靠程度,比巫术和形而上学的哲学在某些领域要效果好,但是也导致了很多方面的失败。

关于如何改变自己的当代“论语”

November 16, 2011 in 系统-架构-信息

每个人写书的感觉都是很不同的,弗洛伊德的书看多了就能感觉到这种味道,温伯格其实也有他的书的自己的味道。这是一种人性的味道,一种在考虑问题的时候,多方位的有机的,甚至是反对唯科学迷信而充满人文关怀的味道。看他写的东西,完全不像是一个西方作家,正如我此前说过的,西方思想家往往在两元论中纠结,即使逃脱了两元论,也总是在某种机械的形而上学中,即使是号称反对形而上学的黑格尔也是一样。

西方人文主义在20世纪总算是得到了相当的发展,如果说弗洛伊德仅仅是在某一个领域中接触到了人性,卡尔·罗杰斯同样借着心理学的名义发展了这种以人为本的思想的话,那么温伯格就是借着计算机世界的领域,继续讨论在现实的工商业环境下某一种类的工作或者环境下,如何人性化的生活或者生存,以及使得这种世界观与现实工作相融合。

很多时候学习哲学,是有一点反现实的和超脱的,但是温伯格的书不同,他用一种他的有机的、系统的、解决问题为核心的思想观点,来解决尘世间的问题,同时保持过程中对自我和他人的尊重。这种用出世的态度做入世的事情的特征,非常像中国的儒家,因此阅读他的东西,就像是在阅读一本当代的“论语”。

成为技术领导者》(副标题:解决问题的有机方法)是我继《你的灯亮着吗?》之后的温伯格的第二本书,如果说前面一本书更多的是考虑如何发挥人的才智来解决问题,那么这一本则是考虑如何改变自己来引导身边的人以解决问题。因此在这本书中的“领导”,就未必是一种职位上的象征,而是一种影响力的象征——“力量不是什么可以拥有的东西,而是一种关系”。而对于我们生活的现实世界而言,领导或者力量的作用,就是在于解决问题,因此他提出了“激励”“想法”“组织”的MOI模型,但是这根本不是一套理论,而是一套为人处事的方式。因为这三样东西的核心都是人,因此我们又看到了这样精辟的说法,在计算机(或者其它任何当代的需要创新的行业)这样一种依赖于人类智慧的领域:如果你是领导者,人才是你的工作。其他事情都不值得做。

因此可以清晰的看到,在各种各样的对自己、对他人、对团队的MOI的分析中,关键是如何尊重人,让别人用自己的自尊来完成对问题的解决!

而由于是写给“成为技术领导者”的读者的,所以这本书除了上面这个主线之外,另外一个主线便是针对自己的“改变”,因为任何一个人在这个世界上都拥有某种力量某种影响,领导尤甚,因此当开始具备这种影响力的时候,最恐惧的不是被领导者而是领导者本人,因为这种一种巨大的改变!面对这种改变的时候,最大的挑战不是外在的,而是内在的!因此温伯格在开始不久就讲了他的弹珠球的故事,而这个故事在全书的最后部分得到了呼应!

这种呼应是说,如果你愿意去迈出作为领导者的第一步,那么毫无疑问的,就必须面对改变,这种改变或许是某种赌博性的,甚至是对我的过去的否定,但是如果决定去尝试另一种或者证明自己或者解决问题的领导人的人生道路,那么就必须在自尊的基础上作出必要的改变。这种否定不是对自我的人性的反对和泯灭,恰恰相反,这是老吾老以及人之老的一种提升,一种将自己对自己的理解、宽容和解决问题的能力,去影响一个团队,获得更大的成功的工作,而所需要做的,首先是对自己的一种人性的爱,随后是面对环境作出的其实没有那么困难、但是会带来不必要的恐惧、不过确实是必须的改变;而这些改变所要做的事情本身,就是MOI——这些在以人为本的基础下构建的方式和方法。

改变本身似乎是痛苦的,而这种痛苦如果无法看成一种自我迷醉的幻觉,那么至少也只是一种进入下一个平台之前的低谷而已。而为了弥合或者避免这种痛苦而反复自我迷醉甚至借助于某种外界的“吗啡”,那么需要说的是,即使你不主动改变,也不意味着外界不会改变,与其被迫改变,不如主动转变!

就此,与君共勉!——献给大约5年前对我说过类似的话的人!

如果一切可以“重来”

July 15, 2011 in 系统-架构-信息

如果一切真的可以重来,那么人生就毫无意义,因为“重来”成为一种可能,就像永恒的生命一样让人生不再有任何冲动和憧憬。人都是会死的,正如所有发生的事情都不可能重来一样。

这本《重来》不是一本小说,它说得是项目方面、公司方面的重来。或许“事业”这个东西,多少是可以“重来”的。我在读它的时候就在想,其实每个项目做到后来,都有推倒重来的欲望,无论是原来写代码做设计,还是现在做项目管理。反正都觉得,或许下一次会做得更好,但是这种经验和教训似乎永远在下一次依然是失效的,因为现实中似乎没有标准答案。

这样的问题一再发生让我觉得或许只有一种可能,就是达成成功的背后原因,都不是那些每次项目总结可以罗列的表面原因。真正的成功所需要的,是一种更加形而上的内部的调整,是一种更加深层次的原因。不解决这些事情,似乎永远以为重来会更好,而事实证明重来依然会有各种各样的问题,让人觉得有必要再次重来。这个原因是什么,现在我不知道。

这本很多内容完全自相矛盾,只能看看玩玩的书,就是某一家公司的某一些表面原因(成功的或失败的)总结。可以看看,没有什么价值……

当然还有另外一种可能,就是所有的事情,永远会有不完美的地方,世界上所有的事物,都是成功和失败之间的中间状态,没有解决的“银弹”。因此人类世界,就是在这个不断重来的过程中,向前演进,没有那个完美的终点。

一个中国的程序英雄

December 16, 2010 in 系统-架构-信息

很多程序员都在纠结一个事情,仿佛国外的程序员个人英雄主义在国内根本无法获得认可,以至于很多人似乎很想成为终身的程序员的同时,认为在中国又没有给这样的人足够的保障和机会。

真的是这样吗?不可否认中国给普通程序员的长期职业空间确实不如欧美国家——这不是程序员这个行业的问题,中国任何行业对于“普通员工”都是榨干主义的,但是我们又有多少程序员真的是热爱程序工作而不是为了追求金钱呢?也就是说,究竟是把自己的职业当作目的还是手段,就是把自己当作目的还是手段!如果是当作手段,那就没有什么好说的,既然目的不单纯,那就不要立牌坊了……

今天中午和一个中国的程序英雄吃了顿午饭,其中有关的具体工作内容还是另外的,但是这个“不可复制的传奇”真的让我知道,中国不是没有程序英雄,在中国做程序英雄不是没有出路,但是有多少人愿意这样扎扎实实地去思考,去真的体味那种程序员上帝的感觉呢?这真的不是把程序工作当作一种手段,而是他的人生目的,他似乎都没有什么其它的人生目的了;50+的他,仍然以程序工作为主,谈起程序来神采奕奕,虽然他有着极为丰富的业务知识,有着多彩的生活,但是不修边幅的感觉,仍然就是那种还没有堕落前的“比尔·盖茨”形象。

这样单纯的人生,或许不值得今天的我羡慕,然而我相信一个神奇的悖论——对他而言,有了这样的美妙的程序工作本身就是一种幸福,其它都是浮云;然而正是这种把自己当作目的而非手段的态度,使得他反而轻易地获取到了被人无法得到的其它……

附件——关于交易系统的一些思考

交易系统的四大优先级——可靠性、容量、性能和易修改性。
如何提供容量和性能——在内存中处理,简化对过去历史信息的处理(仅仅基于上一日的结果处理今天的事务),内存中的缓存定期转为文件,或者数据库
如何提供超强的性能,又保证可靠——完全单线程的交易处理方式,最大化单线程交易的处理速度,避免多线程的复杂性
可靠性——通过简单的方式,甚至非常底层的方式提供极高的可靠性,轻易不相信第三方组件,用简单明了的方式解决问题,同时提供足够的备份措施
可重复的系统——将输入和输出的流水记录好,这些流水记录就是测试,反复测试,确保可用性测试的绝佳资料!
架构简单化——一招鲜吃遍天,既然交易本身得到了充分的保障,很多东西都可以通过交易完成,例如:将系统初始化本身就作为一种交易进行处理;有如:简化交易数据库,其它查询使用离线数据方式,包括文件
测试和部署——系统本身的设计过程就考虑了测试和部署的过程,测试是很重要的!
版本——就是一个版本,永远一个版本,但是“可重复”本身可以确保这个版本永远向前兼容,版本永远最新!
XML——XML对交易是一个灾难,但是将过去的交易记录转为XML,可以避免交易格式改动带来的对过去交易流水用来做“可重复测试”带来的影响
一致性——完全可以通过“一个版本”保持“管理上”的一致性,于是周边处理都是并行的,但是一个交易在数十台机器上完全“一致”地被处理!

对Java开发人员的建议——不要轻易使用第三方Package,除非认真了解这个Package的特性,甚至代码

哲学架构主义

October 19, 2010 in 系统-架构-信息

关于架构师(Architect)在这样一个以信息技术为主导的世界中是怎样的角色,总是有着不同的说法,甚至架构师自己还常常泾渭分明地区分自己是软件架构师还是硬件架构师或者应用架构师。只有一点是肯定的:这是一个非常“崇高”的名词,一旦使用便让人充满崇敬的赞誉;不是一般的人都觉得自己可以无愧地面对这个称号的。

如果将每一个系统都看作是上帝创世一般的世界,就像早期的计算机科学家那样,在今天已经是不可能的了。今天的系统与其说是上帝创世,不如说是从繁复的需求和无尽的限制(前面两个形容词换一下位置依然正确,Sigh)中去试图抽象一个模型,以期尽可能的反映一部分人的理想(或者幻想、梦想、空想等等)。于是乎现在的架构师,作为一个在系统构建方面的集大成者,可以说是这样一个构建和抽象过程中的哲学家。因为他需要解决的问题,不再是具体的设计和构建,而是如何去设计和构建用于设计和构建的具体行为,也就是“元设计”。

传统意义上,架构总是和设计联系在一起,就像设计和开发联系在一起一样。不过今天无数人已经知道,设计和开发就像设计师和工人一样不同,自然架构和设计也不是一样的工作。当一个人在开发中不断反思,就会上升到设计;如果继续对设计进行反思,结果不是所谓的“高层次设计”,而应该是“架构”。往往现在的架构师等同于执行高层次设计的人,后面我们会发现,他们是完全的不同。
因为架构师要做的事情,是设计“应该如何设计”,甚至是思考和设计“应该如何执行项目中的所有过程”。这是一种彻底的抽象,一种对设计本身的形而上学;和哲学不同之处在于,哲学面对的世界是先验存在的,于是哲学家们总是试图构建一种认识“认识世界的各种理论”的知识,即知识的知识;而架构师的空间在于,他有机会构建一个“构建世界的各种理论”。于是架构师应该做的,不是画出那些高层次的系统框图,而是说明应该如何画出这个系统的各种设计图——并且证明(说明)这一系列方式是正确的。

我不是说架构设计的理论和哲学理论是完全一致的,不过就算是举出几个简单的例子,也足以类比出两者之间惊人的相似。近代早期的两个著名哲学流派大陆理性主义和英国经验主义,前者假定世界是可以精确的认知的有一个确定性的答案,后者则怀疑甚至否认一切既存的理论甚至存在本身。如果我们看待系统构建过程中的两种主要用于指导设计的方法论,我们当然可以把那些假定有一个正确的设计,这个设计来源对于需求的逐层形而上学的抽象最后落实为一个自上而下的唯一正确的设计然后付诸开发的态度,视为当然的理性主义模式;而把那些假定需求总是不可预测,从而先实现一部分然后再边做边慢慢抽象甚至不再抽象设计的家伙视为经验主义者。显而易见现在大多数架构师都知道做一些基本的抽象(例如画一个高层次架构图)然后迭代地不断完善,那岂不就是黑格尔从肯定、否定到否定之否定的过程么(如果考虑到这是一个螺旋上升,而不是终结,我们就已经进入马克思主义哲学了)?当然敏捷开发就像存在主义哲学颠覆黑格尔一样颠覆着传统模式,他们常常说,代码的存在就是一切。
我们只要在此了解到,哲学家认识世界的过程,和信息系统构建过程中认识需求的过程几乎是一致的,并且在构建系统过程中这种认识是必须的,就知道这是任何一个系统构建项目都无法逃避哲学问题。而且这些哲学的思考结果还会得到真实构建的检验,虽然这个过程中也多了一些创造性的空间——因为系统不是必须和需求一样,我就常常用设计去改变需求。

一定程度上,所谓方法论就是这里的架构哲学。然而方法论这个名词现在被用烂了,这个本来用于描述“关于方法的方法”的名词常常退化成为一种方法本身。GoF的设计模式被奉为圣经仍然只是方法而已,方法的方法只有“面向对象”才有资格冠冕。同样面向过程就算被抛弃许久,不可否认这也是一个曾经主导一切的方法论,或者说设计哲学,因为根据这种哲学,计算机世界就是对人类具体行为的抽象(面向对象则是按照“世界客观本体,和本体的能动”进行抽象设计过程的方法)。

我可以坚信的是,每个自认为胜任架构师的人都有自己的分析和设计哲学,问题在于他们多大程度上清楚的知道自己平时真的在干些什么架构方面的工作,以及贯穿他们一致的架构哲学到底是什么。所以与其做一个迷茫的被推到架构师位置的设计师,不如好好细细审视架构哲学本身。

这里唯一需要另行解释的是“应该如何执行项目中的所有过程”中,是否包括了项目管理。可以是,可以不是,就算不是,也不能否认架构师和项目管理之间纠缠的关系(难怪通常架构师和项目经理必须是同性呢,开个玩笑)。《人月神话》中提到的以架构师为核心的项目团队,今天有多少人还会相信?专业的项目经理概念已经是根深蒂固了。就像大概不会再有人说哲学家应当执政一样,但是从柏拉图的《理想国》开始一直就有哲学王的概念在;眼下让一个架构师去思考项目管理中的具体问题已经纯属浪费,我们往往也假定项目管理哲学已经由一些另外的人解决了,于是架构师虽然仍然应该关心一下项目管理并且有针对性的帮助项目经理的管理和系统构建本身相融合,不过最重要的仍然在于“定义和指导”项目中“(比较)没人性”的“(看上去是)科学”的那部分工作——再次重申,架构师不是去做具体的设计,虽然不是不可以;但架构师是为具体的设计设计好整个过程。

国人写书,粗制滥造

July 29, 2010 in 系统-架构-信息

SPSS统计分析基础教程》这本书的问题就在于,作者也不知道定位在哪里,于是变成了一本四不像的书。居然还称之为“高等学校教材”,我的天。

感谢作者,让我再次对中国作者,尤其是改革开放后非文学作者的书籍,表示由衷地放弃。曾经我也是你们中的一位,不过也因此我不会再仅仅凭借网络上的信息信任你们的东西了,除非我去实体店验证之后再说……

架构无处不在

June 24, 2010 in 系统-架构-信息

我的职业生涯的萌动大约从初中时代开始,那个时候最出色的一次作品是在工艺美术课上,以一栋房子为核心构建了一整个社区。现在说起来,那个就是所谓的架构。

后来成为一个IT方面的架构师,算是一种偶然,不过对于任何一个追求新奇的男孩而言,电脑确实有着奇怪的魅力。大学之后《Caesar III》成为了我最喜欢的游戏,也是因为这种架构的乐趣。当终于在工作中找到了类似的感觉的时候,便有些一发不可收拾了。

信息架构(IA)对于互联网时代,成为了又一种重要的架构,相比企业应用架构关注功能和职能,它关注的是互联网上一个节点的内容架构。这个架构提升了抽象水平,因为它迫使你审视“What & Why”这样的关键问题,而不是限制在“How to”这样的具体问题上。就像Web Analytics一样,它迫使你考虑业务和功能问题,脱出IT的视角限制。

锦绣蓝图》是这方面很不错的书,它不是IA方面的理论专著,算是一本普及的读物。不过这样一本读物对大多数人而言已经相当足够了,它说清楚了为何建立网站,如何考虑用户,设计和概括网站框图,设计访问路径,组织内容,设计导航,元数据,搜索,和社区……这些内容对于技术人员,从不考虑,对于业务人员,常常忽略。专业的信息架构师不多,但是每个人都懂一些信息架构,显然对于一个网站的设立非常重要。

曾经有过这样的感觉——现在的Internet究竟是太大,还是太少?规模太大,有用的东西太少,考虑到Internet的特征,以及达尔文的理论,我想多一些网站更多一些网站是一件正确的事情,只有越来越多的提供长尾,才能形成高质量的蓝海。