鍾冠賢:iOS開發之路(圖靈訪談)
圖靈訪談之十一:專訪鍾冠賢
人物介紹: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公司並沒有侷限開發人員的創意。最大的分別是專案的形成多數是基於市場需求和內部的需要,不像個人開發,想到什麼便做什麼出來。
圖靈社群:您在香港、內地和美國都從事過開發工作,能否談談在這三地工作的感受,併為內地的程式設計師提供一些建議?
鍾冠賢:這個很難因地區而論,但在言語、文化上三個地方確實會有些不同。我在香港做開發主要是英文,但開發內地應用的軟體則主要是中文。不過雖然在香港做開發是用英文,但也需要兼顧在同一軟體內支援不同語言的可能性。在美國的開發則是針對以英文為主的市場,對不同語言的支援就放鬆一點。而在文化上,同一個地區內,不同的公司也會有不同的文化。有些公司開發人員的上班時間或工作地方很有彈性,但有些公司就對執行制度非常嚴謹,感覺上在美國做開發工作更自由和輕鬆一些。
整體而言,高科技開發領域是國際性的,而大多數的共同語言都是英文。所有新的技術多是以英文作為溝通語言,把它們翻譯成中文需要花很多時間。如果只靠中文來吸收其他地方的新技術,未免會比其他人稍慢了幾拍。所以我鼓勵內地只看中文的開發人員,增加看英文技術資訊的習慣。
圖靈社群:非常感謝您帶來這麼有啟發的回答。
更多精彩,加入圖靈訪談微信!
相關文章
- 圖靈訪談系列之一:陳世欣談產品經理與社群圖靈
- 圖靈訪談系列之九:CNode社群談Node.js技術及生態圖靈Node.js
- DataGirls社群創始人 Aislinn:做勇敢的少數派(圖靈訪談)AI圖靈
- 旅居中國的日本遊戲開發者訪談:外國人在中國的遊戲開發之路遊戲開發
- iOS開發-圖片UIImageiOSUI
- iOS開發之登入與訪客iOS
- 《健身環大冒險》開發者訪談
- 哈佛開發新冠肺炎風險地圖地圖
- 【iOS 開發】iOS 10.3 如何更換 app 圖示iOSAPP
- 【譯介】《最終幻想 VII》開發者訪談
- iOS開發圖片格式選擇iOS
- 圖靈訪談系列之八:對話歸隱的大師——Donald E. Knuth(高德納)圖靈
- ios開發者談談技術面試那些坑 | 掘金技術徵文iOS面試
- 《黃昏沉眠街》開發者訪談:從插畫師到獨立遊戲製作人的進化之路遊戲
- 《蠟筆小新:我與博士的暑假》開發者訪談
- 《拳皇 15》開發者訪談:《拳皇》系列的集大成之作
- PS5 獨佔遊戲《Returnal》開發者訪談遊戲
- 7年iOS開發,自述通往架構師的修煉之路iOS架構
- 《蔚藍反射:帝》開發者訪談:凝聚 GUST 全部力量銳意開發而成反射
- 專訪明略科技CTO郝傑,共繪會話智慧發展藍圖 | 愛分析訪談會話
- 對話馬丁·坎貝爾-凱利:計算機發展史已翻開新的一頁,而量子計算機尚處於開篇階段(圖靈訪談)計算機圖靈
- 應對新冠危機:如何開創復甦之路?
- Python開發之路Python
- iOS 開發iOS
- 專訪阿里陳康賢:我所理解的網站架構阿里網站架構
- 霸榜7年!《瘟疫公司》玩家破1.2億,開發者訪談
- 淺談移動端圖片壓縮(iOS & Android)iOSAndroid
- 紙上淺談-2019 多媒體開發學習之路 | 掘金年度徵文
- 玩轉iOS開發:iOS中的NSOperation開發(一)iOS
- Python的開發之路Python
- 圖靈訪談1025 | 美團攻城獅:用技術創造歷史,用走過的路寫一本書圖靈
- veImageX演進之路:iOS高效能圖片載入SDKiOS
- iOS開發:UIAlertViewiOSUIView
- iOS 開發薪水iOS
- iOS開發- RunLoopiOSOOP
- iOS開發-UIButtoniOSUI
- iOS開發-MVCiOSMVC
- 談談 Kubernetes 的匿名訪問
- 《新美妙世界》開發團隊訪談:「開啟一段全新的《美妙世界》之旅」