美感这两个字可以应用到人们感观所能触及到的所有事物,因此除了看到的商品,享用的服务也一样开始受着「美力」所影响。从最近苹果计算机的白色旋风 iPod,以及由ICQ启始而影响人们沟通习惯的网络实时传讯、部落格(Blog)到网络相簿(如最近热门的Flickr)等等,大家应该就可以感受到了吧。由「美力」所带来的经济力是如此强大,各行各业的产品也好,服务也好,都越来越讲究精致甚至豪华,产品或服务的功能面已经是基本的要求,似乎美的展现才是大家的决战点。
美的本质是创造力
其实美的追求是人类的天性,当社会进步到某一个程度,我想这是合理的现象,人类也是感观的动物,遇到美丽的事物,人们可以利用五官,甚至是心去感受,而「设计」,是表现出美的方法之一,例如华裔建筑师贝聿铭为法国罗浮宫设计了一个玻璃金字塔入口,那是一个很美的架构,人们即使不懂它的设计原理,也可以用眼睛去欣赏它的外观,用心去感受它古典造型及现代建材的融合。
我常常在想,那软件设计的工作呢?软件的「设计」有人能看的到吗?它的美有价值吗?当我在读《Software Architecture in Practice》一书时,封面的罗浮宫玻璃金字塔照片表达了软件架构的美──就和伟大的建筑一样,而差别只在于建筑是人人看得到摸得到,而软件架构却不是。既然如此,软件的设计需要美学吗?还是只在学理派的乌托邦才看得到呢?美学大师蒋勋的一句话「…美的本质是创造力…」,让我更相信自己心中的软件乌托邦,软件的本质也是创造力,「设计」则是让创造力具化出美的手段。
看到这里,也许有一些经验较丰富的软件人会笑说,在台湾的软件环境里,软件美学是没有价值的。可能是因为台湾的软件市场小,所以台湾的软件公司资本也比较小,让台湾的老板比较重视马上看得到的「钱」途,而大家也总是比较重视「看得到的设计」,对于「看不到的设计」,在没发生任何状况前,大多是自然地忽略,因此就养坏了市场对于软件设计的不尊重,并间接影响到软件开发人员的价值。我姑且不评论这个适合放到讨论网站的题目,以及会变成炮灰的答案,因为事情的看法常常和信仰有关,而现实的对与错是不会影响到信仰的,对不对?所以先来谈谈我所看到的软件美学吧。
软件架构之美好比建筑之美
我不得不拿建筑来比喻软件开发,因为真的太相似了,建筑师设计出建筑蓝图之后,需要有各类专家依照蓝图的设计,真正地将房子盖起来,而软件开发也是同样需要设计及实作的。那什么能够感觉到美呢?一个建筑师发挥创意所盖出来的房子,应该是兼具美丽外观、安全与实用等等,人们可以从建筑的实体,感受出建筑师的创意,进而感受出这一种美的「思维」,因此,除了形状、颜色、声音或者动作可以让人感觉到美,思维也应该能让人感觉美,而设计就是一种高度的思维活动。
从建筑师的「创意」到施工实作的过程中,还需要「沟通」,不然思维是无法实现的。相同的,软件的设计就是将「创意」的思维表现出来,有创意的软件设计必需要能与实作者沟通,而沟通最好的工具,就是共同的语言。
有空多敷Pattern面膜
近年来OOAD盛行后,汇集对象导件精髓的Design Pattern,就是用来发挥创意解决问题并且表达沟通最好的共同语言了,在软件设计人员驱之若骛学习之余,大家除了要了解它的使用时机,其沟通的意义也是很重要的。
美丽,真的该从头开始,身为软件开发人员应该有空就敷一下Pattern面膜,因为这些是许许多多前人所留下的智能,当你从其中感受出设计思维之后,对于这些美丽元素能不发出赞叹都会很难,我也是在了解Pattern的过程中,慢慢地体会到对象导向的精神。
软件架构的风格与结构
美一个软件系统就像建筑一样,有其风格及结构,就是所谓的软件架构。调理出好的架构体质对软件系统未来的美丽外观、坚固安全与实用是非常重要的,这和一般迭床架屋的蛮干方式有很大的不同。
使用思维来塑造软件架构的美感,也就是使用Pattern来设计软件架构,并且以架构为中心的开发方式,可以让设计的美丽从软件核心一层一层地透出来。而对象导向的精髓提供了软件架构许多巧妙的设计或者扩充空间,进而影响软件未来的实作与发展。
一个软件项目的开发过程当然包含了许许多多不同领域及责任的专家们,这是一种需要团队合作的艺术,单纯的利用Pattern来沟通创意当然是不够的。专家们有不同的理念及需求,这是一个复杂的现实环境,而艺术与现实的结合才能实现创意,才能让人感动吧!
一个有效的软件开发流程就像是一位导演,指挥着不同的专家,在适当的时机使用相同的语言,来沟通整合大家的创意及需求。因此有了思维还不够,我们需要方法才能导演出美丽,苏醒软件美学。
讲了那么多虚无飘渺的东西,感觉像艺术一样距离遥远,也许这真的需要在乌托邦才做得到,当然,寻找软件乌托邦是充满挑战的,而胆识是必要的条件。