访谈嘉宾:

郭霖,Android软件开发工程师。从事Android开发工作6年,有着丰富的项目实战经验,负责及参与开发过多款移动应用与游戏,同时还是LitePal开源框架的作者,对Android系统架构及应用层开发有着深入的理解。

2013年3月开始,在CSDN上发表Android技术相关博文,很快获得了大量网友的好评。目前博客访问量已超过500万次,评论超过10000条。荣获CSDN认证专家,并被连续评选为CSDN 2013、2014、2015年度博客之星。

博客: http://guolin.tech

访谈内容:

非常有幸,再次请到“Android第一书”的作者郭霖来到图灵访谈做分享!我知道《第一行代码》在技术书界可谓是“叫好又叫卖”,非常成功。当时写书的时候,没有担心过自己的辛苦付出,可能根本得不到应有的回报吗?

其实,在准备开始写书之前,我就了解到技术图书由于受众面窄等方面的原因,通常不太好卖。因此,准确来讲,当时我并没有考虑过这本书会不会卖不出去等方面的问题。我决定去写《第一行代码》纯粹是因为自己一直是一个很爱书的人。知道有机会写一本书的时候,我当然也是毫不犹豫地想要抓住这个机会。能出版一本我自己写的书,对我来说,是具有相当大的意义的,至于它到底会不会大卖,其实并不是我当时考虑的首要问题。

最近新出的《第一行代码(第2版)》也将上市。预售的2000本签名书不到半天就被抢完。《第一行代码》这么受欢迎,它的成功对你产生了哪些生活和技术上的改变?

正如刚才所说,我其实并没有刻意期望过《第一行代码》能够有多么多么成功,对于我而言,我只想单纯地当一个好作者,写一本好书。因此,对于《第一行代码》的每一处细节我都非常用心地去把控,我也希望读者们在阅读这本书的时候可以看得出我的用心。至于它后来的大卖,我觉得是水到渠成的事情,因为当你真正用心去做了这件事,自然而然也就会得到大家的认可。《第一行代码》的成功并没有对我产生特别的改变(我觉得暂时还没有),我依旧按照过去的工作规律继续工作,仍然坚持着写博客的习惯,总体而言,我还是那个我吧。

《第一行代码》的成功离不开坚持写技术博客的习惯,包括坚持更新你的微信公众账号。我真的很佩服你的这份坚持。这份坚持为你带来了哪些人生上的收获?

确实,坚持真的是一件非常不容易的事情。从2013年开始,坚持写到现在,差不多有快四年的时间了,虽然现在由于工作繁忙的原因,更新频率比以前低了很多,但我还是一直坚持在写。微信公众号大概是从今年五月份开始正式运营的,一直维持着每个工作日推送一篇技术文章的频率。其实,大家对这种坚持分享的精神都是看在眼里的,我也收获了广大程序员们的支持,这对我来说应该是最大的收获吧。

当然,除了坚持分享的精神以外,文章的质量也是非常重要的,不管是写博客也好、写书也好,我对于自己所写内容的质量要求都非常高,不会用低质量的文章来滥竽充数,久而久之,也赢得了大家的信任吧。所以,这次《第一行代码(第2版)》刚开始预售的第一天就被抢购一空,我觉得主要还是要感谢大家对我的支持和信任。

除了知识的系统全面和科学布局外,我相信语言的趣味性也是本书的一大特色。生活中你应该也是个很有趣的人?

我觉得可能不是。现实生活中的我更像是一个“工作狂”,喜欢把大量的时间花在工作上。我不太喜欢线下活动,能避免的活动和聚会其实我都会尽量推掉。但如果真是要参加一些聚会的话,我觉得我还算是一个比较健谈的人,在聚会上我从来不会和别人聊技术,更多的是一些天南海北的事情,因为我平时还喜欢看很多非技术类的书,了解各种技术圈以外的事情。如果要说我是一个很有趣的人,我觉得还差得有点远。

能把枯燥、陌生的知识阐述得清晰、有趣,跟扎实的知识功底分不开。平时,你是如何学习新知识,并加以内化的?

确实,我认为学习能力是衡量一个人综合能力时非常非常重要的一点,尤其是在科技研发这个行业。因为技术的更新换代实在是太快了,你能学会什么要比你现在会什么更加重要,这也是很多大公司喜欢招985、211学生的原因,名牌大学的学生,学习能力通常都会比较强。

对于我自己而言,很多时候都要研究比较前沿的技术知识,因此,阅读国外的技术资料对我来说就是一件很重要的事情。好在我从小英语就比较好,这方面给了我很大的帮助。只看资料还不够,如果想要很好地消化,还必须自己亲手多做试验才行,试得多了自然也就理解得深刻了,这个时候知识才成了自己的东西。这句话也是我想要对所有看《第一行代码》的读者们说的,如果只是将书中所有的内容看上了一遍就觉得自己都学会了,我觉得还是有些肤浅。只有真正将书中的例子全都自己敲上一遍,并尝试着思考如果我不这样写,换一种写法会是什么效果?我觉得这样才能理解得更加深刻。

短短两年内,Android操作系统经历了5.0、6.0、7.0的飞速升级。你怎么看待这一现象?

其实,我觉得这是Google的一种策略。5.0系统确实有了非常巨大的升级,可以说是Android系统根本性的改变,因为运行环境从Dalvik变成了ART,同时还支持了手表、汽车、电视等系统。但是6.0和7.0系统都只是在5.0系统上进行了小幅度升级而已,并没有什么革命性的变化,我觉得将6.0和7.0系统命名为5.2、5.3系统也并不为过,因为之前的2.x、4.x系统也都是这样命名的。但是小版本号的升级可能不会让人有那么大的升级欲望,而Android最让人头疼的诟病就是碎片化过于严重。因此,我觉得Google使用这种大版本号升级的方式,一定程度上是为了解决Android碎片化的问题,这样还在用4.x手机的人就会觉得自己的系统很老了。事实证明,Google的这种策略也确实是有了不错的成效,目前5.0以上系统的占有率已经超过了50%,算是在一定程度上缓解了不少碎片化的问题。

当然,以上只是我个人的一些见解,Google使用这种大版本升级的方式可能还有更多更深远的意义,这我就不得而知了。

Android未来的发展趋势是什么?是否会考虑再出第3版?

一切都不好说,因为科技的发展真的是日新月异,你永远都无法预测明天会出现什么新的技术。从长远的角度来看,未来的热点技术会集中在VR(虚拟现实)和AI(人工智能)上面。Android 7.0系统中已经宣称加入了VR功能,AI技术则不知会在哪一天引入到Android系统中。但是这些技术都有些过于前沿和早期了,离进入到千家万户可能还有很长一段时间。也许当《第2版》中所讲的技术已经远远落后于当前科技的时候,我会考虑再出第3版吧,但至少目前第2版中的技术还是非常领先的。

有哪些图书和学习资源推荐给Android开发者?

其实学习的途径有很多种,看书只是其中的一种而已。当然,好的图书可以帮助学习者少走很多弯路,因此,能够挑到一本好书对于很多人来说也是挺重要的。在Android领域中,除了《第一行代码》之外,还有像《Android开发艺术探索》《Android群英传》《Android 源码设计模式》等都是非常不错的,对于已经入门的开发者们,可以尝试看看这些书来寻求进一步的技能提升。

除了看书之外,阅读博客也是一种学习的途径,不过博客比起书的话,内容就比较杂乱,很少有谁可以将博客的内容写得像书一样有条理,包括我自己。因此,博客更加适合于去学习一些零散的知识点,或者学习一些特定问题的解决方案,而不是很适合进行系统地学习。

现在还流行了一些新兴的学习方式,比如说看视频教程。像极客学院、慕课网、CSDN都有邀请讲师录制了各种各样的技术类视频教程,比起书和博客,视频的方式可能更加直观。包括我自己之前也录制过一个系列的视频教程,叫《见证Android消息推送时刻》,大家感兴趣的话可以自己去搜索一下。

最后我再分享一下我自己平时的学习方式,因为我每天也在不断学习新的知识。可能我所学的东西涉及的面并不广,但是一般会尽可能研究得深入一些。通常我都会尽量去阅读英文原文资料,包括Android官方文档、StackOverflow等,这个时候Google就是我最好的帮手。我还会在GitHub上挑一些感兴趣的开源项目来进行研究,其实我用过的开源项目真的很少很少,但是一旦开始研究它,就不会仅仅停留在使用的层面上,而是研究源码,了解它具体是如何实现的。其实多看一些开源项目的代码,对于自己的编程思路以及编程能力都是有挺大提升的,这也是我现在提升自己的一种方式吧。


——更多访谈


更多精彩,加入图灵访谈微信!