关于架构的一句话,还有一个实例
昨天有幸邀请到周爱民先生在懒懒交流会上分享《前端,架构、框架和库》,很精彩睿智的讲演,受益颇多。其中提到对架构的一个描述:
架构是把握问题的关键,平衡设计。
很认可。下面是我的理解:
- 什么是把握?在武术届有一种器械训练方式是“抖大杆”:一条白蜡木做的大杆,杆长超过两米,训练者一手把杆,一手握住杆的底部,全身配合双手,将杆抖出各种样式。把和握是两个不同的动作,把的是方向,握的是基底。把握是一种掌控,武林高手能让大杆随心而动,随意而行,这就是把握。把握可以以把为主,以握为辅,随心所欲,花样百出。把握亦可以握为主,以把为辅,以气驭剑,天马行空。
- 什么是问题?物理学家狄拉克有一个典故。有一天他到一个学校去演讲,讲完以后,主持人说:“大家有什么问题?可以问狄拉克教授。” 这时,有一个学生站起来说:“刚才你在黑板上写的那个方程式我不懂。” 狄拉克没有回答,好长时间都没有回答。于是主持人就问:“狄拉克教授,您可不可以回答这个问题呢?” 狄拉克说:“那不是一个问题。” 狄拉克为何拒绝回答?因为提问者看不懂方程式只是现象,而不是问题。什么是问题这个问题,推荐阅读杰拉尔德·温伯格的经典著作《你的灯还亮着吗 — 发现问题的真正所在》。
- 什么是关键?关键的原始释义是门闩。关是关闭,把门合上,键指机械零件。放到现代,关键就是门上的锁。如何找出未知问题的关键所在?资深的盗墓者,遭遇一个前所未有的机关时,首先是观察,尽可能的获取信息。其次是分析,尽可能推断机关背后的机理。紧接着可能会联想和尝试,用已有的破解技巧,去尝试解决当前问题。反复以上步骤,不懈努力,等机关破解的那一刹那,盗墓者也就明白了该机关的关键所在。
- 什么是平衡?Douglas 说,万事皆权衡。架构的好坏,是一个适不适合场景的问题。无论是类库的设计,还是某一行代码的书写方式,好坏与否,都要看这个类库或这行代码,使用在什么场景下。Google 首页可以省去 html 结束符,但并不意味着你的博客这么干也是妥当的。在前端界,table 布局也不是万恶不赦的。如果你的用户群里还有不少用户在使用非常旧式的浏览器,table 布局就是最合适的方式。
为了进一步阐释,下面举一个实例。
很喜欢看书,好几年前开始,喜欢从网络上收集各种书籍:

(几年前的详细分类已丢失,上面仅是模拟能想起来的几个类别)
按照上面的书籍整理方式,很快发现一个问题:有些书籍,会同时属于多个类别。比如《红楼梦》,放在“古典文学”里好呢,还是放在“精品小说”里好?很明显,这涉及图书管理学的经典问题:如果做一个合理有效的分类?
于是开始尝试从各种维度来重新分类,甚至跑到大型图书馆里去借鉴图书馆的分类方式。但很快我就崩溃了:中国文学 – 古典文学 – 小说 – 清朝 – 红楼梦。我不是图书管理员,我就是想收集点自己喜欢看的书而已。这种完美主义者的“科学”分类法立刻被我抛弃。
后来很长一段时间,我的书籍分类一直很混沌。经常隔上几个月,就要大动干戈全部调整一次,让自己追求“完美”的心灵临时安顿。
很漫长的一段时间,很纠结的一段折腾。
一直到大约一年前,忘了当时是什么触因,突然就找到了一个让自己非常满意的分类。在给出这个分类前,我们先“马后炮”一把,尝试从架构角度来进行分析:
这个例子中,什么是问题?表面上看,是如何找到一个合理的图书分类方式。但这真的是问题吗?显然不是。大型图书馆的书目,绝对是合理的。那问题在什么地方?稍一分析不难发现,问题不在于书目分类是否合理,而在于是否适合我的习惯,是否能满足我的需求。(初始的分类问题被转换成了需求问题,有关问题转换方面的话题,推荐阅读温伯格的书籍)
那么,什么是我的需求?我为何要对书籍进行分类?仔细思考,我将需求整理为:
- 新下载的书籍有个固定的目录存放。能让自己想看时,快速找到。
- 正在看的书籍能立马找到。
- 已看完的书籍要归档,以后能比较方便的查阅。
从上面的描述中,可看出我的需求有时间线。我的需求是根据阅读书籍的时间来组织的!“时间”就是我寻找了很久的书目分类的维度!因此时间维度就是该信息架构问题的关键!这样,立刻就有了看似简单但能很好解决问题的分类方式:

一切就这么简单!按照这个方式重新整理书目后,立刻心旷神怡。
当然,这里也涉及到权衡:
- 新下载的书籍太多怎么办?需要分类吗?
- 已看完的书籍,归档时需要分类吗?
上面两个问题,不同的人有不同的方案。我的选择是:
- 新下载的书籍不再分类,全部混杂放在一起。好处是能杜绝自己盲目收集书籍的“恶习”,并规定新下载的书籍不能超过 10 本。第 11 本入库时,必须删掉前 10 本中的一本。
- 已看完的书籍会分类,但只做一级大分类,比如:小说/诗歌/摄影。并规定从“正在读”移动到“已阅读”时,要非常谨慎,必须有理由说服自己有保存价值时才归档,否则删无赦。这样,一年下来,真正有价值归档的书籍并不多。
这就是权衡!
最后再给一个案例,我的 Google Reader 订阅项分类:

必读 — 符合自己脾胃的精品订阅源
闲读 — 可看可不看的订阅源
待通读 — 新发现的一些相见恨晚的博客,想翻阅其所有文章
更新 — 软件更新提示等订阅源
自从采用这个分类后,信息筛选的时间大大减少,有效阅读的时间增加了很多。注意:这个分类适合我,但未必适合你。适合你的分类,可以从自己的真正需求出发,仔细的思考和分析,通过探索和实践去获得。
上面说的虽然是很小的生活中的分类问题,但往大里说就是信息架构,再类推开去,就是软件架构。道理是相通的。架构是个过程,是思考、实践,再次思考、再次实践的过程。在这过程中,下面三个问题经常遇到:
- 问题是什么?
- 什么是问题的关键?
- 在当前应用场景下,如何设计,如何权衡?
架构就是在特定应用场景下,不断追问和寻求以上问题的过程。在这过程中,你的所有决策的集合,就是架构。

March 14th, 2010 on 11:42
玉伯同学分享的也十分精采
March 14th, 2010 on 12:41
豁然开朗
March 14th, 2010 on 13:24
基本上只是提供了一个解决入口问题的小技巧而已。图书的分类归档,解决入口问题固然重要,但更重点的实际上还是对已读书籍的分类保存,已方便在日后想读取的时候更方便找到。因为,如果可以坚持新书不超10本,那么搞不搞未读和已读实际是无意义的。
March 14th, 2010 on 14:18
@王有才:我不这么认为。在特定的场合下,如果小技巧能很好的解决需求方的问题,那么这个小技巧就是非常好的。在这个例子中,可以照搬图书馆的分类方式,但解决不了我的问题,又有什么用呢?
关于“意义”,也是和场合相关的。离开场合是谈不了意义的。
突然想起参禅三境界:参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山还是山,看水还是水。
March 14th, 2010 on 16:35
豁然开朗!我一直在为rss分类头疼!原来是没有明白什么是问题以及问题的关键!这套方法也满适合我的!特别是阅读后的书籍能够立马找到!
March 14th, 2010 on 23:37
俺笨,没看懂。发现一个后门,阿里系的同学都用 Ubuntu?
March 15th, 2010 on 7:37
@大郎:指文件夹图标?我用的是 TotalCMD, 图标是 tango. Ubuntu 适合玩玩,日常办公还是 win7 好^o^
March 15th, 2010 on 7:58
火星了,看了这篇文章,才知道google reader可以建文件夹分类。
March 15th, 2010 on 11:15
很好
如果我们的义务教育的老师们你能有这样的想法,并且能这么教育下一代这样看待问题。
学生们会受益终生
March 15th, 2010 on 16:13
说得好~
尝试体验你的分类法的时候发现一个问题,应该把你的博客仿佛“必读”还是“待通读”呢。。。
March 15th, 2010 on 17:16
我也曾一度在做信息分类的事情,大学期间的数万张照片,最后是按照活动和个人来分,而活动下记录了日期和活动名。
曾经花了一个月时间down完了郑州大学ftp上的电子书,留存后,挑了一些出来阅读的时候也是为分类大伤脑筋。后来解决方式和你的一致。呵呵
March 15th, 2010 on 21:04
@思杨:放在“待通读”里,哈哈
@wolf: 殊路同归
March 16th, 2010 on 0:11
nice 有效解决或者即将有效解决当前一些问题
March 16th, 2010 on 2:17
很赞同LZ,我平时也是这样做的,很方便,当信息量很大的时候,可以有选择性的阅读,没必要所有的都全文浏览
March 16th, 2010 on 11:06
学习了,恩,这回就能更好的去学学关于架构的一些东东了
March 16th, 2010 on 11:12
其实吧,我觉得有时候Category解决不了的问题 Tag或许可以解决。
一本书可以分属不同的Tag,Tag可以用来描述书的不同属性。
当你阅读完一本书的时候,把”正在阅读”的Tag删除,新加一个”已经阅读”的Tag即可
March 16th, 2010 on 15:48
原来这样是架构..为订阅文章分类时,为收藏夹分类时都能用到…去试试一直困扰的收藏夹分类问题能不能解决。
楼上提到的Tag感觉确实比文件夹要灵活,一篇文章可以同时标记多个Tag,却不能同时放在多个文件夹。google reader可以用Tag标记文章。。。
March 16th, 2010 on 21:44
目录也是一种标签,是一种简化了的最容易被人脑接受的标签体系。目录的展现形式是一维的,但其含义可以是多维。实际上,大部分没有经过严格训练的用户,建立的目录都是多维的。个人觉得,用目录还是用标签,必须看使用场景。如果是海量信息管理,标签可以带来简洁优雅。但如果是个人少量信息管理,标签未必合适,目录反而清晰直接。采用什么方式来管理,依旧是分析需求、确定问题关键以及小心权衡的问题。
March 16th, 2010 on 22:23
一直在 reader 上看玉伯兄文章,偶然链到了博客原文,才发现岁月如歌也改版了
曾经面面俱到无微不至的文章分类也被重构成了现在这个样子,两字×四类,简约扼要,相当赞;页面也做了删减。完美主义就是求大、全、细,能放得下的人,境界已臻化境。
March 16th, 2010 on 22:33
曾经甚至为 ff 的书签、google notebook、wp 的文章等的 tags 的制定和管理而大感纠结,最后找到一个办法,就是删除所有的 tags,一劳永逸。少比多美。
March 22nd, 2010 on 13:58
精彩,由其是对问题与关键的看法。正所谓“头痛医头,脚痛医脚只是临时解决问题表象的方法,要想根除,必须找到关键所在”。当信息爆炸的年代来临,我的方法也是“任你汪洋三千,我只取一瓢饮”。
March 26th, 2010 on 14:22
IA?信息架构越来越重要啦!!赞同
March 30th, 2010 on 17:58
Google Reader 订阅项分类 学到了…
March 31st, 2010 on 16:50
架构是把握问题的关键,平衡设计。同意这个观点。找到问题的关键就能了解整个问题。
May 26th, 2010 on 22:15
我比较同意 16 楼的
June 21st, 2010 on 21:23
感悟的很有道理。
July 22nd, 2010 on 17:15
学习了…这种信息架构的应用对于处理事务很有帮助
leave a reply