鍾冠賢:iOS開發之路(圖靈訪談)

楊帆發表於2012-01-11

圖靈訪談之十一:專訪鍾冠賢

人物介紹: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公司並沒有侷限開發人員的創意。最大的分別是專案的形成多數是基於市場需求和內部的需要,不像個人開發,想到什麼便做什麼出來。

圖靈社群:您在香港、內地和美國都從事過開發工作,能否談談在這三地工作的感受,併為內地的程式設計師提供一些建議?

鍾冠賢:這個很難因地區而論,但在言語、文化上三個地方確實會有些不同。我在香港做開發主要是英文,但開發內地應用的軟體則主要是中文。不過雖然在香港做開發是用英文,但也需要兼顧在同一軟體內支援不同語言的可能性。在美國的開發則是針對以英文為主的市場,對不同語言的支援就放鬆一點。而在文化上,同一個地區內,不同的公司也會有不同的文化。有些公司開發人員的上班時間或工作地方很有彈性,但有些公司就對執行制度非常嚴謹,感覺上在美國做開發工作更自由和輕鬆一些。

整體而言,高科技開發領域是國際性的,而大多數的共同語言都是英文。所有新的技術多是以英文作為溝通語言,把它們翻譯成中文需要花很多時間。如果只靠中文來吸收其他地方的新技術,未免會比其他人稍慢了幾拍。所以我鼓勵內地只看中文的開發人員,增加看英文技術資訊的習慣。

圖靈社群:非常感謝您帶來這麼有啟發的回答。


更多精彩,加入圖靈訪談微信!

相關文章