从菜鸟到资深工程师的进阶之路

article/2025/10/20 14:21:50

专访任玉刚:从菜鸟到资深工程师的进阶之路

发表于 2015-12-22 08:2511131次阅读| 来源 CSDN31 条评论| 作者 夏夏

专访 iOS Android 任玉刚 开发者 CSDN博客
allowtransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-12-21%2F2826532-Android&type=3&count=&appkey=&title=%E4%BB%8E%E4%B8%80%E5%90%8D%E8%8F%9C%E9%B8%9F%E6%BC%94%E5%8F%98%E4%B8%BA%E8%B5%84%E6%B7%B1%E5%B7%A5%E7%A8%8B%E5%B8%88%EF%BC%8C%E5%9C%A8%E4%BB%96%E7%9C%8B%E6%9D%A5%EF%BC%8C%E4%B9%9F%E6%9C%89%E8%87%AA%E5%B7%B1%E7%9A%84%E8%BE%9B%E9%85%B8%E5%8E%86%E7%A8%8B%EF%BC%8C%E5%B0%BD%E7%AE%A1%E4%BB%96%E5%B7%B2%E6%88%90%E4%B8%BA%E4%B8%80%E5%90%8D%E8%B5%84%E6%B7%B1%E5%B7%A5%E7%A8%8B%E5%B8%88%EF%BC%8C%E4%BD%86%E4%BB%96%E4%BB%8D%E7%84%B6%E4%B8%8D%E6%95%A2%E8%87%AA%E7%A7%B0%E4%B8%BA%E2%80%9C%E9%AB%98%E6%89%8B%E2%80%9D%EF%BC%8C%E5%9B%A0%E4%B8%BA%E6%8A%80%E6%9C%AF%E6%98%AF%E6%97%A0%E6%AD%A2%E5%A2%83%E7%9A%84%EF%BC%8C%E5%AF%B9%E6%8A%80%E6%9C%AF%E5%BA%94%E8%AF%A5%E6%8A%B1%E6%9C%89%E4%B8%80%E9%A2%97%E6%95%AC%E7%95%8F%E7%9A%84%E5%BF%83%E7%90%86%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1450854657504" width="22" height="16"> 摘要:从一名菜鸟演变为资深工程师,在他看来,也有自己的辛酸历程,尽管他已成为一名资深工程师,但他仍然不敢自称为“高手”,因为技术是无止境的,对技术应该抱有一颗敬畏的心理。

任玉刚,百度公司Android资深工程师,《Android开发艺术探索》作者,热爱分享和开源,常年活跃在CSDN和Github。除此之外,他还是CSDN博客专家,2014十大博客之星。从一名菜鸟演变为资深工程师,在他看来,也有自己的辛酸历程,尽管他已成为一名资深工程师,但他仍然不敢自称为“高手”,因为技术是无止境的,对技术应该抱有一颗敬畏的心理。


任玉刚,百度公司Android资深工程师

CSDN:请先自我介绍下,目前的工作领域以及公司。

任玉刚:大家好,我是任玉刚(微博),是一名Android程序员,目前我在百度公司参与百度手机卫士的开发工作。我时常活跃在CSDN和Github上面。

CSDN:从最初的Android菜鸟到如今的Android高手,这一路走来你有哪些辛酸历程?给你最大的感悟是什么?

任玉刚:虽然我在Android开发技术领域有了一些自己的理解,但是仍然不敢自称为“高手”,因为技术是无止境的,我们对技术应该抱有一颗敬畏的心理。

目前我从事Android开发工作已经有3年了,和大多数Android开发者一样,我也是一步一步过来的。尤其是我12年刚接触Android开发时,由于缺乏专业的指导,整个学习过程基本上都是以摸索为主,这个阶段就会感觉进步很慢,甚至有时候还会犯一些比较低级的错误,比如曾经用View去post一个runnable,然后在run方法中做耗时的操作。这种摸索的学习方式在一年后有了改善,毕竟摸爬滚打了一年,我也渐渐有了自己的学习方式和心得体会,就这样持续努力地学习着,到目前为止可以算是对Android应用开发有了一个不错的理解吧。

如果问我这三年的学习生涯中最大的感悟是什么,那我想说:“应该是学习路线和技术书籍的缺乏吧“。为什么这么说呢?

首先说学习路线。Android开发给人的感觉是门槛很低,因此有不少人会说Android很简单,实际上Android开发即简单也不简单。简单是因为它入门快、上手简单,不简单是因为Android的知识点比较琐碎,如何从琐碎的知识点中理解Android的本质并形成一个完整的知识体系,这是不简单的。相信不少开发者会有这种感觉,那就是觉得Android的好多知识点自己都懂,但是又不是特别懂,这点在面试中体现地比较明显,“我做应用开发完全没问题,但是大公司的技术面试却很容易失败”这种感觉相信很多人都会有,这就是碎片化的知识未形成一个完整的体系的表现。如何对Android建立全面的理解?这需要一种有效的学习方式,在学习过程中需要知道哪些知识点需要深挖、哪些知识点需要融会贯通、哪些知识点了解即可。有关Android学习路线这是一个深入的话题,并且有可能没有最佳的学习路线,因人而异。我结合自己在Android应用层的学习过程,描述了一个适合我自己的学习路线,大家可以适当参考下:http://blog.csdn.net/singwhatiwanna/article/details/49560409。

然后说一下技术书籍。如果大家看了上面的那篇Android学习路线,就会发现那上面提到的很多知识点都有一定的难度,并且也没有相应的书籍去专门介绍这些知识点,我曾经翻遍了图书馆的Android书籍,也没有找到一本书有讲述View的滑动冲突这方面的内容。所幸的是国内的Android技术圈比较活跃,网络上会有一些比较不错的技术文章可以供开发者提高Android开发水平,但美中不足的是,不少技术文章都比较零散并且也没有那么全面。这个时候一本好的技术书籍,它的作用无非是巨大的。

CSDN:为何想到写《Android开发艺术探索》这本书?契机是什么?

任玉刚:相信很多人已经阅读过《Android开发艺术探索》并且也很理解我写这本书的初衷,因为我在前言中做了详细的描述。我在前面有提到,国内的Android开发者在提高的过程中缺乏合适的学习路线和技术书籍,主要是市面上入门书籍太多了,但是我们不否认入门书籍为Android技术普及所做的巨大贡献,然而仅仅通过入门书籍的确无法进一步提高开发者的技术水平。为了让Android开发者更好地提升自己的技术,于是我写了这本书,读过书的朋友都知道,书中很多知识点都是新颖的、网络上无法搜索到的。

从内容上来说,《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。书中从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。可以看到,书中通篇几乎没有入门知识,更加侧重于Android知识的体系化和系统工作机制的分析,通过这本书的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。

有很多读者和我反馈,说这本书适合面试,很多公司的一些看起来很难的面试问题书中都有提及。但是我写这本书的目的不是为了让大家更好地面试,而是更好地提高技术从而成为高级工程师。

CSDN:写这本书期间有没有遇到过困难,又是如何克服的?

任玉刚:写书的过程是艰辛的,遇到最大的困难就是难以坚持。由于白天需要上班,晚上有时候还有加班,因此写书的时间就只有周末和每天晚上下班后了。大概书写到第4章的时候,有时候写着写着就会突然觉得好难受,压力好大的感觉,但是想到这本书对广大Android开发者的意义,想到我写这本书的初衷,我就会觉得这件事必须坚持下来,很多时候我们缺乏的就是坚持。回想起写书的过程的确很辛苦,但是书出版后我收到了很多读者对我的反馈,其中最多的反馈就是类似于“谢谢你写了这本书,让我很多知识点都豁然开朗”这种了,我很欣慰,总算心愿得以完成。可能有人说,写书是为了赚钱,这个了解的人都知道,通过写技术书籍来赚钱其实是不划算的。就我来说,写这本书的目的是为了更好地提高Android开发者的技术水平,同时传播我的技术,我是一个热爱开源、热爱分享的Android程序员。

CSDN:在你看来,Android开发者在学习过程中最棘手的问题是什么?

任玉刚:其实棘手的问题有很多,这里列举几个,比如自定义View、滑动冲突、IPC、源码阅读等等,Android开发者都深有体会,自定义View算是一个比较难的话题了,滑动冲突就更不用说了,很多开发者都搞不清楚如何处理滑动冲突。IPC的话主要是指AIDL和Binder相关的一些东西,这个在Android开发中真的很重要,至于源码阅读这个就更难了,很多人估计会觉得无从下手,其实这些都是可以理解的,因为它的确有难度,但是它们都是可以克服的。

自定义View和滑动冲突其实归根结底就是View相关的东西,把诸如View的滑动、事件分发以及View的底层工作原理搞懂,自定义View和滑动冲突就可以很好地解决了。

这里再说一下源码阅读的事。首先要学会下载源码,推荐的下载方式是从Google的源中把整个aosp的mirror都下载回来(大约80G,需翻墙),然后想看哪个版本就checkout哪个版本,还可以体验下编译源码的过程,这个事情看起来复杂,其实做起来很简单,大家可以尝试下。源码下载回来后,就可以阅读了,怎么阅读呢?给两个建议,第一:不要纠结太多的代码细节,第二:选择一个自己感兴趣的入口看下去。很多人一上去看源码就纠结代码细节,Android源码是非常复杂的,纠结细节只会让自己望而却步,纠结多了就“走火入魔”了。因此看源码前期主要以整体流程为主,尽量把系统的工作机制搞懂。为什么要选择一个入口看下去呢?因为Android源码很庞大,从哪里开始呢?我的建议是找一个自己感兴趣的入口,比如Activity的启动过程,从startActivity方法看下去,直到底层的AMS。

再强调下,阅读Android源码是一个合格的Android工程师必须要掌握的技能,不阅读源码是不可能理解系统的工作原理的,不理解工作原理就无法真正地提升技术水平。

CSDN:日程工作中你会通过哪些方式提升自己的技能?

任玉刚:在Android开发的学习过程中,我主要通过如下几种方式来学习:

  1. 在公司进行产品开发;
  2. 阅读Android源码和Android官方文档;
  3. CSDN写技术博客对知识进行总结和分享;
  4. 关注Github中优秀的开源项目并提交自己的项目;
  5. 在公司内部做技术分享;
  6. 阅读相关技术书籍;
  7. 业余时间持续学习。

CSDN:你认为作为一名高级工程师应具备哪些职责?如何向高级开发者进行演变?有哪些学习方法吗?

任玉刚:高级工程师首先要对Android应用层的理论体系有一个全面的理解,然后对Android Framework层也要有一定的了解,这2个方面都是Android层面的。除此之外,高级工程师还要有一定的技术架构能力,包括架构设计、代码规范、性能平衡等,还有很重要的一点,那就是高级工程师要能够指导初中级开发人员。

高级工程师是一个逐渐积累的结果,一个开发人员从初级工程师通过不断地自我学习和自我提高,当技术能力和项目经验都提升到一定程度后,也就达到了高级工程师的状态了。至于学习方法,因人而异,但是也不会相差太大,可以参见上一个问题中我对Android学习方式的描述。

CSDN:你在CSDN上的博客访问量挺高的,现在还会经常写博客吗?除了Android方面,你还会关注哪些领域?你用的比较多的语言有哪些?为什么?

任玉刚:我现在还是会坚持写博客,只是频率上较之前低了不少,我最近的一些博客主要侧重对Android学习路线的探讨,因为我觉得很多开发者需要找到自己适合的学习方式,因此我愿意把我自己对Android学习过程的理解分享出来给他们参考。

我现在的学习内容已经不仅仅局限于Android了,我目前开始关注iOS和HTML5的开发,包括最近很火的React-Native我也会去看,此外最近也在关注架构设计相关的东西。但是对于我来说,Android开发肯定是我主要关注的,iOS和HTML5我应该不会去深入地研究。其实这个话题涉及到深度和广度的问题,对于我来说,我倾向于先广度、再深度、最后再广度。比如在学校时可以多学一点技术来扩展广度,工作后肯定要专注于深度,当对一门技术达到一定深度后,可能又需要加强下广度来扩展自己的思维方式。


http://chatgpt.dhexx.cn/article/6IJxWNax.shtml

相关文章

kafka sasl_ssl配置

一、切换到存储证书的路径 我这里在家目录中的创建了ssl文件夹 mkdir ssl && cd ssl 二、生成服务端密钥库 keytool -keystore server.keystore.jks -alias localhost -validity 365 -genkey验证证书: keytool -list -v -keystore server.keystore.jks …

KAFKA SASL配置 记录

kafka配置SASL 第1步 将kafka_client_jaas.conf/kafka_server_jaas.conf/kafka_zoo_jaas.conf三个文件放入kafka的config文件夹中,文件中配置用户,superadmin用户必须配置。 kafka_client_jaas.conf内容如下 KafkaClient { …

WIN10 VS2019 编译Cyrus SASL

环境 下载安装Visual Studio 2019 安装时在【工作负载】必须勾选【使用C的桌面开发】下载cyrus-sasl源码 从Github上clone或者下载zip包,我本来是需要2.1.26,但是从从https://www.cyrusimap.org/releases/下载对应版本的源码包编译都有问题,…

Kafka3.0 SASL安全认证

下面主要介绍Kafka两种认证方式 kafka验证方式: SASL/PLAIN:不能动态添加用户配置文件写死账号密码 SASL/SCRAM: 可以动态的添加用户 SASL/PLAIN方式 cd /usr/local/kafka/kafka_2.12-3.0.1/bin/ ## 复制一份saslcp kafka-server-start.…

集成OpenLDAP与Kerberos实现统一认证(三):基于SASL/GSSAPI深度集成

文章目录 1. 写作背景2. 既定目标3. 重要概念3.1 SASL3.2 GSSAPI3.3 SASL与GSSAPI的关系3.4 saslauthd3.5 Kerberos化 4. 核心原理4.1 基于SASL/GSSAPI实现Kerberos账号登录OpenLDAP4.2 基于olcAuthzRegexp规则映射Kerberos与OpenLDAP账号4.3 基于saslauthd进行委托认证 5. 安装…

kafka sasl java_Kafka安装及开启SASL_PLAINTEXT认证(用户名和密码认证)

前些日子要封装一个kafka的客户端驱动,配置了下kafka环境,发现配置复杂度完爆rabbitmq很多倍啊,而且发布订阅模式使用起来也很麻烦,可能就胜在分布式了吧。 kafka需要java环境,自行安装java sdk 1.8. 官方加载安装包&a…

go kafka 配置SASL认证及实现SASL PLAIN认证功能

用户认证功能,是一个成熟组件不可或缺的功能。在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本以后逐渐发布了多种用户认证功能,弥补了这一缺陷(这里仅介绍SASL)。 本…

kafka集群开启sasl认证

kafka集群开启sasl认证 sasl认证 sasl 是扩展C/S模式验证能力的一种认证机制。它可以规范客户端和服务端传输应答和传输内容编码,简而言之sasl决定了认证的规则,即客户端如何存储身份证书、客户端与服务端如何校验密码都由sasl决定。当我们的客户端通过…

mysql sasl_SASL认证失败的原因(authentication failed)

SASL认证失败的原因(authentication failed) (2012-06-15 00:45:43) 标签: 杂谈 authentication failed) SASL认证失败的原因可分为如下几个可能的方面: Permission问题:对系统用户的SASL Auth尤其重要,要保证postfix用户(smtpd)对…

Kafka安全(以SASL+ACL为例)

目录 1 Security2 SASLACL实现用户及权限认证2.1 下载2.2 Kafka服务配置2.3 修改Kafka 服务启动脚本2.4 配置server.properties2.5 启动Zookeeper2.6 启动Kafka 集群2.7 ACL2.7.1 admin2.7.2 生产者2.7.3 消费者2.7.4 sharga用户2.7.5 shargb用户2.7.6 说明 2.8 生产者客户端代…

安装sasl出错

场景:python项目需要用到 pyhive0.6.4 pyhdfs0.2.2 thrift0.13.0 thrift_connector0.12 thrift_sasl0.3.0进项镜像构建时, 报错:error: command gcc failed with exit status 1 解决方法: 1.ubuntu系统: sudo apt-…

sasl认证原理

SASL - 简单认证和安全层 SASL是一种用来扩充C/S模式验证能力的机制认证机制, 全称Simple Authentication and Security Layer. 当你设定sasl时,你必须决定两件事;一是用于交换“标识信 息”(或称身份证书)的验证机制&#xff1…

kafka sasl java_Kafka 集群配置SASL+ACL

** Kafka 集群配置SASLACL 测试环境:** 系统: CentOS 6.5 x86_64 JDK : java version 1.8.0_121 kafka: kafka_2.11-1.0.0.tgz zookeeper: 3.4.5 ip: 192.168.49.161 (我们这里在一台机上部署整套环境) kafka 名词解析: Broker: Kafka 集群包含一个或多个…

kafka sasl java_Kafka SASL 安全认证

java client 中添加 SASL 设置信息: Java client consumer properties配置.png 注意 sasl.jaas.config 配置中的分号必不可少。 package kafka; import java.time.Duration; import java.util.Arrays; import java.util.Properties; import org.apache.kafka.clients.consumer…

SASL讲解,以及在Spark中的应用

是什么? SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。      SASL提供了一个通用的方法为基于连接的协议增加验证支持,而XMPP使用了一…

关于SASL的介绍文档

http://docs.sun.com/app/docs/doc/819-7056/6n91eac4q?lzh&aview 简单验证安全层 (Simple Authentication Security Layer, SASL) 介绍 SASL 为应用程序和共享库的开发者提供了用于验证、数据完整性检查和加密的机制。开发者可通过 SASL 对通用 API 进行编码。此方法避免…

文献管理与信息分析期末考试答案

可以在考试界面按ctrlf,对照着下图自己敲关键字搜索相应题目,感觉这样更方便点,也不会漏下题目。(仅供参考)

使用NoteExpress做文献管理

NoteExpress 是北京爱琴海软件公司开发的一款专业级别的文献检索与管理系统,具备文献信息检索与下载功能,可以用来管理参考文献的题录,以附件方式管理参考文献全文或者任何格式的文件、文档。 除此以为还有EndNote等其他文献管理软件&#x…

Zotero——一款文献管理工具

1.简介:Zotero是一款开源的文献管理工具,可以提供文献管理、浏览等众多服务,可以极大地为我们的科研和论文写作提供便利。 2.下载与安装 官方网站:Zotero | Your personal research assistant 我们可以直接在其官网上下载该软件…

使用 bibtex 进行参考文献管理

原  文:Bibliography management with bibtex 译  者:Xovee 翻译时间:2020年11月9日 使用 bibtex 进行参考文献管理 LaTeX 中直接支持参考文献的管理。本篇文章介绍如何使用thebibliography环境和BibTeX系统来管理参考文献。 注意&…