设计之一

我曾经系统的读过论语。我发现一个有趣的现象,大家都来向孔子问仁,而很少会问什么是仁,绝大多数时候是在问如何作才能仁。这个法子在我看来很好,绕过了种种逻辑和分析,直接指向了行动。这是我们中国人的大智慧,能够绕过理论困扰,直指行为的大智慧。

我相信如果我问100个人,什么是设计,这个问题,会得到100个不同的答案。我曾经查过字典,查过wikipedia,用过google,也查过百度。反正我是放弃了,虽然最终我得到了一个严格意义上的定义,但是对于大家来说这个定义的就没什么价值。而我恰好是中国人,在我这里定义不重要,作什么和怎么作,才重要。

我遇到设计,首先是在刚出道的时候。我那个时候不知道是什么角色,但是能参与进软件开放的各个环节。首先我们召开了一个会议,某个大牛(真正的大牛,那个时候就已经是正教授),对某个手下的徒弟说,你就负责数据库吧;对另外一个徒弟说,你负责界面;对小徒弟说,你负责中间层;我来写数据库的接口。于是会议就结束了。在当时的我看来,设计就是分配工作。

后来这个项目失败了(不失败才怪),我被迫上阵。于是我也开了一个设计会议,我不知道该说什么,当然也轮不到我开口,别人就已经开始质问我了。听了半天,我只听清除一个词——接口。于是我又明白一点,设计还要作给大家设定接口的工作。

这之后我被迫进入了这个行业。虽然在中学的时候,我就给别人写过程序,但是只是进入这个行业之后,才知道开放软件真不是一件简单的事情。这个时候,已经不是从前了,虽然大家都知道开放软件是个技术活,但是只要是个活,就要确定什么时候结束。而作为我来说,不仅仅是要确定结束,还要确定何时能够从客户那里拿到钱。于是我这个时候知道,设计还要包括工期和进度,以及资源的配置。因为客户的钱是随着我们开发的进度来的,我作慢了,客户不会愿意;我作快了,很可能我自己就亏了。不过这个时候天下还是很太平,钱总是会收到的。

再后来大家就知道了,我遇到了敏捷,并且很热衷的推广它。客户合作,我简单而坚定的执行者。我相信,客户虽然不懂我们的代码,但是我们应该解释给他们听这些代码是如何运行的。所以这个时候,我明白结构的意图和结构也是设计的一部分。

我又遇到了重构,于是我坚信重构就是设计,设计也就是重构。一切设计,在我们谈起他们的时候都仅仅是一种想法,一种意图。而只有真正的落实到代码的时候,设计才真正的成为设计。

今天我回顾我这二十多年的编程历史,发现最初的设计其实来自一种构想,一种将程序按照某种意图分块的构想。而进一步说,如果我们考虑到接口,则可以看作一种构架的某个角度的视图。再进一步按照工作量来安排开放的过程,可以看作讲构架以工作节奏为导向的工作计划。再加上结构的考虑,就如同安排好程序的大的框架。如果这个时候再考虑,尽早的实现一个可运行程序,那就相当于给程序化了一个最基础的基线。而重构则是在这些串联起来,不断的调整,不断的解构,然后再构建的过程。

在很多人眼中,设计仅仅是关乎结构的。而确实,结构上的考虑,是设计中的根本。但是我很肯定仅仅设计结构是不完全的。当然我们经常会说到的编程词汇,很多都是关乎结构的,比如构架,框架,类库,接口,分层,模块,等等。这无疑加深了这些人对设计的误解。设计,必然会包括设计的实现,至少会包括设计实现的构想。

猜你喜欢

转载自ozzzzzz.iteye.com/blog/1820720
今日推荐