今年我又先后两次去到日本,其实,日本给我留下的最深刻映像并非大家常常挂在嘴边的干净、空气好、礼貌周到的服务等等,而是那些无处不在的设计体现。产品的包装、一块指路牌、路边小食店的招牌、行人们的衣着,虽然它们的形质、用途各不相同,却总能给人以简朴、精致、人性且颇具内涵的舒适感觉。我想可能正是这些由小及大、无处不在的美才培育出了今天这个相对成熟的日本社会吧。
说到设计,我曾读过一些日本设计师的书,田中一光的《设计的觉醒》,黑川雅之的《设计与死》,原研哉的《为什么设计》、《设计中的设计》、《白》等等。这些日本设计大师所提出并不断被继承的极简、去修饰、设计的功能性等理念都深深印刻在了当代的日本设计之中。而其中让我最受启发的,却是他们用最直白语言告诉我们的“这样就好”。
今天,作为一名程序员,当我在进行系统设计时,也时常会提醒自己:“是不是这样做就好了呢?如果没有必要,我们就不需要增加这个附加功能了”。也正是在“这样就好”的指引下,我对如何正确地进行程序设计似乎有了更深入的理解。
记得那还是我在担任架构师期间,曾负责对公司的一个IT项目进行评审。评审中,项目经理在她所作的报告中,将最大的篇幅留给了系统支持个性化这个特性,还眉飞色舞地将系统可以任意变更颜色主题这个功能强调了一番。我当时就想,这位项目经理一定没能理解用户的真正需求与痛点吧,而这个系统除了可以换颜色之外,估计也不会有什么亮点了。
从程序员一路走来,我们中有多少人都曾热衷于系统功能的大而全,那些可有可无的配置功能,以及仅仅作为修饰的个性化定制。虽然这些功能都似乎能为我们的产品增光添彩,但它们真的是用户最需要的吗?如果让我们回到过去,我们还会坚持付出那些代价去实现这些功能吗?
优秀的系统绝不可能凭空产生,它也没有一个统一的标准,而“这样就好”却能指导我们这些系统设计者,在众多选择中作出平衡与取舍。该使用什么样的架构,采用哪种技术,在这个功能中使用什么设计模式,采用何种缓存策略等等,这些都需要我们根据当时的环境、资源、用户等要素做出恰当的选择。与其提供很多功能而最终用户却始终觉得不好用,倒不如做好一个能真正帮助用户解决问题的功能,让用户觉得,“嗯,这样就挺好”,然后再进一步,“如果能...就会更好了”,这样一步一步做出理想的产品来。
而下面这些则是我们在系统设计与开发时应该尽可能避免的问题:
- 不盲目使用新技术:新技术意味着风险和不确定的代价(多因修补未知缺陷引起),因此我所在的金融行业里,很少会选择那些新生技术(1年内),而更倾向于选择成熟且稳定发展中的技术或框架。
- 避免过度设计:过度设计源于系统设计者没有理解用户的真正需求,而将自认为有必要的功能附加于系统之上。而前面提到的可配置、个性化等就是那些最典型的例子。要避免过度设计其实也很简单,要做到多看(看那些优秀的系统是如何设计类似功能的),多想(站在用户的角度去想他们所提需求背后真正的痛点和问题是什么),多做(不要只停留在需求文档上,尽可能快地做出能够验证需求的功能原型,然后与用户不断确认和改进),多说(在每一个阶段都与用户保持持续有效的沟通)。
- 不在项目中技术镀金:技术镀金指的是开发人员在项目开发中过于追求技术的完美性,试图在技术上镀上一层完美的金壳,导致软件开发工作量加大,项目时间拉长,而最终有可能导致整个项目的失败。我们不应该否定程序员追求完美的自我要求,但应该在项目中引导他们正确地理解“这样就好”的理念,帮助他们平衡追求完美与项目现实要求之间的关系,从而作出最恰当的技术方案选择。
最后我想说,即使你已经很好地理解了“这样就好”,并能提出更合理的系统设计,但结果却还是很有可能会遭到否定。因为,你所需要面对的或许是那些不那么成熟的项目经理、盲目自大的产品经理以及完全没有产品思维的业务用户,而在他们眼中那些糖衣炮弹(系统的附加功能)总是有着非同一般的吸引力。你可以尝试着去说服他们,但即使失败,你也不用为此感到沮丧,因为时间会证明你是正确的,而在你内心中也应该知道,自己正变得更加成熟,并且已经站到了更高处。