简介:任玉刚,Android高级工程师,先后在腾讯、创新工场和百度从事Android开发的工作,目前在百度公司参与百度手机卫士的开发工作;硕士毕业于中国科学技术大学。他还是CSDN博客专家,2014十大博客之星,其在CSDN发表的博客多篇访问量达3万+,好评无数,并多次在GitHub上提交开源项目。
日前,CSDN采访了任玉刚请他分享Android开发的经验之道以及如何成为高级工程师。
任玉刚,百度Android高级工程师
CSDN:你是从什么时候开始接触CSDN的?它对你的学习和工作都带来哪些影响?
任玉刚:说起CSDN,早在大学时期我就注册了账号,但是当时更多的是把CSDN当做一种获取技术知识的平台,会去看一些技术文章和技术帖子,也会去下载自己所需的一些工具。真正发生转变其实是从工作开始的,在工作初期,由于我有了一些工作经验,所以就开始尝试着写一些技术文章。我刚毕业时做了大半年的C++开发,然后就转去做Android开发,正是这个时候我开始在CSDN上写一些Android相关的博客。我的早期博客还是比较简单的,更多是一种尝试的心态,但是我觉得我需要写一些有点深度的技术博客,这不仅仅可以加强我对一些疑难知识点的理解,也可以帮助广大开发者,这种对别人对自己都有利的事情是很值得去做的。
写博客对学习和工作很多时候会产生一些微妙的积极的影响,当然前提是博客要写得好。要想写好博客,首先要选择博客平台,这里我的看法是早期的时候尽量选择一些访问量大的博客平台,在访问量上面CSDN是最大的。之所以选择访问量大的博客平台,是因为这可以极大地增加我们的博客曝光率,一篇博客有大量的人来访问,这会在一定程度上鼓励作者继续写下去,毕竟写博客也是一件辛苦的事情。当然部分人也会选择在个人主页以及GitHub上写博客,这也可以,但是前期由于缺乏一些人气,就会导致自己写的博客很少有人去看,如果这个不影响你写博客的积极性和满足感,那么也可以选择个人主页以及GitHub。对于我来说,我一直在CSDN上写博客,同时也在GitHub上提交一些开源项目。如果博客写的好并且得到了大家的认可,这时作者其实是会有成就感的,同时通过写博客也可以提升作者的技术水平和知识的体系化,这都会为自己的工作加分。
CSDN: CSDN新推出了Markdown编辑器,有用过吗?如果有,在你看来,与其他编辑器相比,它有哪些优缺点?
任玉刚: Markdown之前在GitHub上我就有用过,后来发现CSDN也提供了Markdown编辑器,我的最近几篇博客也都是通过Markdown编辑器来完成的。在我看来,Markdown编辑器是一种比较新潮的编辑器,它具有很好的移植性,比如通过Markdown在CSDN上发表的博客就可以很轻松地搬到GitHub上,而传统的编辑器则不好做到这一点。另一点就是Markdown语法支持绘制图表,这也是传统编辑器所不能做到的。当然,Markdown编辑器的一个缺点就是有学习成本,不过这个成本并不大,基本上熟悉下Markdown的语法然后尝试着写一篇博客就可以掌握了。
CSDN: 在你的博文中大多数是关于Android开发的,大多数博文PV都很高,多篇访问量达3万+,好评无数,你是怎么做到的?在日常生活中你会通过哪些方式来提升自己的开发技能?
任玉刚:由于我一直是做Android开发的,所以我的博客也基本都是Android相关的。在我眼里,只要是对读者有用的文章其PV都不会低。因为我写博客时会尽量把博客写好,这样能够对读者产生更大的价值,同时会站在读者的角度尽量把文章写得通俗易懂,不然就有可能写出自己很好理解但是读者却难以理解的文章。在我的博客中有若干个主题,其中动画、插件化以及View原理这三个系列的文章其PV都很高,另外关于Android学习路线的文章PV也很高,这说明开发者还是对学习路线比较感兴趣的。
在日常工作中,除了完成开发任务以外还要多多学习和总结才可以。很多时候为了完成开发任务,可能我们并不会去把一个问题搞的很清楚,但是开发完成以后一定要抽时间去研究,去把这个问题研究清楚,同时平时还要养成总结的习惯,善于总结可以让知识体系化,即融会贯通,当知识体系化以后,面对一个技术问题,我们能够快速地找出最优的解决方法,一个优秀的软件工程师并不能仅仅停留在解决问题的层面上,还要关注解决问题的方式以及为什么要选择这种方式来解决问题。工作过程绝对是提高个人技术水平很关键的一点,因为工作才是实践,除了工作以外,业余时间也是需要适当学习的,有一点很重要,我们不能仅仅学习工作中用到的技术点,拿Android开发来说,Android的细节知识点非常多,很多情况下在工作过程中只能涉及到部分知识点,对于剩下的知识点来说就需要业余时间来学习,不然知识体系就不完成,知识体系不完整的话就更不用说融会贯通了。
CSDN:你对Android有着怎样的情结?在你看来,Android开发工程师的职场规划是怎样的?
任玉刚:我对Android是有情节的,因为最开始我并不是做Android开发的,但是正式接触到Android以后我就深深地喜欢上了Android开发,在那段时间我甚至都觉得能开发Android是一件很开心的事,到现在为止,我对Android开发仍然是十分热爱。
目前移动端开发是非常火的,Android开发当然也不例外。Android作为一种开源的移动操作系统,有很多值得开发人员学习的内容。但是有时候一些开发人员可能并没有意识到这一点,这样工作了几年以后就会觉得Android开发特别简单然后已经达到技术瓶颈了,而实际上Android开发达到技术瓶颈是很不容易的,只要继续向系统的内部实现深挖下去,我们就会发现还有很多东西我们不曾理解。
从个人角度来说,Android开发工程师的职业规划也不应该是仅仅停留在应用开发上,而要同时深入地研究Android的内部实现,这样一来就可以提高自己的编程功底,有利于开发人员向更高级别的技术岗位迈进,就算日后从事其他开发工作,深入理解Android的内部实现也是很有帮助的。
CSDN: Android逆向工程是什么?对于Android开发者而言如何学习?
任玉刚:Android逆向工程主要是指反编译和二次打包,通过反编译可以破解一些有用信息,而通过二次打包则可以产生一些山寨应用。Android逆向工程是一个很有意思的话题,碍于工作内容的限制,我本身对其研究的并不是很深入,如果开发者对其感兴趣的话,推荐大家阅读下逆向相关的书籍,比如《Android软件安全与逆向分析》。
CSDN: 你在GitHub上开源了许多项目,是你一个人在维护吗?活跃度如何?你设计这些项目的初衷是什么?你怎么看待开源社区的演进?
任玉刚:我在GitHub上发起并参与了一些开源项目,最众所周知的应该属插件化框架 DL(dynamic-load-apk)。 DL最初由我发起并得到了若干位同学的支持,在插件化知识的普及上发挥了一定的作用。我之所以会发起一些开源项目,是觉得开源是一件很有意义的事情,不仅能够为其他开发者产生价值,还可以体现个人的价值。但是,如果大家都不去做开源,都想着去采用现成的开源,那么将再无开源项目可用,因此开源是所有开发者的事情,只有每个开发者都有开源意识,开源社区才会得到持久的发展。我个人很看好开源,也许在未来的一天,开源软件将会占据整个市场,Android的开源就是一个典型的例子。
CSDN:你在百度公司参与百度手机卫士的开发,可否谈谈百度手机卫士下一步的规划是什么?有哪些亮点?
任玉刚:百度手机卫士是一款手机安全软件,分为Android和iOS两个版本,其中Android版本的功能最为丰富,而iOS版本由于受iOS封闭性的影响在功能上并不能得到最大的发挥。我目前参与的是百度手机卫士Android版本的开发,百度手机卫士Android版有手机加速、垃圾清理、病毒查杀、安全支付等许多有用的功能,大家可以体验下。关于百度手机卫士的下一步规划,这个问题并不好回答,但是我们的核心宗旨一直未曾改变,那就是:“全新简约极致体验,高效解决手机问题”。
CSDN:如何成长为高级工程师?请分享下经验。
任玉刚:这个问题相信不少开发者都会感兴趣,我之前在CSDN上写过一篇名为《 Android学习路线:如何成长为高级工程师 》的博文,大家可以去阅读下,这里我再简单介绍下:
首先是自我定位的问题,即要有技术追求,要朝着高级工程师的方向去努力,对于架构师乃至更高级的职位也是同样的道理;
然后就是需要足够的技术积累才能很好地把握技术 ,比如写博客、做开源这都是很好的技术积累方式,技术积累的过程中还要注意融会贯通,尽量让自己的知识体系化;
除此之外,还要通过阅读源码来研究Android的内部实现 ,所有这些都将有助于一个开发者成为高级工程师和架构师。
CSDN:你的下一步规划是什么?有想过要出书吗?
任玉刚:我的下一步规划是进一步加强自己的技术深度并逐渐实现技术的沉淀,具体来说我需要进一步地研究Android kernel层的实现思想、Linux的内核实现、编译工具的环境搭建,iOS我也打算入门下,这不是因为我需要学习iOS,而是因为了解iOS可以让我更好地理解Android。
关于出书这个问题的确有想过,并且目前已经写了一本Android的进阶类书籍《Android开发艺术探索》,书中包含了我精心挑选的Android进阶内容,其特色是理论和实践相结合,注重知识的体系化,并通过理解Android源码来更好地支撑上层应用的开发,此书目前即将出版,大家可以先保持关注。