Android大牛是如何炼成的:郭霖的成长之路专访

4. 你在学习和研究Android技术的过程中,有哪些重大的转折点或者让你印象深刻的经历?

我在学习Android技术过程中的重大转折点,我认为是在2013年的时候,我做出了开始写技术博客这个决定。没有这个决定,就不会有后来的《第一行代码》。所以我一直都认为这是我人生的一个重要转折点。

我在上大学的时候是学校里公认的编程高手,但是我却不知道自己有写技术文章的能力。这个事情很奇怪,我那时没有写过博客,没有这方面的经验,只是抱着记录自己的学习过程这样的心态去写的,但是看过我文章的朋友都说我写的文章最容易理解。

陈冰老师更是在我仅仅写了四篇文章的情况下,就邀请我去编写《第一行代码》这本书,当时我还担心自己是不是遇到骗子了。要知道,那个时候我才刚刚毕业不到一年时间,直到现在想想仍然还是觉得挺不可思议的。

5. 从2013年到现在,你坚持写作技术博客快8年了,这需要惊人的毅力和难以想象的付出。我们很多读者朋友都是通过阅读你的博客成长起来的,优质的内容让他们受益良多。那么坚持写作这件事对你自身而言,有哪些帮助或者好的影响?

我只能说,写技术博客对我自身的帮助和影响实在是太大了。前面已经说了,决定开始写博客对我来说是一个重要的转折点,没有这个决定也就不会有后来的《第一行代码》。

至于为什么可以坚持写了这么多年,其实并不是因为什么责任扛肩上。原因很简单,写博客对于我来说是一个自我学习的过程。技术变化日新月异,移动开发并不是一个学会了就可以一劳永逸吃一辈子的行业,你必须保持不断学习。

我在学习各种新技术的时候,为了更好地记录和整理,会将它们写成博客。我相信很多人在学习的时候都有做笔记的习惯,我只是把这个笔记写得更加详细和清晰,让这些笔记不光我自己能看得懂,别人也可以看得懂,仅此而已。

6. 你写作一篇技术博客平均要花多长时间?平时工作很忙,你是如何保持如此高产的?

正所谓慢工出细活,我写文章的速度其实很慢的,平均大概要一周才能写出一篇技术博客,直到现在这个速度也并没有提升多少。

我写文章会经历几个固定阶段,包括构思内容,勾画大体知识框架,编写Demo,写成文章,检查语病和错别字,最后才会发布出来。很多读者觉得我的文章疏漏很少,因为我在发布之前会做比较严格的检查。

至于问我如何保持如此高产,这明显不是一个事实。因为我写文章的速度是比较固定的,所以空闲时间多的时候我就能高产一些,而工作繁忙的时候,我就很难抽出时间写文章。

从CSDN的年度文章统计其实就可以看出,2013年我一共编写了45篇技术博客,而2018年一共只写了7篇。不过好在今年我的产能还算不错,目前已经写了17篇,平均每个月两篇左右,希望可以继承保持下去吧。

7. 你的博客写得通俗易懂,你的文字就像具有魔法一样,无论多么复杂的内容,你都能讲得清晰透彻,请问你有哪些写作经验和写作技巧?

这个问题还真有不少朋友问过我,但实际上,我也不知道该如何回答。

刚才说了,我其实自己都不知道自己竟然有写技术文章的能力,我之前没有做过这方面的练习,也没有学过任何写文章方面的资料,就只是凭着感觉去写,没想到竟然能够得到那么多人的认可。

上次和一位朋友聊天时,他就问了我同样的问题,我知道他是希望我能给出一个总结好的固定的套路和流程,然后按着这套流程就能写出一篇好文章。但是我自己的脑海里从来没有固定的写作框架。

我在写文章时,最多只是会列举一下这篇文章大体要写哪些知识点,把它们列成目录,然后就是想到哪儿写到哪儿了,我也总结不出更多的东西。所以最后反倒是他帮我总结出了一个结论,说我在这方面是有天赋的。

不过在写文章的时候,我有时会对一句话反复读来读去,感觉不够通顺或者表达不是很准确的时候,我就会尝试换一种表达方式,以保证整篇文章读下来的感觉都是通畅的,或许这也是我文章写得慢的其中一个原因吧。

8. 现在新技术的发展日新月异,开发者要提升自己的学习能力,不断掌握新知识,扩展知识领域,才能及时跟上时代的步伐。你的学习能力非常强,学习效率也很高,请你分享一下你的学习经验和建议。

这个就有点不太好意思了,我并不认为我的学习能力很强,可能只是学习方法比较正确而已。

想要持续跟上各种新技术日新月异的发展,首先要明确学习的方向才行。那么要怎样明确学习的方向呢?我个人的方式是始终跟着Google的节奏走。

我每年都会看Google的IO大会,在这些大会上,Google每年都会推出各种新技术,而这些新技术通常就预示着下一代的开发潮流,那么就可以成为你的学习方向。

有了学习方向之后,接下来就是要怎样去学习的问题了,我通常会使用Google搜索好的学习资料。这个很简单,输入你想要学习的某个技术的关键字,一般搜索结果比较靠前的就是最佳的学习资料了。

我拥有的一个优势是,我阅读英文技术资料的能力还不错,通常学到的技术内容可能就超前一点。所以,把英语学好,对于你做软件开发这个行业,会有比较大的帮助。

另外,我一直热衷于参加Google的各种线下技术活动,之前都是作为观众参与,今年首次在GDG上进行了技术演讲。受疫情的影响,今年线下活动的人数受到了严格的限制,但即使是这样,我也感受到了非常浓厚的技术氛围。

有许多开发者与我进行了技术讨论,他们咨询了我很多问题,同时也发表了他们自己的观点,我也从中学到了很多。如果以后有机会,我还会去参加更多的线下技术交流活动,这是一个非常棒的体验。

9. 今年你申请了Android GDE(Google认证开发者专家),并且顺利通过,恭喜你!这一认证对于一位Android开发者而言,是非常有意义的。能否请你为大家分享一下申请的宝贵经验呢,比如需要具备哪些条件,申请流程是什么,面试流程是怎样的。

谢谢,能够成为Android GDE我也感到非常荣幸。其实,一开始收到Google邀请的时候,我还是有点犹豫的,因为GDE申请的流程非常复杂,而且还要用英文进行面试,我对此并不是非常有信心。

但是感觉如果拒绝Google的邀请又有点不太礼貌,所以我就抱着试一试的态度去申请了。结果我的运气非常好,成功地成为了一名GDE,对此我也感到非常开心。

这一认证对我而言是非常有意义的。现在我和Google建立了直接的联系,有技术问题也可以直接向Google进行咨询,所以对于我自身的学习帮助是非常大的。

至于申请GDE的流程,Google对申请人的技术能力以及技术影响力有比较高的要求,会对你的申请资料进行严格的审查,以评估是否满足GDE的资格,接下来还要通过两轮面试,才能正式成为一名GDE。

我在博客中写了一篇非常详细的文章来介绍整个申请过程,感兴趣的朋友可以到《分享我成为GDE(Google开发者专家)的经历》这篇文章中去了解。

10. 除了研究Android技术和工作之外,你还抽时间开发了LitePal、giffun、PermissionX等多个开源项目。这些项目都是兴趣所致,但都受到了Android开发者的关注和喜爱,那么你开发这些项目的契机分别是什么?

其实对于任何一个开发者而言,如果你写的开源项目能够被很多其他开发者使用,这都是一件很酷的事情。所以我相信每个开发者都是愿意去写开源项目的,只是可能还没有找到一个好的契机或切入点而已。

而我写的这些开源项目,切入点都是那些我认为开发中存在的痛点。以前工作时需要频繁和数据库打交道,SQL语句写到想吐,所以我就写了LitePal这个开源库,来简化Android上的数据库操作。

另外,Android提供的权限申请API非常不友好,每次编写申请权限的代码,对我来说都是一个痛苦的过程,所以我一直希望能编写一个开源库来让权限申请变得简单,于是就有了PermissionX。

值得一提的是,PermissionX的第一个版本其实来自于《第一行代码——Android(第3版)》,本来主要是为了教读者朋友们如何开发一个开源库的,后来我发现这个项目的意义不仅限于教学目的,而是真的可以投入实际的项目中使用,所以后期又对它做了很多的功能增强,才变成了现在的PermissionX。

11. Google非常重视Kotlin,将Kotlin作为了Android开发第一语言。你也一直比较看好Kotlin,将《第一行代码——Android》(第3版)使用了Kotlin语言进行重写。但是与国外相比,Kotlin在国内的热度目前似乎不是特别高,你觉得真实情况是怎样的,背后的原因是什么?

使用Kotlin语言的原因很简单,因为这就是未来。我觉得作为Android开发者,需要做的是去适应技术趋势,而不是去对抗它。

每年Android的开发技术都会发生很多变化,而近几年最大的变化莫过于编程语言的改变。

Google在2019年的IO大会上明确宣布了Kotlin First,所以Kotlin目前是Android开发的第一语言。作为Android开发者,我们必须去适应Google的技术趋势。

目前Kotlin在国内的热度还不算高,我认为主要是因为Google的新技术在国内有一定的滞后性,普及还需要一定的时间,但是毫无疑问,Kotlin是Android开发的未来。

Google现在主推的许多新技术都是基于Kotlin的,比如说协程。已推出的各种库也在用Kotlin重写,比如Room、Paging3等。未来即将推出的新技术也会基于Kotlin,比如Jetpack Compose。

也就是说,如果不学习Kotlin,可能将会完全跟不上以后的Android技术开发趋势。所以,我相信Kotlin在国内终将会普及,只是时间的问题。这也是《第一行代码——Android》(第3版)使用Kotlin进行重写的原因。

总结

像郭霖这样的“大牛”国内虽然不多,但是也有不少,他们之所以获得这样大的成功,很大的原因就在于他们掌握的并不仅仅只有表面的技术,还会深入底层,在工作之余会关注新技术。

在Android这条漫长的道路上,我们不仅仅要掌握技术,还要深入底层,弄明白下面的原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

我把自己这段时间整理的Android最重要最热门的学习方向资料放在了我的GitHub:https://github.com/xieyuliang/Android-P7-share/blob/master/Android%,里面还有面试题集合/面经、及系列技术文章等。

知识点整理

目录(不要说什么眼熟,是真的需要这些知识点)

(一)架构师必备Java基础
(二)设计思想解读开源框架
(三)360°全方位性能优化
(四)Android框架体系架构
(五)NDK模块开发
(六)Flutter学习进阶
(七)微信小程序开发

点击这里的蓝色字体可以直接获取《耗时298天,8大模块、3382页66万字,Android开发核心知识笔记!》

架构师筑基包括哪些内容

我花了将近半个月时间将:深入 Java 泛型.、注解深入浅出、并发编程.、数据传输与序列化、Java 虚拟机原理、反射与类加载、高效 IO、Kotlin项目实战等等Android架构师筑基必备技能整合成了一套系统知识笔记PDF,相信看完这份文档,你将会对这些Android架构师筑基必备技能有着更深入、更系统的理解。

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

注:资料与上面思维导图一起看会更容易学习哦!每个点每个细节分支,都有对应的目录内容与知识点!



这份资料就包含了所有Android初级架构师所需的所有知识!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值