创意选择 : 苹果黄金时代的产品思维

good

我会告诉你当一名苹果软件工程师是怎样的体验:在一家要求严苛的公司工作,我们必须承担其中的压力和喜悦;在与孤独为伴、殚精竭虑、不断敲打键盘并成功地让计算机增加了新功能后,我们这群开发者又会从内心迸发出欣喜和激动。 P3

其他公司可能也会设计外表美观的硬件、在市场营销上投入重金、聘请优秀的律师、大规模制造相关配件,但没有哪家公司像苹果一样,用卓越的技术和匠心把软件打造得如此直观,如此富有趣味。 P4

这一发展趋势不断强化,并随着iPhone的推出到达顶峰。 P5

在讨论这个话题之前,我总结了对苹果软件的成功有重要影响的7个要素。 P6

因此,我们的工作方法是在工作过程中潜移默化地影响彼此和传承下去。 P7

我们将7个要素排列组合,针对不同的情况提取其中的某几个“分子”为我们所用。 P8

”我立即回复:“好的。 P9

现在,新的任务——为这一划时代产品的后续升级产品提供软件支持——又落在我们iOS软件开发团队的身上。 P10

苹果公司无处不在的保密制度使我的开发任务更加复杂,“Purple”(紫色)是iPhone项目在研发时的内部代码,与Purple相关的所有细节均受到了必要的信息保护。 P11

正如我现在正在讲述的iPad软件演示案例一样,你会在本书里看到各种各样的示例程序演示的故事。 P12

在身体状况允许时,他会亲自做出关于产品的一切重要决定。 P13

尽管我的这位朋友对史蒂夫的脾气颇有怨言,但他仍然尊重和欣赏史蒂夫对产品的品位和商业判断。 P14

亨利将门开到刚好足够脑袋探出来的角度,即便到了这一刻,我还是没能理解这个戏剧化的姿势到底是什么意思。 P15

一个很偶然的机会,我亲眼见证了亨利在强压状态下仍能保持冷静和耐心的能力,这个小插曲将在后面与各位分享。 P16

我迈开步子穿过走廊,深深地呼吸。 P17

房间内的装潢有些破旧,根本不像高度重视设计品位的苹果公司使用的会议室。 P18

观察这间会议室花了我一两分钟的时间,但是史蒂夫仍没有显示出中断通话的迹象。 P19

这里的每一个人都通过不断提出有助于改进产品的反馈意见,成功地获得并坐稳了现在的位置。 P20

我认为,史蒂夫非常重视斯科特在将新技术集成于成熟软件产品方面的想象力,斯科特很擅长新技术和成熟软件产品的结合。 P21

我们在提到格雷格的团队时会使用简称HI团队,作为HI团队负责人,格雷格为我们应用程序和用户界面的设计拓展了广度和深度。 P22

当我们要解决在没有鼠标或方向键的情况下上下移动一个项目列表的问题时,巴斯创造了“惯性滚动”,即在用户滑动屏幕时,列表随之滚动,用户反复滑动屏幕,列表滚动速度加快,用户停止滑动后,列表会逐渐降低滚动速度直至停止。 P23

在我苦思冥想要怎么开展工作时,HI工作室成为我每天都要拜访的地方。 P24

当巴斯又开始用Director软件进行创作时,我站在他身后观察,在他的Mac计算机屏幕上,我看到了一个似乎很像拉长的iPhone键盘的东西。 P25

几年前,巴斯和我合作设计了iPhone键盘,我们受限于iPhone的小尺寸屏幕,一直在苦思冥想。 P26

这个方案看起来是很合理的,尤其是在我们已经有了足够的屏幕空间,可以使用更多按键的时候。 P27

我决定自己动手做一个示例程序来模拟这两种方案的效果。 P28

在开车去塔吉特百货商店的路上,我一直想象我需要的尺子到底是什么样子的。 P29

鉴于iOS中已经有了一个用于切换语言的“地球”样式的按键,我把这两种方案视为两种可切换的新“语言”。 P30

这主要归功于巴斯通过其自行设计的缩放动画活灵活现地展示了我们的构想。 P31

当观察这个zoom键操控的动画时,你会觉得这两种键盘在做非常复杂的变形,但事实上它们并没有。 P32

1英里≈1.6093千米。 P33

”他的语调预示着通话即将结束,我们几个人立刻回到现实。 P34

史蒂夫,这位是肯,他之前负责过iPhone键盘的项目,现在他有一些平板电脑键盘设计的示例程序要向你展示。 P35

没有任何反馈,也没有任何可以猜出他想法的线索。 P36

这是我的示例程序,他希望我来回答。 P37

就在这里,他认真地思考我关于下一个苹果重磅产品的想法。 P38

格雷格、亨利和巴斯从沙发上站起来,他们用“干得好”和“演示得不错”等简短的句子表达了鼓励。 P39

当我走出“密室”时,我对自己刚才的表现非常满意,我完全凭借自己的能力如实地回答了史蒂夫对示例程序的提问。 P40

密室中的决策和发布软件之间的关系,也说明了在苹果公司里示例程序对我们的重要性。 P41

巴斯有时会写点儿代码,他经常在不需要程序员的帮助的情况下,独立完成一个可以直接向史蒂夫演示的示例程序。 P42

斯科特在非常谨慎地拓宽史蒂夫身边的小圈子,在我看来,他把谁带入这个圈子也是史蒂夫评价他的重要标准。 P43

在评审现场,我们发现我们的想法与史蒂夫的设想不谋而合。 P44

史蒂夫认为,如果她拥有一部没有装载那么多不实用的功能的手机,她的工作会做得很好。 P45

史蒂夫标志性的决断力渗透在苹果的日常工作中。 P46

所有示例程序的存在使得整个软件团队始终聚焦在开发最优秀的产品上。 P47

示例程序是我们在苹果工作的重要工具和手段。 P48

Eazel的核心团队成员是曾在20世纪80年代参与初代苹果计算机开发的程序员,包括苹果计算机的首位软件经理巴德·特里布尔以及软件奇才安迪·赫茨菲尔德。 P49

不出意外的话,这些方式包括开发可以向用户收费的专业软件,比如一套原机云服务,它的功能包括为用户提供软件自动更新及在线文件储存等服务。 P50

在我进入公司几个月之后,这些问题变得越来越难以避免,为了让产品尽快成形,管理层开始向其他人求助。 P51

如果可行,这种方式可能会带来一些技术支持合约、咨询协议以及其他不直接绑定浏览器的赚钱的业务。 P52

使用驼峰式命名法时,程序员经常会将若干个单词集合成一个,一种具有代表性的不恰当的语言可能是这样编译的:cleanUpBobsSh_tStormHeIsAF__kingTurdBlossom();/由于担心源代码一旦公开,这些糟糕的语言就可能损害软件的形象,网景公司的管理层发布了一项命令:代码中所有的脏话都必须被清除。 P53

代码中包含了一句脏话。 P54

这家位于库比蒂诺的计算机公司为Eazel的前员工召开了专场招聘会,我记下了一些经理的电话号码准备跟进,永远比我更聪明的唐却有其他想法。 P55

你一定要严加防守,否则他连珠炮一般的问题会让你惊慌失措。 P56

几个月前,《连线》杂志在封面上刊登了一张著名图片:彩色的“苹果”标志被带刺的铁丝环绕起来,在其下方有一个醒目的标题——祈祷。 P57

简单地说,网络浏览器的确能够让用户在网上冲浪变得更加便利和简单。 P58

而我们的团队只有两人,我们怎么可能完成这项任务呢?唐让我不要担心,因为我们是站在巨人的肩膀上,不会像浏览器先驱网景公司那样从零开始。 P59

若每页纸打印30行,一共需要5万张纸才能容得下全部代码。 P60

唐和我面面相觑,他说自己要出去度假一个星期,这是他在来苹果前就计划好的。 P61

在进行市面上可见的浏览器评估时,我们同时也在招募其他人加入团队。 P62

早在十几岁时,他就创办了自己的软件公司,后来,在斯沃斯莫尔学院读了几年书后,他决定休学,并在史蒂夫·乔布斯创办的软件公司NeXT工作了一年。 P63

当两只手十指相扣放在胸前时,他接着摇晃手臂,但此时两只手臂是同步的,看起来就像发动机通过驱动轴向轮子传输动力一样。 P64

挂掉电话后,我仍然不确定是否应该吸纳这位成员,但是我没有强有力的反对理由,所以我点头同意,理查德正式成为我们团队中的第三名成员。 P65

我们给了理查德大概一个星期的时间,让他处理好电脑和办公室设备等后勤工作,接下来,我们会向他更深入地介绍这个项目。 P66

由于KDE是基于Linux内核开发的,无法在Mac OS X上运行,于是,理查德做了一个夹层,这是一个软件翻译夹层,其作用在于误导Konqueror,让它认为自己正在Linux操作系统中运行,接着再骗过Mac计算机,使其以为当前运行的浏览器是为自己量身定做的。 P67

正如理查德之前所告知的那样,仅仅需要一个夹层、两个快捷方式以及两天时间就能够做出一个可以使用的浏览器示例程序。 P68

这样的人真的存在吗?毕竟这种普通和卓越之间的巨大差距在日常生活中并不常见。 P69

这就是理查德加入苹果时,我们所处的情境。 P70

这种看起来不合逻辑的公司战略来源于理查德·斯托尔曼的思想,理查德·斯托尔曼是一位颇有声望的程序员和科技爱好者。 P71

斯托尔曼把自己比作站在自由软件糖果店柜台后面的人(见图2-1),在那里他保证没有金钱交易,但是软件源代码会不断地转手。 P72

斯托尔曼的GPL促进了Linux操作系统的开发和问世,如今Linux已成为在安卓智能手机,谷歌、亚马逊、推特及脸书的数据中心,以及众多主流网络服务商平台中运行的核心软件。 P73

这种解释未免显得太单薄。 P75

随后,他制作了快捷方式,这些简化了的选项定义了一套不需要达成的目标——完美的字体渲染功能被废除,这是为了与Mac计算机本身的图形处理系统相匹配,也是为了尽量少地使用KDE的源代码。 P76

理查德对这一切都很清楚。 P77

即使预算有限,一个外景地也可以改变一个场景。 P78

/ 图2-3 吉恩·凯利在雨中跳舞同样,尽管示例程序并不是产品本身,但它必须要有足够的说服力,让人们开始探索某种思路,向做成产品的方向迈进一步。 P79

理查德将这套理论付诸实践。 P80

比如,一个应用程序的用户界面仍处于开发早期,我可能会将另外一个应用程序的用户界面放在我的示例程序中,而不会花时间做一个完全可用的用户界面,因为此时用户界面是次要的。 P81

在同样的停顿期间,我们屏住呼吸……接着我们看到了同样的黑色长方形。 P83

唐特别明确地希望我们将Konqueror浏览器与KDE的其他软件隔离开来——必须抛弃理查德在示例程序里面所走的捷径。 P84

尽管Linux和Mac OS X都可以追溯到由贝尔实验室在1969年推出的Unix操作系统,但二者早已沿着各自的路径分道扬镳,渐行渐远。 P85

这个软件有非常整洁的结构,Konqueror基本上藏身于KHTML和KJS两个目录下。 P86

Konqueror的源代码更简洁,理查德已经利用Konqueror做出了很棒的示例程序,而且我对源代码行数的分析仅花了几个小时。 P87

不同之处在于,厨师们写的菜谱是供人们阅读的,而程序员不能用同样的方法给计算机写代码,因为计算机本身并不理解编程语言。 P88

但是菜谱作者可能不会在班尼迪克蛋的配方中把荷兰酱的制作方法介绍得很详细,尤其是当荷兰酱在菜谱中随处可见的时候,比如,可能在制作芦笋的部分就已经介绍过荷兰酱了。 P91

在编程过程中,这类错误比比皆是。 P92

网络浏览器这类复杂程序在运行过程中可能会发生无数种行为错误:文本在错误的位置上被渲染,图片由于图形错误被截掉一部分,一个按键或者链接对点击无响应。 P93

要做到这一点,我们需要将Konqueror浏览器相关功能的源代码文件复制到Mac计算机中,并用这些代码构建软件。 P94

当他在网景和Eazel工作时,他就是这个话题的专家,喜欢翻来覆去地讨论这些许可的优势、弊端以及不同许可的各项条款。 P95

为了解释清楚这个计划,我们需要再次用菜谱做比喻。 P96

关键是,只要我们能够利用Konqueror源代码构建软件,我们就有了开发网络浏览器的坚实基础,在此之后,我们将不断地调试、排除故障、测试、优化代码。 P97

接下来你会看到,我是如何度过这段日子的。 P98

我已经声明了“protocol”,请再试一次。 P99

每一个小时的单调重复都是在推进“移植”工程,我们对每一份文件的浏览都是学习和理解被我们采用的源代码的机会。 P100

在调试阶段刚开始时,这个报告包含了众多条目:渲染图像未实施、网页链接未实施、运行Java脚本未实施……后来,随着改进代码的行动的持续进行,我们将很多“未实施”的条目更新为“部分实施”,当一个区域里面的FIXME全部被修订后,我们将区域中的注释全部移除。 P101

他坚信自己很快就会消灭最后几个关键的FIXMEs。 P102

它加载出了跟以前一样的雅虎主页。 P103

我再次尝试加载页面,又一次出现了黑色的石碑!这是真的!这个成就可能看似平凡,但我们非常激动。 P104

在那一星期结束以前,我们已经将黑色长方形变成了可以显示雅虎主页全部信息的页面。 P105

就如同当年的电灯一样,我想我们可以通过更详细地了解爱迪生于19世纪发明电灯泡的过程,来使读者了解我们在21世纪为浏览器开发所付出的努力。 P106

他了解到竹子的种类共有1200多种,所以他必须逐一尝试。 P107

所有因素都很重要,不过我认为爱迪生如此巨大的成功要归于他对细节的观察。 P108

理查德的示例程序就是我们的灵感。 P109

我怀疑爱迪生认为他提出了一个物理定律或者期望1∶99的比例是一个通用常数。 P110

”他和他的团队愿意挥洒汗水,但他很清楚在所有的这些时间里面他们需要经历什么:反复试验。 P111

爱迪生并不是在沙漠里漫无目的地跋涉,希望翻过下一个沙丘就能找到一片绿洲——这听起来好像是唐和我在最初的6个星期做的事情。 P112

史蒂夫向大家宣布,Safari加载网页的速度比IE浏览器快了不只一点儿,而是整整三倍。 P113

在苹果,我们总是试着提供开箱即用的最好的产品,除了速度这个方面,我们还需要为浏览器提供一整套功能,其中,出色的书签管理、精简的用户界面这两项在开发清单上占据了最重要的位置。 P114

一旦苹果将新浏览器作为Mac计算机的默认浏览器,我们绝不希望用户来质疑公司的决定。 P115

修正无法正确显示网址的错误已经占据了我们大量的时间,但由于史蒂夫对浏览器响应速度的要求,我们不得不同时研究如何使浏览器更快速地工作。 P116

在他的构想里,这个程序应该可以自动开启浏览器,让它以极快的速度一个接一个地加载一系列网页。 P117

PLT在自动加载了列表上的全部URL链接后,会自动计算加载一个网页的平均时间。 P118

唐认为,如果我们关注PLT给出的结果,不接受使浏览器运行速度变慢的代码修改,那么只会出现两种结果。 P119

要保证速度必须放弃软件的部分优化,“优化”这个术语值得我解释一番。 P120

高德纳进行了一丝不苟的研究,认真地撰写论文,并发表《组合算法与布尔函数概论》《位技巧和技术;二元决策图》《生成所有树——组合生成的历史》等专著。 P121

我们来看一下这个例子。 P122

这与优化有什么关系?下面这些是完成其他厨房任务所需要的指令:●把冰箱里的所有东西都取出来。 P123

这个情景告诉我们为什么像高德纳这样经验丰富的程序员会发出对优化的警告。 P124

但是,当前端功能的实现要耗费比预期更久的时间,而时间表不可能因此更改时,项目管理层可能不得不将优化工作全部省略。 P125

在我们加入“返回上一页”功能时,我们发现,如果不禁止所有页面加载,我们就无法实现快速“返回上一页”。 P126

我们认为Konqueror这个名字很讨巧,但是它不能作为面向消费者的名字出现在苹果产品的身上。 P127

几乎在同一时间,我得知我们的开发者工具包被命名为WebKit,这是在数月以前我、唐和理查德的第一次移植策略会议中,我随手写在白板上的名字。 P128

随着日复一日的练习,他按照他想在主题演讲中展示的方式逐步完善这个演讲。 P129

发布会在2003年1月7日举行。 P130

我们的喜悦无以言表,我们希望自己已经说服了那些在零售店刚开店时完全不看好它们的评论者。 P131

/ 图4-2 演讲中的史蒂夫史蒂夫展示完Safari图标后,点击了下一张幻灯片,上面只有一个单词:Why(为什么)?史蒂夫认为十分有必要向大家解释,苹果为什么要推出自己的浏览器,他把“速度”作为解释的重中之重。 P132

我们在以前的公司Eazel从未有过类似的经历,有时我甚至怀疑Safari的成功只是一次侥幸。 P134

作为新任教练,隆巴迪一到训练场就给巴特·斯塔尔留下了不可磨灭的印象,当时,斯塔尔是一位正在努力奋斗的替补四分卫。 P135

关于战术,隆巴迪告诉他的队员们:“先生们,这是我们最重要的战术,这是我们必须完成的战术,这是我们将要完成的战术,这是一个我们一再反复实施的战术。 P136

你可能想不到,仅仅一个进攻战术就有如此多的内容需要讲解,《橄榄球的科学与艺术》这部电影本身可能也经过了长时间的剪辑。 P137

在接下来的7年中,绿湾包装工队获得了5次冠军,包括前两届“超级碗”(美国职业橄榄球大联盟年度冠军赛)。 P138

你需要想出解决问题的办法,提出实现构想的计划,然后高标准地完成计划,不陷入困境,也不改变努力方向或彻底失败。 P139

隆巴迪通过专注于一个简单的战术,将他的语言和团队在橄榄球赛中的行动联系在一起;而在苹果,我们通过对不让浏览器速度变慢这个简单规则的坚守,将语言和软件开发中的行动联系在一起。 P140

在发布Safari后不久,我就陷入了自己经历过的最大难题,而刚好我又在那时遭遇了几乎断送我苹果生涯的重大挫折。 P141

斯科特·福斯特尔对此非常满意,他提拔唐担任一个新技术团队的负责人,这个团队负责Safari、邮箱程序以及我们的即时通信软件iChat等产品。 P142

那时,斯科特听说我对Safari经理岗位人选的决定感到很失望,他找到我,我们面谈了几个小时,他很明确地表示不希望我离开。 P143

诸如Hotmail等基于浏览器的电子邮件服务变得越来越受欢迎,Mac用户越来越频繁地使用以网页为主体的电子邮件作为信息传递的媒介。 P144

斯科特问我觉得这个创意是否有趣。 P145

如果苹果要发布这项功能,那么必须有人“签字”(signing up),带头负责并成功完成这项工作。 P146

所以,我“签字”了。 P147

一封网页邮件的回复可能以“2003年1月31日,某人写道”开始,以人们完全读不懂的乱码结束。 P148

)我要添加很多编辑功能,包括输入、删除文本,为撤销操作提供支持,还要测试所有增加的编辑功能会不会使网页加载速度变慢。 P149

一旦光标移到本行的最后,即换行的地方,即使输入再多的空格也不会使文字或光标移动。 P150

我需要掌握所有规则的每一个字母和其含义,不论是简单规则还是复杂规则。 P151

下面我将使用类比的方式降低理解难度。 P152

文字处理软件好像生日蛋糕订单。 P153

HTML中的“标记”(markup)指的是数据与元数据(数据信息)交叉存取的方式。 P154

我无法找到在数据和正确显示效果之间来回切换的正确途径。 P155

尽管他已经不是我的直接上级了,但每当我遇到难题时,我还是会向他咨询。 P157

我尽全力地向两位同事介绍我遇到的光标难题,整个白板写满了图示。 P158

达林和特雷认为,没有这种命令,我就像一个慌乱的蛋糕店的店员,拿着一叠便利贴,在凌乱的黄色小贴纸上胡乱记录生日蛋糕订单,希望自己能参考这些信息,制作完美的蛋糕。 P159

会议结束后,我完全按照他们的建议进行修改。 P160

会议结束后,我立刻按照达林和特雷给我的建议行动起来。 P161

虽然让光标表现得更加完美的技术工作仍然是我的责任,但他们也可以共享自己的建议所带来的转变。 P162

作为自称“极客”的程序员,我有着典型极客程序员的沟通能力。 P163

他说这实在太突然了,需要把更多的信息传达给斯科特,以便他们做出决定。 P164

在结束HTML编辑工作后,我重新找到斯科特·福斯特尔,讨论下一个任务。 P165

突然间,我的编程能力变得不再重要了,我也不知道怎样才能做好一名管理者。 P166

这个看法远比你想的更重要。 P167

在7月4日那个周末,我接手同步服务团队仅三个月的时间,我们做出了决定。 P168

我已经为同步服务团队“签字”,“撕毁协议”绝对行不通。 P169

而且请注意,同步服务只在苹果计算机之间更新数据,你的苹果计算机和你的iPod之间是不会同步音乐的。 P170

我们与HI(人机界面)团队仅一门之隔。 P171

“多点触控”实验已经在苹果内部进行了一段时间,但我在加入团队前,一直都不知道它。 P172

尽管这些令人印象深刻,但巴斯展示的软件并不能作为长期开发的坚实基础,因为我们并没有可以将Director示例程序变成可交付产品的工程路径。 P173

作为一个可与当前炙手可热的iPod相抗衡的全新硬件产品,它在未来可能会瓜分iPod的销售额,到底由谁来主宰这个下一代重量级产品的开发过程,在苹果内部曾引起一场激烈的竞争。 P174

我的第一个实质性进展就是做出了在手机版本的Safari浏览器地址栏中编辑网络地址的示例程序,我迫不及待地向大家展示这一成果。 P175

继这些早期版本之后,我们继续开发联系人和日历等应用程序的字体编辑原型。 P176

我仍然记着斯科特·福斯特尔坐在办公椅上,身体前倾,手握沙袋鼠屏幕尝试使用键盘示例程序的场景。 P177

亨利说斯科特已经按下了整个项目的暂停按钮,他希望所有人全力以赴立即开始键盘开发的工作。 P178

Purple手机不会配备键盘硬件。 P179

我不知道其他Purple成员是如何在脑中构想的,但他们的想法也来得很快。 P180

”我用自己胖胖的手指操作了一下,确定理查德所言不假。 P181

点击一个按键就在上方出现一个字符。 P182

相比之下,理查德式的Purple键盘原型,每一个按键上都有若干个字符,那么用户在打字时就要考虑每一个字符。 P183

我已经吸取了一些教训:(1)大按键更容易敲击。 P184

我还需要一个能利用词库判断最佳适用单词的软件。 P186

我决定提交一个功能正常的不兼容示例程序,而不是一个兼容但不好用的示例程序。 P187

斯科特在会议室中长木桌旁就座,桌子上摆放着一个连接至Mac计算机的沙袋鼠原型机。 P188

斯科特转头看向我。 P189

斯科特再次转向我说道:“太神奇了!”此时会场寂静无声,接着,斯科特的问题像雨点一样落在我身上。 P190

他们认同我的作品,但显然他们并没有像斯科特那样震惊。 P191

我们彼此分享好想法,非常努力地工作。 P192

让这只小狗的形象的细节尽可能丰富。 P193

我可能会反击,指出寻回犬的爪子藏在浅草中实在是太可爱了。 P194

对某个示例程序的直接反馈可以为下一次改进提供动力。 P195

在记忆中,在我整个苹果工作生涯里,站在白板旁边勾勒重要计划的草图的情况只发生了几次。 P196

Purple大厅中的这种正向合作循环协助我创作出一个有潜力的键盘示例,这个示例是公司愿意继续支持的。 P197

我回头看向白板,计上心来。 P198

在键盘德比大战中脱颖而出的方案足够好用吗?我有能力改进它吗?我能够开发一个永远能给出正确单词的词库吗?人们会喜欢它或者至少坚持一段时间之后再判断是否喜欢它吗?寻找答案变成了在技术、品位和同理心之间做平衡的行动,之所以要有同理心,是因为用户需要的是高效、直观且让人喜爱的触摸屏文本输入技术。 P199

Newton的触控笔本可以加上鼠标和iPod的点击式触摸转盘,使之成为具有里程碑意义的计算机输入方法,但是它没有。 P200

斯科特没有向我透露他与菲尔之间的层级关系或者他为什么要安排这场示例演示。 P201

我没有看到他写了什么。 P203

接着,他开始试用我的软件,但他甚至没有打出一两个字。 P204

我时常盯着它看,这就是我的键盘拥有的全部屏幕空间,这就是我的触摸屏输入画布。 P205

由于理查德·威廉姆森的办公室就在我旁边,我经常把脑袋伸到他办公室的门口,把他叫到我的办公室,邀请他拿起沙袋鼠试用我的最新成果。 P206

如果你有一个名叫Teemu的朋友怎么办?因为我从未在词库中加入芬兰男性的常用名,所以输入这个名字就是一个不可能的任务(见图7-5)。 P207

它不能做任何推断或者听声识字,它只能在内置词库中包含该单词的准确条目的情况下提示该单词。 P208

因为人们只能用我的键盘输入“Arrr”,不得不放弃他们想要输入的“Argh”。 P209

这毫无用处,但是slimy的确是这5个按键组合的最佳推荐词。 P210

业界对在开发过程中每天进行产品试用和产品自我评估的行为有一个通用的科技术语:吃狗粮(dogfooding,意为内部测试)。 P212

斯科特正拿着沙袋鼠做着我们日常的内部试用工作,我们当时并没有专门讨论键盘的事情,但斯科特在输入一个中等长度的单词national时迷失了。 P213

在阐述完以上问题后,我又回顾了“胜利之作”的4个基本原则:(1)按键要大,每个按键上有若干个字母。 P214

格雷格·克里斯蒂打破了僵局。 P215

他认为设计方案拖累了整个进度,这是根本问题。 P216

从自动纠错的角度来看,按键实际上变得更大了,而从用户的角度来看,字母其实变小了。 P217

这是我在键盘开发过程中的另一个里程碑,它解决了一直困扰我的难题。 P218

现在你可以输入每个人的名字了,可以像海盗一样打字了,不会在输入单词的过程中迷失了。 P220

空格键是很重要的触发器。 P221

这就是“一按键一字符”的全部设想。 P222

他从桌上拿起沙袋鼠,确认妨碍打字速度的因素是否已经被消除。 P223

在沙袋鼠连接的Mac计算机上有一个日志文件,日志显示理查德键入的字母按键非常不准确,就像一个酒鬼做的酒驾测试一样混乱:Tge quixk brpwm foz jimprd ivrr rhe kazy……不过没关系。 P224

我们真的不敢相信。 P225

理查德的反应、愉悦的笑声、我们在发现新大陆那个时刻的傻笑、即时自动纠错系统的进步,可能是我们朝着正确方向迈出的一大步。 P226

但这次尼汀的到访则有些不同。 P227

Purple键盘是软件,所以我们不会受到任何机械特性的限制,也不会受到形状或触觉因素的制约。 P228

如果我的一个同事质疑在Purple键盘上使用QWERTY布局的品位,那么引用这个伟大哲学家的话——对于品位的判断本身并不假定所有人都同意(只能通过逻辑上的普遍判断来实现,因为它可以举出理由);它只是把这一协定归于每一个人,作为它所期望的规则的一个例子,不是概念上的确认,而是其他人的同意——可没多少用处。 P229

我将按照顺序,用“同理心”的角度来观察每一个重点,用QWERTY键盘作为主要案例进行解读。 P230

我可以借鉴康德的思想,但前提是我足够了解他,理解他言语之间的含义以及他的言论对我的意义。 P231

我们两个人都开怀大笑,这说明产品是成功的。 P232

另一方面,一旦这些独立的决定被嵌入大型系统,它们便不再独立——小决定必须服从更大的计划。 P233

产品设计要有深度,要让美根植于产品的功能,而不仅仅浮于表面。 P234

这样一来,整个设计循环将会把个人想法从品位当中剥离。 P235

我最喜欢的事情之一就是看着飞机落地滑行到停机位,结束一段飞行旅程。 P236

“收敛”是用来特指苹果产品开发最后阶段的术语,在所有功能被确定下来后,程序员们和设计团队会花三四个月的时间来修正错误、调试系统性能并打磨产品细节。 P237

我设置好自己的示例程序,将沙袋鼠连接至Mac计算机,放置在亨利旁边靠墙的桌子上。 P238

我的键盘搞砸了。 P239

软件需要知道哪些单词是更常用的,比如,人们更可能输入good而不是goof。 P240

我的自动纠错软件必须善于在二者之间做选择:根据你输入的结果转换成你最有可能想要的单词——你想要的;或者保留你真正敲击的字母,然后让你在弹出的文本框中进行选择——你输入的。 P241

为了修正这个错误,我必须为egg之类的日常用词匹配正确的使用频率分值,并且我还要仔细调整拼写相似的单词的使用频率分值,尤其是在QWERTY键盘上字母彼此接近的单词,比如tune和time。 P242

/ 图8-2 观看球赛时和朋友的调侃构建自动纠错词库是一个在理论上很容易理解的任务,但实际情况却远比想象中难很多。 P243

即便到了确定一按键一字母的QWERTY键盘布局时,我们的自动纠错代码仍然十分简单,它的工作原理与自行车密码锁类似。 P244

●将使用频率分值最高的单词作为建议词显示出来。 P245

但如果你输入的是vild(卑鄙的),那么系统很难判断你想要输入的单词到底是cold、bold(大胆的)还是vile。 P246

我并不是一个受过正规训练的工程师——实际上,我在大学从来没有上过一堂数学课。 P247

这正是连接用户和软件的反馈方式。 P248

接着我又尝试了一个基于全部单词的整体评分路径。 P249

为了测试这个方案是否可行,我必须找到对比这些键盘图形的方法。 P250

移动量越大,斜率越大,匹配度越低。 P251

图像倾斜算法会输出与打字者输入路径最接近的词库图像的清单,每个词库图像都代表一个单词,这个算法会给出它认为的打字者希望输入的单词。 P252

●标记通过旋转滚轮找到的所有在词库中出现的单词。 P253

所有人都开始对即时自动纠错系统持乐观态度。 P254

我对手机硬件的开发、工业设计流程的细节和其中的过程几乎一无所知。 P255

如果不是很疲惫,这种压力还是可以承受的,至少大多数时候是这样的。 P256

会议是金召集的,这一次的会议可不是让我们把手上的工作停下来全力以赴地进行另一场解决难题的技术比赛。 P257

当金把原型机递给我时,她嘱咐我小心一点儿。 P258

苹果将在2007年1月初举行的Macworld大会上公开Purple,并在接下来的6月正式交付第一批手机。 P259

雷达的主要任务是报告软件缺陷并追踪修正情况,但雷达条目在开发中也可以扮演其他角色:工程师的任务清单、设计师的扩展请求、项目经理的附加了多个次级功能的最高级别功能、一个高管的高优先级事务。 P260

我们学会了理解收敛行为,比如在大型示例程序完成后,曲线会向上飙升,但不用担心,很多示例程序故障会很快被修复;如果在连续几天内曲线很平缓,那么我们可能遇到大问题了,因为排除故障的速度跟不上故障出现的速度,这意味着收敛进度停滞。 P261

我们把目光转向道格拉斯·鲍曼,他曾在推特(Twitter)和《连线》杂志担任设计师。 P263

在谷歌“选择一种蓝色”的实验里,最终的结果就是在41种蓝色中选择一种。 P264

从某种意义上来说,收敛阶段贯穿整个项目开发周期,即便我们自己可能没有意识到这一点。 P265

我们无法想象一切品种都是突然产生的,而它们一旦产生就像今日我们所看到的那样完善和有用;的确,在许多情况下,我们知道它们的历史并不是这样的。 P266

然后,我们继续努力,做好下一个示例程序。 P267

我们不会因为受到其他因素的影响和干涉而失衡,在很多公司,一个高级主管可能会在没有相关权限的前提下试图模仿史蒂夫·乔布斯的角色下命令,而我们没有这种困扰。 P268

而我们成功地避开了以上所有陷阱。 P269

我们总是从很小的问题出发,带着一点点灵感,开始做初步的示例程序,通过不断反馈而将其完善。 P270

在这个世界上每隔一段时间就会诞生一款改变一切的革命性产品。 P271

试试看是不是这样吧。 P272

在开发产品的过程中,保持广阔的视角是非常困难的,因为你要针对每一个独立的示例程序进行反馈收集和回复,然后在此基础上增加新功能,日积月累,循环往复。 P273

用户不需要走向产品,产品应该自己走向用户。 P274

接下来的三个简短的小故事向大家展示了我们是如何在iPhone开发过程中做到融合的。 P275

我的双手离开Mac计算机的键盘,拿起沙袋鼠,点击上面的图标,在滚动列表中选定行,在不同的应用程序中来回切换。 P276

我们不知道具体的尺寸应该是怎样的,沙袋鼠在最初的几次示例演示会议上的表现给了我们一些关于一般人群的人体工程学方面的数据作为参考。 P277

他编写了一个程序并在Purple团队中分发。 P278

赫兹的游戏给了我们答案。 P279

[电子书分 享微 信getvip365]举一个例子。 P280

对于其他人来说,正确的反应是:不要!20世纪80年代,苹果用Mac改变了上述状况。 P281

他们希望多点触控可以终结对鼠标的需求。 P282

从启动Purple工作开始,伊姆兰就对多点触控用户界面应该怎样表现有清晰的认识。 P283

他认为iPhone屏幕上的像素图像应该保持被钉在手指上的状态,就好像它们是真实的物品一样。 P284

对感觉的执着是有其目的性的。 P285

选择你最喜欢的,然后开始吧。 P286

我可以很容易地将其分组记忆,因为我是美国人,而且我有印刷方面的知识。 P287

(2)写出前7个素数。 P288

此后,自动纠错只会在文字栏显示的插入符处的字母下方给出首选词这个建议栏是“胜利之作”的一个设计,如今斯科特决定抛弃它。 P289

斯科特认为建议栏不但没起到辅助作用,反而分散了人们的注意力,所以他要求我把它彻底去掉。 P290

而在iOS8系统中,快速输入程序又将建议栏重新引入更多语言(包括英语)键盘中。 P291

由于我们指尖固有的弧度,首先接触屏幕的手指实际接触点比我们认为的接触点更低(见图9-3)。 P292

这个在隧道里滑动解锁的用户界面十分直观,当伊姆兰第一次把iPhone拿给女儿时,她只有3岁,她看了看屏幕,在除了系统界面以外没有任何提示的情况下,她滑动了控制键,解锁了手机,完全没有障碍(见图9-5)。 P293

但不管怎样,我认为用户只要点击了键盘,目的就是打字,所以我一定要给出反馈结果。 P294

我很好奇,为什么在律师的描述下,iPhone无法传达任何我们产品开发团队花费大量心血努力想表达的美好感受。 P295

启发和算法就像同一枚硬币的正反两面,二者都是软件完成自身任务的具体步骤——接受输入、进行操作、输出结果,但有截然不同的目的。 P296

对整个系统启发性的开发,我们也遵循相同的步骤。 P297

只有把算法和启发结合在一起,才能制造出优秀的高科技产品。 P298

比如,我们有时候用启发来调和算法。 P299

举个例子,要在相片应用里向左侧滑动看下一张照片,首先用你手指的移动来决定是进入下一张照片还是保持在当前照片上(启发介入),手指的移动会启动动画代码,将当前照片移出,将下一张照片移动至显示屏上(算法介入),根据你滑动屏幕的速度来决定下一张照片进入显示屏的速度(另一个算法介入),然后在精心设计的动画中,使照片缓慢停止(启发介入)。 P300

这是一条漫长的道路。 P301

当史蒂夫向公众进行第一次公开介绍iPhone里的键盘的那一刻,我的自豪感和希望被害怕和恐惧取代。 P302

因为它连实体键盘都没有,所以它不会是一台好的邮件机器。 P303

这就是我们从想法出发最终完成可以交付的软件产品的过程。 P304

(6)品位:培养敏锐的判断力,寻找能使整体达到和谐愉悦的平衡点,正如我们最终做出了给iPhone配备QWERTY键盘的决定。 P305

同理心启发了滑动以解锁的设计,这种设计哪怕对于儿童来说也是很直观的。 P306

我的经验是,这种形成共同文化的工作方式在团队规模较小时最有效,因为此时人与人之间的互动非常自然和频繁。 P307

我们并非个例。 P308

我的扩展解释也可以作为从产品开发者视角来看产品的陈词,我们视之为一个实际问题。 P309

”2007年6月29日是一个特殊的日子,我决定在这一天旷工。 P310

因此史蒂夫决定在正式开售前几个月就向公众发布iPhone。 P311

比尔说自己实在太想要一部iPhone了,几乎无法忍受这么久的等待,所以他做了任何不走寻常路的天才都会做的一件事。 P312

”不管怎么说,能看到Mac计算机的开发者、我崇拜的英雄比尔·阿特金森亲自排队买他的第一部iPhone,我十分激动。 P313

这很罕见,但正如我所说的,2007年6月29日是不同寻常的一天。 P314

我们在2010年交付了iPad之后,史蒂夫和斯科特很想知道更大尺寸的iPad屏幕是否允许多个手指一起在显示屏上点击,使用全手手势来控制使用多个应用程序的体验。 P315

我们已经在iOS 4上取得了运行多应用程序的进展,斯科特希望在iPad上以一种友好的方式推荐给用户。 P316

我知道当斯科特结束他的介绍后,我将立刻开始简短的介绍。 P317

接着我将右手手掌贴近屏幕,强调了一下伸开的手指。 P318

在任意某个时刻,屏幕上只会显示两个应用程序的一部分——你正在使用的程序和你即将滑向的程序。 P319

亨利摇了摇头,对我说:“此时此刻,我想我们应该自己决定多任务手势的最终版本了。 P321

在本书中,我花了很多时间叙述我在苹果的职业生涯中得到的经验。 P322

我很高兴看到这段代码,这是我最后一次为它工作了。 P323

这本书得以问世是因为他选择相信一个初出茅庐的作家。 P324

标签

good