Jobs辞职了。
好吧,这篇文章早在年初就想写了,不过经过漫长时间的沉淀,最终还是被忘记了。最后帮主的退出帮我想起了这个事情。
本文论述的其实很简单,是一个人类使用东西上再简单不过的常识。不过很可惜,几乎所有的程序员都会忘记这个事实——直到有一个正视事实的家伙赚了大钱——然后现在辞职了。
人在使用东西的时候,都会从简单的角度去理解,而不是从复杂的角度。而人在研究东西的时候,都会从复杂的角度去研究,而不是简单的角度。我们可以回想机械大爆炸的年代,今天能看到很多上世纪的笔记,里面记载了奇奇怪怪的机器——传说达芬奇还研究过直升机。不过今天能留下来的,都是最简单和基本的了。这并不是说这些机器不好,而是创意从研究者到使用者之间巨大的专业鸿沟所致。
举例来说,我们日常最常见的机械之一——汽车。汽车上有数千计的组件,随着我们对不同组件的定制和组合,我们能够组装出不同的车。越野的,城市行驶,大脚怪,等等。从设计角度说,车的操控界面其实过度简化了。理论上说,即使四个轮子的车,也可以考虑对每个轮子施加不同方向和大小的力矩。加上轮子的内弯和外弯角度参数。一个轮子上就有两个有向标量在控制,四个轮子组合起来,足足可以形成一个八维量——只比张量差一个维。然而我们在开车的时候,只会控制四件事情——方向盘角度,档位,油门,刹车。近些年的无级变速车还逐步合并了油门和档位,使得控制量还少了一个,只有一个有向标量,一个标量,一个布尔。
这些控制系统能够产生的控制精细程度,是远远比不上八维的控制的。例如,如果我们能精细控制每个轮胎,车可以做到原地旋转——两个前轮同向向前,两个后轮反向向后。或者可以保持方向的状态下斜侧移位,乃至于如果前轮内外弯角度比较大,还可以直接侧方移位——不用前后倒车进车。然而,一方面是复杂的控制系统会造成非常高的成本。另一方面,人类没有昆虫那样的复眼去同时盯着路面、后镜、还有诸多仪表,更没有那么多手去操纵那么多控制件——比这个更直观的,是人类根本不会想要把自己的神经训练成这种怪物的信号处理系统。
人类能够大规模使用的,都是自己简单能够理解的东西——这个简单的标准随着这个东西能做到的事情而不同。如果只是要帮自己晃动孩子的摇篮,那么通常而言,只要控制开关就好。如果晃动摇篮的机械需要你指定晃动输出是基于正弦波还是基于锯齿波,你一定会觉得不可思议,然后摇头走开。而如果这个“东西”,能够帮助诊断很多重症病人,并且让你获得一份高的离谱的合约。我想你不会介意花三到五年时间学习整套系统的使用方法。当然,即使在这种情况下,简化的系统仍然是一件让人开心的事情。
计算机发展到后期,已经远远超出了最聪明的人所能理解的范畴。app store上有十万多个程序,即使每个花5分钟浏览一下也需要6天。如果要一一玩过,基本会花去一个人的一生。windows下的各种程序更是数都不要数。在这种情况下,如果我们还是持续的曝露各种底层细节给用户——你的数据要存放到哪个文件夹?你的文件类型是什么?无疑,用户不会跑开,但是肯定会很恼怒——为什么我需要知道文件路径?我写下一个名字,下次你帮我找出来,不就好了?
类似的问题正是ipod, mac, ipad, 加上现在的android试图解决的。app的安装删除并不需要用户理解细节,android上调节参数比较多,最多也不过是指名安装到sd卡上还是内存中。数据保存也基本无须关心——其实这点上做的还并不足够。整个系统,就像一个封装在琥珀里面的,神奇的魔盒。你说出你的愿望,他就帮你实现,一切都是那么美好——除了这个魔盒可以买到,而且必须经常充电。
将来?将来的系统可能会重现工业时代的老路,有经验的程序员会逐渐变成工人,而不是城市里孤独的游侠。华而不实的设计被淘汰,有效的设计成为生活中的常识。电脑将变得越来越贴近生活——前所未有的近。而我们的历史,也会进入新的一页。