如果你有志于将iOS开发作为职业,或者已经是一位iOS开发者,那么你应该听说过唐巧的名字。唐巧,2012年从网易有道离开参与创业, 目前是猿题库iOS高级研发工程师。难得的是,他本身是一线的iOS开发者,同时又对iOS开发在国内的布道做了不少的工作,身影活跃于博客、微博、微信公众账号等地。从2011年以来,唐巧开始在博客分享自己写的iOS开发技术文章,CocoaChina 也曾多次转载过他的博客文章,后来他成为InfoQ兼职编辑,除了发表技术文章之外,还负责整理《iOS移动开发周报》,至今已有35期,他的微博和微信公众账号粉丝都超过1万,可以说是iOS开发领域的“大V”。
最近,经过一年的辛苦编写,他的新书《iOS开发进阶》已经和大家见面,下面就让我们来和他聊聊这本新书,以及他对于技术学习、建设技术影响力等方面的经验和看法。
受访者:唐巧。 猿题库iOS高级研发工程师,《iOS开发进阶》作者。
CocoaChina:感谢您能和大家分享自己的宝贵经验。能否介绍一下您现在的工作和生活情况?
唐巧:大家好,非常高兴能和大家分享一些我的想法。我喜欢写作与分享,长期维护着自己的 技术博客 、技术微博 @唐巧_boy以及微信公共帐号iOSDevTips。我的技术文章也多次发表在 InfoQ 网站和《程序员》杂志上。
工作方面:我从 2012 年 5 月从网易离职加入猿题库创业,经过 2 年多发展,猿题库现在已经是一家到 C 轮融资的,估值 1.25 亿美元的公司。我有幸见证了猿题库从几个人发展到现在近百人的过程。我一直在猿题库负责 iOS 端的开发工作,最近主要在参与 “小猿搜题” 这个新项目。
生活方面:虽然不服老,但今年我已经年满 30 岁了,一些 iOS 圈子里的晚辈甚至叫我巧叔。平时创业能有的空余时间不多,周末一般写写博客,陪陪家人。
唐巧:我之前写过一篇《 iOS 开发如何提高 》的文章,简单总结来说,就是多读、多写、多思考、多讨论。多读主要包括:阅读博客、图书、WWDC 视频、官方文档、开源项目。多写就没什么好说了,没有写过几十万行代码是不能算熟悉一门语言的。多思考和讨论这个需要个人主动一些,遇到问题喜欢多问为什么,在多次重构和思考的过程中,我们就会慢慢积累出一类问题的 “最佳实践” 方式,成为自己宝贵的经验。
我个人也是比较信奉 1 万小时理论的,所以我会拿晚上和周末的时间去学习积累 iOS 开发技术,这可能也是为什么我会成长得比较快的原因。
CocoaChina: iOS 开发技术的更新换代特别快,而且在更新过程中会有一些坑,您对此有什么看法?
唐巧:移动开发真正火起来其实就是最近这三年,iOS 开发技术因为发展也就才这么几年,所以值得做的事情还有很多,这就造成了每年苹果的 WWDC 都会推出一堆新的特性和 API。整体上来说,这对业界是好事情。在技术更新过程中产生一些坑,是在所难免的事情。所以希望大家都能用一个比较平和的心态去搞定这些坑。
唐巧:有一点不容怀疑:Swift 最终肯定会替代 Objective-C,成为主要的 iOS 开发语言。单从语言特性上来看,Swift 吸收了众多现代编程语言的优秀特性,例如类型推断(Type inference)、范型(Generic)、闭包(Closure)、命名空间(namespace),元组(tuple)等,整体语法上也更加简洁。所有 iOS 开发者都应该花时间学习这门全新的语言。
但是,客观地说,Swift 当前的生态环境还不够成熟,这包括第三方开源库,文档和教程,甚至是苹果自己的编译器。我前不久才和一些同行们聊过这个话题,朋友晒出了 Github 上整理出来的 会造成 Swift 编译 Crash 的列表 ,从上面可以看出,Swift 语言本身还有较长的路要走。
用 Swift 来完成 App 还有一个不大不小的问题就是体积会比较大,因为 Swift 相关的库会直接打包进 App 中。我们曾经拿猿题库的 App 测试过,采用 Swift 和Objective-C 混合编写的方案后,应用体积会增加 10M,这对于公司来说还是比较大的困扰。我个人对于 Swift 的预期是:在 1、2 年内能够全面替代 Objective-C。但在近期,我个人还是会使用 Objective-C 来完成公司的项目。
CocoaChina:您最近出了新书《iOS 开发进阶》,能否给我们介绍一下这本书,您认为这本书最大的亮点或者说价值在哪里?
唐巧:我写这本书主要的原因是:国内没有一本原创的 iOS 进阶方面的图书出现,所以我想尝试着写一本这样的书。
《iOS 开发进阶》分工具、实践、理论三大部分:第一部分介绍 iOS 开发的常用工具、第二部分介绍 iOS 开发中的一些常见的实践经验、第三部分介绍 iOS 开发中涉及的原理。如果把成为 iOS 开发高手比作武林小说中的高手修炼的话,工具、实践和理论的学习就分别对应兵器,招式和内功的修炼。此书希望通过这三方面的综合讲解,以全面提高开发者的技能水平。
我感觉本书最大的价值就是填补了 iOS 进阶一类图书的空白吧,我敢保证书中的 90% 内容在其它 iOS 开发的图书中找不到。 这里 有该书详细的目录 。
CocoaChina:请问作为一线开发者,编写这样的技术书籍是什么样的体验?有哪些经验可以对有志于出书的开发者分享的?
唐巧:简单来说就是一个字:累!我大概花费了一年时间来完成这本书。如果是为了挣钱的话,应该有很多方式比写书性价比高。加上我自己还在创业,所以基本上只有周末的时间可以用了。
我具体在做的时候是尝试用 scrum 的方式来安排自己周末的时间。简单来说就是把书稿的内容进行拆分,然后对于细分到每一个章节的内容进行估分。接着我的每一个周末的目标就是把当周安排的章节写作完成。
当然,人都是需要休息的。所以周末两天我通常不会安排满。我会安排一整天用来写作,而另外一天做小量的修改和休息。如果有加班,就暂停写作。
我感觉写作的体验和跑马拉松类似,前期的起跑和最后的冲刺都比较激动,但是中途长达一年的写作过程却是孤独,枯燥和寂寞的。这个时候,需要自己的坚持和自我鼓励。
唐巧:对于技术实力的提升,我比较推荐最近 tinyfool 写了一篇文章,叫《 不要轻易在简历上写我热爱编程,我热爱学习 》。我觉得你提的这个问题的根本还是在于:iOS 开发者到底热不热爱编程。在我看来,任何一件事情,如果你做到了热爱它,把它当作乐趣,那么在同行中做到出类拔萃应该是理所当然的。如果不热爱,我感觉做到会比较难。
对于其它方面,比如管理及其它软能力的提升,我其实也没有很多经验。如果从我自己的经验出发,我自认为多写作对于提高表达沟通能力是有帮助的。
CocoaChina:您的博客有很多精品技术文章,还有人专门将它们总结梳理,请问如何写出一篇好的技术分享文章?
唐巧:我首先想分享一个事实,就是我高考的时候语文只有 92 分(满分 150 分)。所以说其实技术文章真的不难写,很多时候,你只需要把一个技术细节的前因后果,用客观的语言陈述出来就可以了。
那为什么很多人写不好技术文章呢?我觉得还是比较懒的原因。因为要写好一篇技术文章,为了讲清楚,需要非常仔细地介绍知识的前因后果,做各种铺垫,还需要做到有条理,表达清晰。这些如果要做好,配图、举例子、提供参考资料等工作是免不了的。我常常为了写一篇文章,花费周末一整天的时间,来回修改和查证资料。
另外我认为写作是可以训练的,所以平时如果坚持多写的话,慢慢得文字就变得更有条理,在沟通的时候也会更加注意表达,这对于自我表达能力的提高是非常好的方式。
CocoaChina: 您的微博和微信公众账号都有超过1 万粉丝,算是 iOS 开发这个领域的大 V,想请教一下如何建设个人在技术领域的影响力?
唐巧:我能成为 iOS 开发领域的大 V,一方面,其实我个人不停地在分享 iOS 开发技术。也在有意识地经营微博和微信,你仔细观察就可以发现,我在微博上只讨论iOS 技术问题。多分享、专注于一个领域,自然会有志趣相投的人来关注你。另一方面的原因是,移动开发最近几年才兴起,我有幸成为最早一批做这个事情的人,当时这个领域坚持写作的人很少,所以我的博客文章内容相对来说更容易被大家阅读到,这就增加了我个人的知名度。
另外,建立个人技术影响力是一个长期持续的过程,需要不停地分享,而短期收益比较少,所以很多同行做不到。我坚持做到了,所以就比较成功。
以上就是本次访谈的全部内容,感谢唐巧老师的分享。如果您还想了解更多关于唐巧的故事,可以看看这篇技术人攻略对他的 采访 。
本文属于CocoaChina开发者访谈的系列文章,本系列访谈意在寻找资深的一线iOS开发者、布道者、开源项目的参与者,来和大家交流经验和想法,欢迎大家自荐或推荐,联系邮箱:support@cocoachina.com