专访邓凡平:从水利水电专业走向高级架构师的程序之路
2014-5-7 10:26| 发布者: vincy西西1010| 查看: 458| 评论: 1
(APKBUS配图) 邓凡平 资深Android开发工程师,对Android架构设计和实现原理有深刻的认识和理解,此外他对Linux内核、C/C++/Python相关技术,以及高性能网络服务器和多核并行开发等也有一定研究。
以下为小编对邓凡平作者的采访内容:
APKBUS:请介绍下您自己(包括学习背景、工作经验).
邓凡平:中科院电工所的研究生,本科是华中科技大学。读大学的时候考过计算机二级,但是第一次上机挂了,补考才过的。 研究生学的是超导磁体,搞得东西比较杂,比如低温(液氮温度,零下200多度)光纤传感器,电磁场计算等。 07年毕业后,第一家公司是中科大洋,从此开始IT生涯。这个公司是国内罕见的技术实力派公司,有20多年的历史,在广电行业傲视群雄多年。当年极端小白的我今天能有幸在这里和大家见面,从源头上非得感谢中科大洋不可。 后来去了中科创达和叠拓,以Android技术为主。 APKBUS:邓老师,据了解,您在大学就读的是水利水电专业,在硕士研究生的时候学习超导磁体,而现在您是一位专业的IT从业人员,什么促使您走上IT之路? 邓凡平:其实原因很简单,中科大洋能解决北京户口。面试的时候,虽然专业不对口,但是读书时的一些经历还是说得过去,例如07年毕业前我还写过一本到今天仍是有限元计算领域的畅销书《ANSYS 10.0有限元分析自学指导》。所以面试也没怎么为难我就进去了。 当然,进去以后,肯定是受过不少磨难,自己也需要付出更多努力。
APKBUS:这一路走来,您从软件开发中获得的感悟是什么?
邓凡平:先讲一个经历,去大洋大概3个月以后,做了人生第一个商业软件。那个时候的小白程度如下: 1 一个比较资深的同事完成了一个webservice的转码服务器,叫TCWebService。 2 我的工作是完成一个类似的打包WebService,叫RCWebService。 3 当时技术水平很弱,只能照猫画虎把TCWebService中的"TC"换成"RC"。...... 当然,随着对IT技术的慢慢了解,后续的技术实力提升就非常快了。现在回想起来,感悟很多: 1 在工作中,大部分情况下,没有什么东西是学不会的。这一方面给了自己信心,一方面也在时时刻刻提醒自己要虚心。是啊,你能学会,人家也能学会,所以有什么值得骄傲的呢? 2 做事情要有方法,不可蛮干。要多思考,多总结,才能少走弯路。 3 虽然行业不同,但它们对工程师的素质的要求却大体相同。例如学习能力,沟通能力,团队精神,人生或工作态度等。所以,一时之间的技术水平可能有高低之别,但真正长久决定并影响工作或事业发展好坏的却是这些基本素质。
APKBUS:据了解,最近您推出了一本新书——《深入理解Android: Wi-Fi、NFC和GPS卷》,而这书是“深入理解Android”系列撰写的第三本,也是该系列专题卷的第二本。这本书对Android学习者的专业知识有何要求?
邓凡平:这本书写出来非常厚(我自己也没想到,比卷1多了大概100多页),看起来很专业,但实际上我写的时候却是一个初学者的水平。所以,读者应该有信心和耐心。前面说了,我都能做到,你们肯定也能做到。我花了1年时间,年轻人更有时间和精力,半年时间就应该能从小白到这本书的水平了吧? 我在写本书的时候,也经常考虑读者学完这本书以后能干什么。我自己是很有困惑的,所以和审稿专家有过一番讨论。在书的附录中,网页地址为: http://blog.csdn.net/innost/article/details/20280565 另外,这本书的来历也有些故事,见http://blog.csdn.net/innost/article/details/21557989
APKBUS:关于Anroid学习的图书中,您的书一直深受大家的喜爱,先是之前的两本“深入理解Android”,现在这本新书也很受大家关注,那接下来,您还有著其他新书的计划么?
邓凡平:写这种大部头的书太耗费精力了,有悖当前移动互联网时代所强调的小步迭代,及时反馈的精神。接下来有时间的话会完成一些前瞻性和基础性技术的研究,然后发些博客,帮助读者在1-2周内就能掌握其技术脉络和基础理论。目前已经完成关于SELinux的文章3篇,见http://blog.csdn.net/innost/article/details/19299937。
APKBUS:您从事Android方面的研究有很多年了,对Android也有很深的了解,以您的理解Android是一种怎样的结构?此外,您对Linux内核、C/C++/Python相关的技术,以及高性能网络服务器和多核并行开发等也有一定的研究,你觉得Android和他们之间有何关系?
邓凡平:除了Android外,其他所列的知识都是在大洋公司掌握的,尤其是高性能网络服务器的开发,对后来写几万行左右的C++程序非常有帮助。 从知识的角度来看,虽然它们看起来完全不同,但其设计思想基本相通。举个例子,08年我们开发网络服务器时,也是采用的进程间通信。例如(同一台机器上)A进程通过socket给进程B发送一串命令,进程B解析这个命令,然后去执行对应的操作。大数据传输则是通过在进程A和进程B之间建立共享内存来完成的。 再看Android 的Binder,二者是不是有异曲同工之妙?所以,在很多时候,我们碰到的具体内容在表象上截然不同,但其本质却并无多大差别。 所以,这对我们工程师有了进一步的要求,那就是知其然,还得知其所以然。这样才能做到融会贯通。
APKBUS:现在很多软件开发者想成为一位优秀的架构师,而您作为一名高级架构师,谈谈对软件架构师的认识?
邓凡平:1. 虽然每个公司定义架构师的职责都不相同,但架构师也需要具备一些基本技能:较为广博的知识面。这项技能对团队组建尤为重要,因为你得知道哪个模块是短板、哪个模块是核心。 2. 要有不断学习和改进的欲望。 3. 某个时间、某个阶段要能迅速明确目标。知道要做什么,比知道怎么做有时候更重要。
APKBUS:据了解Android系统架构对程序员很重要,那么开发者在学习这一过程中应注意哪些问题?
邓凡平:学习的方法论很重要,我在之前的访谈中都多次介绍过,读者不妨看看: http://www.csdn.net/article/2013-05-02/2815118。下面是一些摘要: 我的学习方法是以点带面,建立自己的知识结构。例如,工作中,往往只需要集中全力解决一点或几点问题就可以了。但这些点背后一定有一个较完整和深入的知识结构。所以,工作做完后,还需要继续学习背后的知识结构。以多核并行开发为例,09年做了一个FTP服务器,用到了多线程网络开发的技术,工作内容很快就定型了。但我觉得多核并行开发是一门新兴的技术,而我不想停留在仅会熟练使用多线程API这种程度,所以后续还花了不少时间去研读多核并行方面的专著。所以,我觉得不管读者是在开发自己的产品也好,还是在修改bug也好,一定要努力从工作中提炼、积累出一个完整的知识框架。 这个方法说起来简单,做起来还是有点困难。因为它要求工作之后还得投入大量时间学习,把知识点串成面。而且,学这些知识的好处一时半会很难体现,需要耐心。
APKBUS:如何在竞争如此激烈的移动互联网环境中保持和提升自己的核心竞争力呢?您有没有什么意见或者建议给Android学习者?
邓凡平:IT行业里要学的东西非常多,更新也很快。每个人都有不同的学习和解决问题的方法。心态很重要,希望大家能保持“stay foolish, stay hungry”的心态
APKBUS:不同的Android开发阶段,需要掌握的知识也不同,更清晰的了解自己处于哪一阶段哪一水平对开发者来说很重要,您可否对学习Android的开发者提供一个发展规划呢?
邓凡平:做了2年的framework,感觉这一块已经进化很好,比较完善了,从知识汲取的角度看,也没有太多新意了。所以去年就花了一年时间学习点门槛较高的WiFi,NFC和GPS。从我自己的经验来看,开发者应先完成基础知识的学习,这个阶段的目标是掌握的知识越广越好。然后在此基础上再选择一个有门槛,有发展前景的专业方向进行深挖。 我其实希望读者能跟随《深入理解Android》这一系列书籍一块成长和发展。我在《深入理解Android系列书籍的规划路线图》一文也提到过。不知道亲爱的读者有没有跟上这套书的脚步呢?
APKBUS:现在,您是怎么分配一天的时间的?
邓凡平:健康很重要,所以一周必须有2-3天花2个小时去健身房锻炼。 平常的话,下班后就继续看看书,学习点新东西。虽然每天时间都不多,大概1个多小时,但每天都能坚持如此。近7年下来,读者想想整个时间累积起来该有多少呢?所以,积累很重要,坚持也很重要。
APKBUS:在移动互联网时代,Android系统占据一席之地,Android的发展众说纷纭, 你是如何看待Android的未来?
邓凡平:Android将来很重要的一个发展方向是向企业领域进行拓展。在这一块,三星是走在最前面的,例如它积极实现美国国防部制定的移动设备管理规范,http://iase.disa.mil/stigs/net_perimeter/wireless/smartphone.html。在此,很希望国内手机厂商能早点布局,少说多干。 |