《创意选择》买回来后很长时间了,一直堆在书架上,第一次翻了几页没兴趣继续往下读;这次国庆节在家,随便翻了翻,直接翻进去了,两天读完后直呼过瘾,以至于一直怀疑为什么第一次会读不进去。
作者科钦达是 iPhone 首席软件工程师,在书中讲述了作者在 Mac 工作 15 年从事的Safari和 webkit 研发、iPhone 和 iPad 键盘输入程序等项目的工程研发过程。
读完后不过瘾,又跑去豆瓣看书评,看大家看完后都有什么感想,大部分都关注乔老爷子和书中提到的苹果研发流程等。但是该书对我而言,更共鸣的是作者书中解决工程琐碎,在理想和目标的指引下,内外寻求帮助最终走出泥潭的过程。
Konqueror、10X程序员以及灵感和努力
例如移植 Konqueror 的过程,为了开发 Safari,在理查德的建议下,开始移植12 万行代码的Konqueror到 Mac,话费了 2 个月解决移植过程中的编译和链接错误,最终来到黑色石碑时刻。如果你做过软件移植,你会对该段描述感同身受。
但是一开始团队是准备移植Mozilla,因为团队中有从 Mozilla 出来的成员唐,但是Mozilla 源代码有150 万行, 移植过程充满荆棘,坎坷不堪,进度缓慢,而在理查德两天的调研后, Konqueror开始进入大家的视野,Konqueror 总共 12 万行代码,而Mozilla之所以臃肿不堪是因为 Mozilla 希望讲软件变为像乐高一样随意组装的构件,而这直接导致 Mozilla 臃肿,笨拙且使用起来特别麻烦。
这也是软件工程不断迭代过程中的常见问题,在日积月累的维护中因为理念上的追求导致代码越来越膨胀,导致难以维护和使用成本急剧上升。但是究竟该如何取舍始终是一个哲学命题,它需要有对业务、项目、技术的前瞻性思考和付出超常的努力才能得以实现。
理查德在证明Konqueror的潜力时,仅仅花费了两天就做了一个在 Mac 上可运行基本功能的演示程序,实际上应该是将整个 KDE 运行在 Mac 下的 X Windows 接口中。作者因此提到 10x 程序员的素质:具备天才般的灵感萌发,直觉判断,推理和预测,并在此引导下,针对问题选择合适的实现路径并完成技术细节,在可控的时间工期内完成预期目标的超常能力。
而事实上每一个类似的故事,读者们都会被理查德等天才演示Konqueror的潜力的情节所吸引,因为它充满戏剧性,但是在该章节的最后作者讨论起爱迪生的名言:发明创造= 1%的灵感 + 99%的汗水。为什么灵感和汗水的比例是 1:99,这个比例是怎么得来的,是否准确表达了灵感和汗水之间的关系。
作者这充满了工程师色彩的讨论并不是无的放矢,而是由此讨论灵感和努力的相互成就以及各自的不可或缺,坚持努力是一件苦难的事情,没有勤奋,灵感也无法结出硕果。
这也让我想起几年前的互联网喧嚣尘上的“选择大于努力”的讨论,一群在时代风口上老板们渲染自己如同神谕般的选择是如何带给团队伟大的助力。
如同人们乐于讨论关于灵感的故事而认为努力只是灵感迸发后的点缀一样,因为灵感天然带着不可预知的特性让它带有神性的光环,因此也契合老板们天降伟人的自我感觉。但是这种思潮里潜藏的轻浮如同夏日的腐烂的老鼠一样带着难以掩盖的尸臭让人作呕。
因此Safari 实际是从Konqueror项目移植改造而来,因此可以说从自由软件受益颇多,也因此这一章节是从介绍理查德斯托尔曼为引子开启的,读完回顾才意识到这一点,也算作者对理查德斯托尔曼的致敬。
速度底线
如果你想开发一个加载速度比IE 更快的替代浏览器,你应该做什么?
苹果 Safari 开发团队引入了PLT(Page Load Test),在每一次代码提交时都需要跑 PLT,每次提交的新代码都只允许让页面加载更快,否则需要重新审视提交的新代码,通过这种方式最终 Safari 在 Mac 上比 IE 快 3 倍。
这里首先值得讨论的是关于管理,当我们有一个核心目标时(早在 Safari项目启动之初,乔老爷子就确定了速度作为 Safari 的核心卖点),我们应该如何管控过程以确保核心目标最终得以实现。
确定一个清晰的愿景是困难的,而任何一种清晰愿景的实现都需要将愿景、目标、计划、过程连接在一起。就像乔老爷子确定了Safari 的速度要足够快的目标,唐确定了实现这个目标的规则:永远不做让浏览器变慢的改动,而 PLT 则是监督和落地该规则的具体措施,PLT 嵌入在日常的开发流程中,确保速度更快的目的最终得以实现。
而愿景落地的过程也是语言变为行动的过程,我们如何日常表达的语言融入我们的行为,将字面上的文字变为现实。当我们有一个目标,如何确保我们走在正确的路上。需要我们琢磨实际的可操作的路径。
键盘德比大战
键盘德比大战是《创意选择》中非常典型的故事,该书充满着类似结构的吸引人的类似故事:
遇到问题 -> 前期的痛苦探索 -> 独特的灵感 -> 黑色石碑时刻 -> 不打折扣的努力 -> 问题收敛 -> 伟大的产出
问题:Purple 项目(iPhone)的键盘输入成为最大的卡点
前期探索:项目组所有人停下手头的工作来处理该问题,作者也做了第一个版本的椭圆形按钮键盘,很明显输入效率太低
独特灵感:使用词库进行输入匹配进行自动纠正
黑色石碑时刻:键盘德比大战胜利之作,斯科特试用后决定让作者成为键盘项目的负责人
不打折扣的努力:尽管词库匹配的方向是伟大的灵感,但是成为一款真正实用的键盘输入软件还有诸多问题:
- 无法输入Teemu 以及 Arrr 类似的非常用名称和生僻词
- 打字过程中会“迷失”
即使在迭代到一按键一字母方案后,已经非常接近最终的标准键盘;实际上还有很多的优化措施需要实施
问题收敛:词库的优化和改进,逐个校验词库里面的词和词的频率分值;加入图像倾斜算法
伟大的产出:iPhone 的推出,非常流畅的输入体验
设计关乎产品如何运作
品味是运用精确的判断力,寻找能使和谐愉悦的整体得以形成的平衡点。
同理心是尝试从其他人的视角观察世界,创造适应他们的生活满足他们的需求的优秀产品。
从来不花两个小时喝咖啡或者在没有具体示例程序的情况下召开非现场会议讨论问题。
明确的目标让团队保持在正确的轨道上,就像达尔文的人工选择一样,创意选择是被在不断发生变化的决定过程中创造出的选择压力驱动,促使团队通过示例程序反复迭代推动发展进程。因此对哪些想法值得投入探索做出正确判断是创意选择得以开展的前提。
因此 A/B 测试在设计过程中将品味抛弃了,你可以从 41 种蓝色中找到点击率最好的一种蓝色,但是团队将没有时间和精力去思考人们可能喜欢的第二种、第三种、甚至第十种设计方案。A/B 测试并不能帮助团队创造和谐愉悦的整体产品。
然而A/B 测试是凡人的脚踏车,良好的品味是神仙的法宝。并不是所有团队和个人都能有属于神仙的法宝,凡人能用好脚踏车就不错了。
百感交集
作者在最后给想从事产品开发工作或者在其他领域有做大事计划读者的建议是:忙起来。想清楚做一件伟大的工作意味着什么,然后努力实现它。成功从来都不是确定的,努力的过程也绝不容易,但如果你喜欢正在做的事情,那么它就不再困难。
作为一个工程师,良好的品味以及伟大的判断力可能不是一开始阅读时候的关注点,印象深刻的而是10x 程序员以及之后移植过程中的工程问题、为键盘加入词库的天才般的想法以及之后的图像倾斜算法匹配的创意描述。
正确的目标,良好的品味,伟大的判断力当然是创意发动的起点,然而这个过程充满了不可预知和无法言明的迷雾,如同所有人都知道选择是如何重要,但是没有人能告诉站在十字路口的你,哪个方向才是你未来的道路。
而工程师揭示的是不管你选择的是哪条道路,如何趟过阴冷潮湿的沼泽,如何在冰冷的环境中寻找道路,如何保持体力跨越险要的雪山。而所有希望有所成就的人都需要做的是保持信念,相信那一天终会到来,并在此之前不打折扣地努力;在那一天来临时,热泪盈眶地说,我们配的上这一切。