最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

专访 YYKit 作者郭曜源:开源大牛是怎样炼成的

  • 2015-11-26
  • 本文字数:2645 字

    阅读完需:约 9 分钟

编者按:最近一系列开源项目 YYKit 在 iOS 社区引起广泛反响,由于其代码质量高,在短时间内就收获了大量的 star,它的作者是国人开发者 ibireme,优酷土豆的 iOS 开发工程师郭曜源,InfoQ 社区编辑唐巧对他进行了采访,了解这些开源项目背后的故事。

前言

第一次听到 ibireme 这个名字,是看到他在 微博上分享 YYText 开源库。当时我第一眼见到 YYText 的功能示意 GIF 图时,就被它丰富的功能吸引了。YYText 应该是我见到过的功能最强大的基于 CoreText 的排版框架了。

令人惊讶的是,YYText 虽然代码量很大(超过一万行),但它只是 ibireme 的作品之一。ibireme 利用业余时间完成了 YYKit 工具库,包括:

我和一些朋友挑选了一些其中的组件代码阅读,大家都认为质量非常高,大家对它的评语是这样的:

打算自己撸一个 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:发布前我有预期会收到不少关注,但是发布后收到的好评还是大大超出我的预料。最令我惊讶的是 Facebook 和 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 这样的优秀的开源项目,与大家共勉。

2015-11-26 04:2056752
用户头像

发布了 65 篇内容, 共 55.2 次阅读, 收获喜欢 22 次。

关注

评论

发布
暂无评论
发现更多内容

Serverless 架构到底要不要服务器?

Serverless Devs

Java 云计算 Serverless 运维 云原生

区块链双仓合约交易所系统开发

Java Optimizing 读书笔记(一)

绝影-大数据

避免短信接口被黑客刷取的方法

香芋味的猫丶

短信防刷 接口安全 短信验证码 短信防轰炸 短信防火墙

开发老人笔记:Git 常用命令清单

华为云开发者联盟

git 代码 bug

即构微信小程序直播组件是什么?有哪些功能?哪些小程序类目可以使用?

ZEGO即构

量化交易系统开发

威掂l8929545452

区块链 系统开发 量化交易系统 交易所

红牛交易所app系统开发

威掂l8929545452

区块链 系统开发 APP开发 红牛交易所

百度研究院的追星逐浪,中国科技的奋发自强

脑极体

数据库表数据量大读写缓慢如何优化(2)「查询分离」

我爱娃哈哈😍

数据库 大数据 架构 后端 优化

流行的后台管理系统模板总结

老魚

程序员 建站 web全栈

GaussDB(DWS)性能调优系列实现篇六:十八般武艺Plan hint运用

华为云开发者联盟

数据库 性能优化 sql GaussDB 算子

一个奇怪的 Elasticsearch 节点

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

需求条目化:一个让用户故事有效落地的套路

华为云开发者联盟

敏捷 项目 需求条目化

OpenYurt v0.3.0 重磅发布:全面提升边缘场景下应用部署效率

阿里巴巴云原生

阿里巴巴 开源 容器 云原生 k8s

百度智能小程序打造购票观影一站式体验,影视宣发新玩法助力行业复苏

DT极客

Redis 学习笔记 03:字典

架构精进之路

redis 七日更 28天写作

【HTML】已经废弃的align(图像对齐方式)

德育处主任

html html5 Web html/css 28天写作

区块链轻节点:“身”轻,责任重

华为云开发者联盟

区块链 数据 数据隐私 轻节点

BI项目失败?看看是不是缺少了这几项闭环!

博文视点Broadview

微信视频号的排版,怎样才好看 | 视频号 28 天 (07)

赵新龙

28天写作

浅析Mysql数据库优化设计规范的“度”

三石

MySQL 28天写作

解决Windows2012 R2下安装PostgreSQL报错的问题

PostgreSQLChina

数据库 postgresql 开源

如何利用策略模式避免冗长的if-else/switch分支判断代码?

码农架构

Java 学习 设计模式

量化对冲搬砖套利交易APP开发|量化对冲搬砖套利交易系统软件开发

系统开发

Intel首次公布11代酷睿桌面处理器性能:8核i9斩落锐龙12核

科技新消息

自动驾驶汽车的发展史

anyRTC开发者

人工智能 自动驾驶 AI

比特币矿机工作原理

v16629866266

比特币 比特币区块链

TypeScript 渐进迁移指南

LeanCloud

JavaScript typescript nodejs

开发更便捷 阿里云推出一站式应用研发平台EMAS 2.0

移动研发平台EMAS

阿里云 Serverless AI 低代码 移动研发平台

量化策略交易软件开发|量化策略交易系统APP开发

系统开发

专访YYKit作者郭曜源:开源大牛是怎样炼成的_移动_唐巧_InfoQ精选文章