各司其职——我对《VCL已死,RAD已死》的理解

SD2C大会后,爱民兄意犹未尽地写了《VCL已死,RAD已死》系列。而在这个系列中,我认为核心部分就是那段插播的《与Shaofei Cheng的MSN聊天》。

当时在SD2C大会上我就觉得爱民兄的观点很有意义,但是估计很难被大多数开发人员和开发管理层所接受。Shaofei Cheng的观点应该说就是一直以来在开发人员中流行的乐观主义想法的体现。他们还没有真正认识到Brooks所说的“没有银弹”是什么意思——

Brooks的原话是这么说的:软件开发的根本困难在于——软件本身固有的复杂性、一致性、可变性和不可见性

所以没有什么单一的解决方案可以完全解决软件开发的这个根本困难——过去没有、现在没有、在可以预见的将来也不会有什么银弹——虽然技术在进步,但软件的复杂性等固有困难却在以更快的速度膨胀。

注意:不是不可能解决,而是没有单一解决方案。

爱民的观点正是在开发工具/开发语言的层面具体地揭示出这一点:没有人是万能的——程序写得好的人,做界面显然不如专业的美工;同样没有工具是万能的——所以VCL和RAD是死掉的。

其实爱民这次在SD2C大会上的议题《Delphi+JS+Erlang=?》也是想要把讨论的外延扩得更大一些的,只可惜会议时间有限,只够就技术层面作一些说明,我也是在会后的交流中听到爱民兄的更多见解的。

在 这里,VCL和RAD并非是特指,而是一种泛指——泛指任何用单一的解决方案解决所有问题的企图。VCL的错误就在于它将界面与业务逻辑捆绑得过于紧密, 而RAD则是作为工具出现的帮凶。程序员应该只考虑自己的程序逻辑,而不应该把精力浪费在界面上。同样,美工只需要把业务所需要的元素组成易用美观的界 面,而不需要去考虑其背后的实现。从这个角度上说,爱民兄在会上介绍的用DELPHI做后台逻辑,JS做前端浏览器式界面,Erlang做后端服务只是这 种思路的一种实现。

这也就是为什么我要说《放宽技术的视界》,如果总是囿于自己眼前仅有的几项技术,很容易把自己的思路局限在一个小圈子里,出路只会越走越窄。

当然,不可否认的是,这种各司其职的思路虽然可以使各部分的人使用他们各自顺手的开发工具进行开发他们各自擅长的方面,但同时也带来了一个问题,那就是Shaofei Cheng所指出的:各部分开发人员之间如何交流?

但 这个问题并不是新问题。因为现在的时代,绝大部分软件都不可能是凭一两个人的力量可以完成,只有团队的力量才有可能,而只要有团队就会需要交流沟通,各部 分开发人员之间的沟通并不会比超人之间的沟通困难多少。至于UML/XAML仍然不过是一些形而下的工具——只要能沟通,用什么手段和工具并不重要。

现 在想想,正是在这种思路的驱动下,我在告别了VCL之后并没有像大多数VCL开发者那样走向.net,因为在我看来.net不过是VCL方式的延伸——虽 然它做得更好得多,但方向是一样的。这样说又有点唯工具论了,正如现在仍然可以像爱民兄那样用DELPHI,同样也可以用这样的方式来用.net。我的选 择只是代表我个人的偏好而已。

总之,超人们单枪匹马打天下的时代早已经结束了,而就团队开发来说,各司其职很重要。

你可能感兴趣的:(杂谈)