很多优秀的产品中的一些功能看起来很容易被复制,但当你实际去做时却发现是十分的复杂。我称这些功能特征为程序冰山,因为它们暴露的那部分让一个普通观察者或一个竞争对手来想象可能只有一个周末的工作量,但在未显露的部分里却是庞大无比的用来支撑浮出水面的这部分完美运行的不可缺少的复杂程序。
依我的经验,程序冰山中露出水面的部分通常牵涉到对很多极端情况的处理。这些极端情况有时是由于为了使用户界面更加简单而造成的,例如,为了追求更少或更自由的表单输入形式。
在我最近的公司DuckDuckGo里有一个很好的例子,就是把维基百科信息转化成能通过查询显示的Zero-Click信息,看起来好像是很简单明了的任务。初一看——我想这么办,维基百科里可以导出一个叫做abstract.xml的东西,是一个给Yahoo用的信息摘录。
然而,但当我着手去把它展现给真正用户时,却遇到了各种极端情况。就我个人的观点,这些导出数据实际上完全无法使用,经过好几天的研究,我最终放弃了它。这个东西在很多方面都有问题。
维基百科里有模板,单独的页面,页首警告信息,信息框,转向地址,残缺/复杂的句式,等等。如果你不想把错误的东西显示出来,这些所有的事情你都要去处理。一旦你着手去做这些,你很多能会遭遇到更多奇异的东西,例如相关文章,目录,正确的图片,正确的外部链接,等等。以及如何实时的更新它们?要处理的东西会越来越多。
我喜欢程序冰山。当你能看到它的整个形体时你会惊讶不已。这对那些不喜欢观察事情的全貌(至少是最初)的人是一种诱惑。它也是一种对想进入的人的门槛,一种对自己开发还是购买他人的产品的决策的催化剂,是用户体验的基础支撑材料。
[英文出处]:Code icebergs