專訪YYKit作者郭曜源:開源大牛是怎樣煉成的

jopen 9年前發布 | 28K 次閱讀 YYKit
 

編者按:最近一系列開源項目YYKit在iOS社區引起廣泛反響,由于其代碼質量高,在短時間內就收獲了大量的star,它的作者是國人開發者 ibireme,優酷土豆的iOS開發工程師郭曜源,InfoQ社區編輯唐巧對他進行了采訪,了解這些開源項目背后的故事。

前言

第一次聽到ibireme 這個名字,是看到他在微博上分享 了 YYText 開源庫。當時我第一眼見到 YYText 的功能示意 GIF 圖時,就被它豐富的功能吸引了。YYText 應該是我見到過的功能最強大的基于 CoreText 的排版框架了。

令人驚訝的是,YYText 雖然代碼量很大(超過一萬行),但它只是 ibireme 的作品之一。ibireme 利用業余時間完成了 YYKit 工具庫,包括:

  • YYModel — 高性能的 iOS JSON 模型框架。
  • YYCache — 高性能的 iOS 緩存框架。
  • YYImage — 功能強大的 iOS 圖像框架。
  • YYWebImage — 高性能的 iOS 異步圖像加載框架。
  • YYText — 功能強大的 iOS 富文本框架。
  • YYKeyboardManager — iOS 鍵盤監聽管理工具。
  • YYDispatchQueuePool — iOS 全局并發隊列管理工具。
  • YYAsyncLayer — iOS 異步繪制與顯示的工具。
  • YYCategories — 功能豐富的 Category 類型工具庫。

我和一些朋友挑選了一些其中的組件代碼閱讀,大家都認為質量非常高,大家對它的評語是這樣的:

打算自己擼一個 JSON 轉 model 的,專門看了 YYModel 的代碼,果然屌。

YYKit 超級好用。

對比一下,感覺自己一年都沒寫代碼。

怎么會有如此完美的工程師?真想抽一周時間宅在家里把 YYKit 的源碼重敲一遍。

之后我抽空學習了一下 ibireme 的 博客 ,上面有多篇介紹他對于 iOS 開發中各種問題的研究,例如他在開發 YYModel 時, 調研和評測 了包括 Mantle 和 MJExtension 在內的多款開源庫。這種專業認真的做事態度讓我非常佩服,也讓我對 YYModel 的質量充滿信心。

然后,我有幸得到了 ibireme 的 QQ 和微信號,所以和他交流了多次。這時我才知道 ibireme 是一個 90 后,在優酷從事 iOS 開發工作。而這些所有的開源庫,都是他在業余時間完成的。

我想大家很可能對 ibireme 的學習和成長的經歷感興趣,而且 ibireme 的故事很可能會激勵更多有激情的 iOS 開發新人,利用業余時間學習、Coding 和分享,最終讓國內的 iOS 開發技術氛圍更好。所以,我向 ibireme 發出了采訪邀請,ibireme 欣然接受了。于是,讓我們來一起揭開這位神秘人物的面紗吧。

采訪

唐巧:你好 ibireme,能否先向讀者簡單介紹一下自己?

ibireme:大家好,我叫郭曜源,是一個 iOS 開發者,現居北京,就職于優酷土豆。喜歡代碼,愛好設計與音樂。

唐巧:我發現 YYKit 是在這個月初上傳到 github 上的,但是它的代碼量非常大,能否介紹一下每個部分大概花了你多長時間?

ibireme:Category 等工具類大部分都是這一兩年工作和業余時間攢下來的。文本和圖片相關的那幾個項目是今年年初開始寫起的,陸陸續續寫了半年多。YYModel 花的時間最少,只有大概兩個周末。

唐巧:為什么選擇一次性開源這么多代碼,而不是一個一個開源呢?

ibireme:最初這些代碼我都是寫在一個工程里,代碼量比較多,相互之間也有很多依賴。準備發布時,我覺得這樣很不方便別人使用,這才按功能拆開成一個個小的組件,然后一起發布的。

唐巧:這些開源庫在國內外都收到了大量的好評,這個有沒有超出你的預期?

ibireme:發布前我有預期會收到不少關注,但是發布后收到的好評還是大大超出我的預料。最令我驚訝的是 非死book 和 Uber 等國外的工程師也關注到這個項目,并且還以此向我發出了工作邀請,這讓我非常激動。

唐巧:你對 YYKit 后續的發展上有什么計劃嗎?

ibireme:現在只是計劃進行一些正常的維護工作,保證穩定性。未來如果有合適的東西,我也會嘗試加到里面的,但應該不會有太大改變了。

唐巧:YYKit 是你的業余作品,我很好奇你是如何保證工作之余還有這么高產的?

ibireme:最近一年我工作不太忙,很少加班,空閑時間比較多。另外我比較宅,平時喜歡待在家里做一些喜歡的事情。說起來,應該是充足的時間加上個人興趣讓我完成了這些項目吧。

唐巧:你如何看待 Swift 語言,有沒有計劃過用 Swift 重寫你的 YYKit?

ibireme:相對于 Objective-C 來說,我覺得 Swift 無疑是更優秀、更現代的語言。目前我對 Swift 研究并不多,工作中也沒有用到,但未來我會把時間更多投入到 Swift 中去。YYKit 中不少東西更適合于 C/Objective-C,所以我沒有計劃用 Swift 重寫整個項目。我可能會用 Swift 寫一些新的東西,以充分發揮 Swift 的特性。

唐巧:你在 iOS 開發上是如何快速成長起來的?有沒有什么心得可以分享給 iOS 開發新手?

ibireme:我接觸 iOS 開發的時間很早,但是一直都是在工作之余靠著興趣自學的。14 年我還在人人網時,部門內部有個新項目需要 iOS 開發,我才得以有機會在工作中使用 iOS 相關的技術。全職轉為 iOS 開發后,我花費了大量的時間閱讀和學習各種開源的代碼、研究其中的實現原理、嘗試自己實現相關技術、嘗試在工作中使用,這使得我在 iOS 開發技術上進步很快。對于 iOS 開發來說,我覺得自學能力是很重要的。主動去研究一些優秀的開源項目、多在工作中實踐和學習,這樣就能逐步提升個人技術水平了。

唐巧:你覺得哪些開發者對你影響最大?

ibireme:可能平時我更喜歡看代碼,對于開發者我倒是了解的不多吧。如果要選一位的話,我會選 Linus Torvalds。他的一句話我很喜歡:"Talk is cheap, show me the code"。

唐巧:在技術領域,你對未來有什么學習規劃嗎?

ibireme:在 iOS 方面,我可能會針對 Swift、音頻處理和合成等方面投入更多精力。另外我第一份工作是 Java 后臺開發,工作時前后端、數據庫相關的東西也都接觸過,所以如果有時間的話我也會繼續學習這些技術,即使不用在工作上,也能開拓眼界吧。

結束語

剛剛 ibireme 在介紹自己學習方法的時候,提到了兩點我認為非常關鍵,一個就是大量地閱讀優秀項目的源代碼,另一個就是自己動手實踐來嘗試。

我在很久以前,分享過我認為 iOS 開發者可以提高自己能力的各種方法,見 《iOS 開發如何提高》 ,里面也提到閱讀開源代碼和多寫代碼。我感覺 ibireme 將這一點做到了極致,因此他在短短一年多的時間,就能夠成長成為在業界有影響力的開源項目作者。

我們處在一個信息爆炸的時代,每一天都有大量的 iOS 開發文章出現,我們對這些文章如饑似渴,但是很多時候又淺嘗輒止。像 ibireme 這樣,專心閱讀幾個開源項目,然后自己動手真正實踐,或許才是正確的學習方式。

希望 ibireme 的故事能夠激勵那些渴望成長成為牛人的 iOS 開發新人,也希望在中國能夠出現更多像 YYKit 這樣的優秀的開源項目,與大家共勉。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!