图灵访谈之十一:专访钟冠贤

人物介绍:Carlo Chung 钟冠贤

目前在苹果公司担任iOS Lead Developer,在将创意转为软件实施、软件架构设计、在iPhone上实现人工智能/机械视觉,以及快速原型/概念证明方面有丰富经验,是iOS平台软件开发和自动化测试方面的专家。

他开发的iPhone软件曾被Apple选中出现在App Store首页精选位置。其中一个还曾一度进入App Store摄影类付费软件榜。

著有《Objective-C编程之道:iOS设计模式解析》一书。

钟冠贤先生曾先后在香港、内地及美国从事软件开发工作,本月图灵社区有幸邀得钟先生,畅谈他在iOS开发方面的经历和心得,以下为访谈内容:

图灵社区:您在研究生阶段的专业方向是计算机视觉Computer Vision(人工智能的一个分支),当时是怎样选择这个方向的呢?

钟冠贤: 当时还未是我的主导师的教授问我,对哪个方向比较有兴趣。我回答说,我对操作系统、算法、网络、生物资讯和游戏开发(当时我的大学有相关的专修科目)有关的方向都没有兴趣。那剩下来就只有人工智能,反正 “人工智能” 这个名字听起挺酷的。但他说人工智能范围很大,又问我是哪个专修方向。我当时完全没有概念,所以反问他的专题研究项目是什么。他说他的专长是制作机器人,能走能说话的那种,并且建议我先修读他将主讲的高级人工智能科,然后再慢慢决定专修哪个项目。到学期末的时候,我做了一个与人脸侦测有关的项目,这样便进入了人工智能的大门槛。

图灵社区:我们听说您对AI跟实用工具的结合很感兴趣,在没有App Store之前,自己做过哪些有趣的玩意儿呢?

钟冠贤:记得数年前制作过一个“玩意”,参考自战斗机舱内飞行员向前看的那个(平视显示器Head Up Display,简称HUD)。而我制作的那个HUD是放在汽车内的仪表上,驾驶者可以不用分散注意力,只要直望挡风屏便可以看到驾车时的重要信息,例如车速、交通和GPS提示等。当时还构思过,可以连接手机把短信投影在那个HUD的镜上。

**图灵社区:**iPhone和App Store的兴起,应该是为您的这个兴趣提供了更加广阔的天地,可否谈谈它们给您的工作内容所带来的转变?

钟冠贤:转变非常大。我入行多年,大部份的工作经验都是跟Web和桌面应用软件相关。很久以前我曾开发过一些Pocket PC应用,但多是附带着Web的应用而开发的。iPhone和App Store的兴起为我带来新的天地,2008年当我首次看到iPhone SDK,便觉得这个东东会成为我主要的开发方向。

**图灵社区:**iTunes Store中有您开发的Auto Portrait、Math Clock、Eco.To.Do等应用,包括本书中的范例TouchPainter,能否挑一个您自己最感兴趣的,谈谈整个创意和开发的过程?

钟冠贤:我最感兴趣的仍然是Auto Portrait。因为这个APP跟我的大学时的专业有关。那个应用的构思是很偶然的。当时iPhone 3G/S都没有前置摄像头,有一天随便拿起把玩,发觉用它来自拍很麻烦,因为看不到自己的脸在萤幕上的哪个位置。我想了一下,觉得可以写一个应用,让iPhone提示用户的脸是不是在某个位置上,然后自动拍照。

Auto Portrait的核心是OpenCV内的人脸侦测功能。OpenCV原本是用于台式机应用程序的,输入图像大一点对运算速度都没有太明显的影响。但当时的iPhone 3G运算速度虽然算不错,亦是很有限。所以我必须把输入图像的大小调到最小(包括色阶、解析度、尺寸等)。

除了工程上的考虑,另外还要考虑外观和用户体验,以达到简单易用为标准。没有太大用处的按钮和页面可以不用加进去,要以最小功能达到最大效益。关于“简单易用”我个人有一个小标准,就是一个从未看过该应用的成人用户,可以在3到5秒内大概知道他第一个接触的按钮或控件的用途。如果过了若干秒,用户还在想这个按钮有什么用,你便知道可能根本不需要那个按钮,或是它看起来很烂,跟实际用途不相称。从iOS 4开始,iOS系统的核心有了革命性的改变,而且不能兼容原本的Auto Portrait。要等我有时间,再慢慢改好、发放。

图灵社区:在开发这些应用的时候,您是如何应用设计模式的?这样的做法起到了什么作用呢?

钟冠贤:很多开发人员常把设计模式当作一种“银弹”策略,很容易先想用什么设计模式来设计,只要在项目内能套用这个模式或那个模式,这个设计看起来便是一个好的设计。其实这是本末倒置的。开发应用跟开发其他工程在概念上没两样,都是先“意识”到问题,然后“找出”最佳方案去解决。设计模式是前人对某些常遇问题的一些惯用方案模式。灵活运用前人的智慧去解决当前的问题,不但可以提高开发的效率,也可以减低日后的支持成本。

图灵社区:这本书将传统的设计模式应用到iOS平台,怎么会想到写这样一本书呢?

**钟冠贤:**iOS的开发从2008年起火速地红起来,App Store令不少人发达,从而令更多人觉得这是一条黄金路。很多有创意的开发人员开发心切,在对Objective C语言和Cocoa Touch不甚了解的情况下,就草草地做了他们心目中的App,然后立刻放上App Store,希望明天就能成为下一位百万富豪。由于最初那个App是草草拼凑出来的,过不久要更新的时候便觉得手忙脚乱。

传统的设计模式可将App内的功能归纳成很工整的结构,可以大大增强重复使用现有功能的能力。再者,很多传统的设计模式都是由NeXT系统(即是Cocoa的前身)的设计模式启发而来。把“传统”设计模式套用于App的开发,等于如鱼得水,两者兼备。

近两年,很多开发人员都意识到设计模式的重要性,但市面上有关设计模式的书多是用于C++和Java的,并没有关于Objective-C和Cocoa Touch的。这便是促使我当初写这本书的原因。

图灵社区:这本书的思路是怎样的?对读者如何学习这本书,您有哪些建议呢?

钟冠贤:本书前两章主要是介绍设计模式,并通过范例,让读者初步了解配合设计模式来设计App的流程。后面的章节则是将不同的设计模式根据实际用途来分类,这里的分类跟传统的类别有一些不同。如果读者对App的设计没有概念,可以先看头两章,然后再看后面个别的设计模式。对于其他读者,亦可以把这本书当为日常参考书,根据自己的情况检索某些设计模式的详细内容。

图灵社区:您创立了Wadogo.com网站,并用了一年的时间来创业。对于开发者的创业,你有哪些看法和感想?

钟冠贤:创立Wadogo.com是当时一箭双鵰的决定。当时希望把工作的方向转为专注于iPhone,所以建立那个网站,作为自己的履历,同时亦可试试市场对我的作品的反应。如果有好的反应,当作自己的生意做固然好,否则去找这方面的工作时,也可作为履历给其他公司参考我的技术在哪个位置。

图灵社区:您目前已经加入Apple公司担任iOS Lead Developer,方便谈谈新工作内容跟原来开发app的差异和联系吗?

钟冠贤:不论在哪一家公司工作,总是跟个人开发有不同之处。尤其是在大公司。像Apple公司的内部开发完全没有个人主义,不论是研究项目还是产品项目,皆需要团体合作,并最终由不同意见磨研出结果,但Apple公司并没有局限开发人员的创意。最大的分别是项目的形成多数是基于市场需求和内部的需要,不像个人开发,想到什么便做什么出来。

图灵社区:您在香港、内地和美国都从事过开发工作,能否谈谈在这三地工作的感受,并为内地的程序员提供一些建议?

钟冠贤:这个很难因地区而论,但在言语、文化上三个地方确实会有些不同。我在香港做开发主要是英文,但开发内地应用的软件则主要是中文。不过虽然在香港做开发是用英文,但也需要兼顾在同一软件内支持不同语言的可能性。在美国的开发则是针对以英文为主的市场,对不同语言的支持就放松一点。而在文化上,同一个地区内,不同的公司也会有不同的文化。有些公司开发人员的上班时间或工作地方很有弹性,但有些公司就对执行制度非常严谨,感觉上在美国做开发工作更自由和轻松一些。

整体而言,高科技开发领域是国际性的,而大多数的共同语言都是英文。所有新的技术多是以英文作为沟通语言,把它们翻译成中文需要花很多时间。如果只靠中文来吸收其他地方的新技术,未免会比其他人稍慢了几拍。所以我鼓励内地只看中文的开发人员,增加看英文技术资讯的习惯。

图灵社区:非常感谢您带来这么有启发的回答。


更多精彩,加入图灵访谈微信!