前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最干货Android开发者成长指南

最干货Android开发者成长指南

作者头像
用户1907613
发布2018-07-20 14:59:57
3860
发布2018-07-20 14:59:57
举报
文章被收录于专栏:Android群英传Android群英传

背景

今年4月,全球互联网引来了一个历史性转折点:根据流量分析工具 StatCounter 的报告,Android 首次超越 Windows,成为用户访问互联网最常用操作系统!Android 不仅在移动领域,在全操作系统内,都成为了当之无愧的霸主!无论你有志于成为领先企业的 Android 工程师,还是靠自己改变世界的独立开发者,现在都是进入这个领域的绝佳时机。

Android 技术如此受欢迎的另一个原因,也是因为其就业面非常广,无论是在当前的移动互联网,还是将来的物联网领域都有一席之地。特别是现在比较火热的智能家居、智能机器人、车载系统企业,他们也都需要 Android 领域的人才来让自己的服务无所不在。

然而,在这个大背景下,开设了 Android 相关课程的高校还是凤毛麟角,在可观的就业机会面前,人才却往往要靠自学成长。大多数人都是独自摸索自学,学的东西不成体系,无法构建自己的知识树,很容易迷失在具体的细节里面。自己学习的另一个弊端是,由于没有将所学的知识用于实战项目,过一段时间就非常容易忘记。

  • 如何系统化、高效率地学习 Android 技术?
  • 怎么样扎实入门?
  • 到底现在领先的科技企业,在寻找什么样的 Android 开发人才?
  • 如何提升自己在这个领域内的核心竞争力?

掌握这些问题的答案,将让你的成长事半功倍!

下面笔者将根据自己多年的 Android 开发从业经验,来具体分析下这个领域内的知识体系,帮助初学者快速入门。同时我也将分析市面上领先企业的业务需求,从而得出已经进入这个领域的工程师,该如何提高自己的核心竞争力!

Android知识体系

实际上在开发Android的过程中,需要很多知识,而有些知识也很难为其分类,但是总体上来讲可以分为上述五部分。

首先—UI方面,如果你将来的工作是开发Android应用的话,UI的知识你是必不可少的。

UI的知识大体也可以分成三部份——基础控件、自定义控件、动画。其中每个部分几乎都需要花费巨量的时间去学习,如果你写出非常漂亮的控件或者动画框架并开源出来,相信找份好工作是不在话下的。

第二点—架构方面,随着工作的需要及阅历(看代码)的增长,你可能会越来越不满意你自己写的代码模块了。这个时候,你可能就会涉及到架构方面的知识了。架构方面的知识主要包括设计思想,及选择合适架构的能力,这两者通常来讲是相辅相成的。每一种新的架构或设计思想问世往往是用来解决实际问题的,他们解决问题的侧重点各不相同,因此在什么时候采用什么架构或设计就非常考验程序员的阅历了。通常这部分的知识学起来最为困难,因为他仅仅是一种思想,如果你的代码量不多,或是接触的项目都比较小的话,你往往会觉得这部分的知识没什么用,最后自然而言又会忘记了。

第三点—性能方面,同样随着工程的体量越来越大,开发功能越来愈多,你会发现原来非常流畅的App可能会出现卡顿、OOM、ANR等现象。你百思不得其解,每次Google后,你可能会发现——原来实现功能的方式存在着许多性能问题。因此,在这个过程中了你得学会使用各种工具去分析代码的效率等。这部分的知识相对比较零散,也很难总结,更多的是一种经验的积累过程,因此工作多年以上的程序员都很吃香。

第四点—NDK方面,这一部分知识比较特殊,很多Android工程师在初中级阶段可能都不会涉及到。只有你在某些领域亦或是特殊的场景的时候才有可能使用NDK进行开发,比如说像流媒体、图像处理等场景你才会去进行NDK开发,它通常需要你有良好的C/C++基础,因此这算是一个比较大的知识体系了。

技术分析

总体上,目前市面上可以将互联网公司分为两类:

A. 没有实体产品的,以软件产品为主的互联网公司

B. 有实体产品的,将硬件和软件结合起来的互联网公司

A类公司往往偏向于UI及架构,性能稍次,并且大多数中小型企业会要求应聘者能熟练掌握市面上流行的开源库以节约开发成本。这类公司开发的App往往是纯虚拟的产品——社交通讯、各类工具、资源聚合等。这些产品因为竞争激烈,功能需求变化也快,所以版本迭代的速度会非常快。这个时候,一个好的架构就可以节省许多时间,它能快速的响应需求,并迅速添加新的功能模块。UI也是重点,在两个App功能差不多的情况下,拼的就是用户体验了,其中用户最能感受到的就是两点,首先是界面是否美观,动画是否自然;其次才是App是否流畅。

他们一般对人才的需求是这样的:

B类公司因为有实体产品,因此往往会要求应聘者具有某些特殊的技能,例如BLE、WIFI等。这类公司往往偏向于性能及NDK,UI稍次。在目前的大环境下,这类公司多数都在物联网产业链上,以智能硬件、智能家居、机器人居多,而这类公司的话,大部分其实都是传统企业转型而来,因此其开发的产品比较注重功能的完善及响应速度,UI的话反而会稍微丑陋一些。毕竟消费者买的是实体产品,配套的App就算再丑也得用不是么。

他们对人才的需求往往是这样的:

明确自己想去什么样的公司,或者对哪一类的业务更感兴趣,会有助于你更有的放矢地学习技能。

如何搭建自己的知识体系?

对于初学者来说,因为目前网络上充斥着许多免费的资源,无论是入门的还是进阶的都应有尽有,找到学习资料不难,难的是如何有选择地进行学习,并把知识纳入到自己的知识树上,而不是让众多知识点彼此孤立、零散地分布在自己的脑海中。

涉及到学习目标不同、基础不同,每个人的学习路径会不太一样,这里我以一个现成的学习路径为例,来说说如何从零基础开始,完成比较“通用型”的 Android 入门。

话不多说,先上知识体系示例:

这个图谱总结自业界口碑较好的 Udacity 和 Google 推出的 Android 开发入门认证项目,主要针对没有任何 Android 开发经验的同学。课程内容包括丰富的移动 UI、移动应用性能相关的知识点,并通过每周的线上直播,教授前沿的技术架构、第三方开源库的知识。课程全程依托实战项目,引导学员将所学知识运用到各类应用场景中,帮助学员构建、巩固自己的知识体系。

用3个月的时间,认真学习完大概可以达到下面的技能状态:

Udacity 和 Google 也为有基础的 Android 开发者提供进阶课程,学完后的状态大概是:

你会发现,Google 官方推出的 Android 开发的进阶课程中,主要提升的还是UI方面的知识——材料设计(Material Design)和动画框架。

需要说明,这两门课程都没有涉及到 NDK 开发,是因为刚刚步入职场的 Android 工程师并不特别需要掌握 NDK 开发技能,你完全可以在找到相关工作后再继续深入自学。

而在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 群英传 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
物联网
腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档