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

2024-09-04 12:48
文章标签 进阶 工程师 菜鸟 资深

本文主要是介绍从菜鸟到资深工程师的进阶之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

发表于 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://www.chinasem.cn/article/1136066

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等