写点什么

Android 开发两年:扔物线课程怎么样

用户头像
极客开源
关注
发布于: 刚刚

关于 Android 的近况

大家都知道,今年移动开发不那么火热了,完全没有了前两年 Android 开发那种火热的势头,如此同时,AI 热火朝天,很多言论都说 Android 不行了。其实不光是 Android,iOS 也有类似的言论。


那么到底如何看待这一现象呢?


我的答案是:Android 还行,只是回归平淡了,没有了前些年的火热。

为什么 Android 还行?

如何看待一个行业行不行?有两点:这个行业有没有死亡?有没有很多公司提供这个行业的岗位?


拿塞班来举例,塞班完全死亡了,因为塞班完全被 Android 和 iOS 给替代了,并且没有公司来提供塞班的开发岗位。对于 Android,目前 Android 正如日中天,其在移动设备上的全球占有率不用我多说了吧,各种车载设备、电视等都是 Android 系统。若干年内,不存在一个新的平台来替代 Android,所以 Android 不会死亡。


在国内,不管是腾讯还是支付宝,其移动端产品对整个公司影响都非常巨大,腾讯的微信、阿里的手机淘宝、支付宝都占有至关重要的作用,各大公司都有 Android 端产品,所以这个岗位需求也是没有问题的。


从上述两方面来说,Android 没有衰落,只是它发展到顶峰了,很难再继续地保持快速发展的势头了。

为什么 Android 程序员难找工作了?

Android 程序员失业的事情大家不用担心,若干年内都不会出现。


但是近期的确不是那么好找工作了,原因有如下几点:由于 APP 创业风口已过,大批创业公司死亡,导致了 Android 岗位减少;一些公司并不需要一个 Native 的 APP,他们只需要在 APP 中嵌入一个网页;RN、Weex 对 Native 概念的冲击


在这个时候,你需要提高自己的技术,Android 高级工程师还是缺的。



本人也是众多 Android 开发道路上行走的一员,听了不少大神的知乎 live,自己也看了不少书,也和不少前辈交流过,所以在这里分享一下 Android 开发应该学习的书籍以及知识,当然,也包括一些方法,希望对更多想进入这个行业的人有所帮助。众所周知,现在移动开发早就不是最热门的程序员职业了,如果你没一点真功夫,仅仅靠两三个月的集训已经很难在这个行业中占有一席之地了。因此,想拥有真正的“真本事”是要花相当长时间的,我的这篇学习计划主要面向的人群是敢于花时间,切能坚持下来的同学,比如说:想从事 Android 开发的在校大学生,想进阶的在职开发人员,以及因为个人原因想从其它方向转向 Android 开发的程序员。

入门阶段:快速上手,增加自信

怎样做可以让初学者觉得编程是容易学的,是有趣的?那自然就是得到一些能快速看到结果的反馈,自己写的程序能立刻运转起来并实现一些效果,是非常鼓舞人心的,因此这个阶段的第一目的是通过学习能真正动手写两个程序,并能得到快速反馈,因此推荐一些相对简单的书籍。

1.Java 初级入门:

推荐书籍:《Head First Java》,《Java 从入门到精通》《Head First Java》不用多说,业界公认的 Java 入门佳作,如果你的编程底子非常薄,可以通过这本书快速学习 Java。而对于这本《Java 从入门到精通》,也许很多人嗤之以鼻,觉得是只教表面,不深挖原理的浅薄书籍,没必要看,但是这本书的好处在于,当你完全没接触过编程,没接触过计算机知识的时候,这本书是可以带你快速上道的,它不仅仅只教如何使用 Java 语言,它连如何搭建开发环境这种对于出入门的人来说非常头痛的事都有详细教程,因此,它对于刚刚入门的人来说,是非常友好的,如果,你没有任何编程经验,但想从 Java 入门编程,这本书是非常好的。理论上来说,这两本书选一本阅读即可。

2.Android 初级入门:

推荐书籍:《第一行代码》如果要开始这一阶段,请务必把 Java 初级阶段入门完成后再尝试。那怎样算是完成呢?起码用书中的知识自己写过 Demo,并且测试成功,例如,最基本的 Java 知识,包括:继承,接口,字符串,内部类,匿名类,集合,简单的多线程,Socket 网络通讯等等都有过亲自的实践,第一阶段就算是完成了,你说反射,范型,枚举,多线程,注解等知识你没办法理解?没有关系,这些都是第二阶段攻克的主要目标之一。至于第一行代码这本书,已经无需我废话,这在中国基本已经成了 Android 入门的标准教材,书中涵盖了 Android 开发知识的方方面面,例如如何搭建 Android 开发环境,Android 四大组件的使用,Android 网络通信的基础,如何使用开源库,如何使用 Git,如何进行本地存储等等。只要跟着这本书,把书中的每一个 Demo 都自己手动实现一遍,并在学习完本书后,自己试着综合所有已学的知识开发一个能自己玩的小 app,第一个大阶段——入门,就算彻底结束了。进阶:持续攀登技术之峰如果你已经完成了第一阶段,并且已经小有自信来到了这里,那我要说,进阶阶段可能会让你扫兴,因为进阶阶段的学习量可能是入门阶段的数倍,甚至上 10 倍,但是,既然已经走到这里来了,自然不能放弃。

3.Java 进阶,颠覆初学的认识

推荐书籍:《Java 编程思想》,《Effective Java》如果你已经读完了 Java 的入门书籍,也许会觉得:“Java 不就那么回事吗,用起来也挺简单啊,别跟我讲什么理论,我只要会用就行了!”但实际上,这个阶段也许会颠覆你之前对 Java 的大部分认知,我们将从 Java 的高级特性以及底层原理来给我们的 Java 知识树添枝加叶。《Java 编程思想》这本书近乎等于 Java 的权威教材,它详细讲解了 Java 的大部分细节,翻开目录,也许你会觉得许多知识你都学过,但是请相信我,这本书值得一字一句的从头读到尾,读完将让你的 Java 内功功力大进,上升几个级别。当然,读完这本书是考验人毅力的一大挑战,因为这本书的确有些晦涩难懂,经常看一遍看不明白,需要多看几遍,并且这本书近乎 800 页的篇幅(实际上这本书的页数更多,只不过最后一张图形用户界面和 Android 开发关系不大,可以不看)实在是相当挑战读者的耐力。《Effective Java》是 Java 使用者必看的书籍(无论你是哪个方向),它以几十条实战经验总结作为索引,让读者从各处细节上掌握 Java 的使用技巧,从而编写出高效可用的 Java 代码,当把这些经验了然于胸时,带着这些经验写代码,将会节省你大量的时间和代码量来获取到足够多的编程经验。


4.Android 开发进阶,以及设计模式的学习

推荐书籍:《Android 开发艺术探索》,《Android 源码设计模式解析与实战》学习完《第一行代码》后,你可能会使用 Android SDK 中提供的许多类库来开发 Android 应用了,但是,只会使用是远远不够的,我们必须掌握它们的运行机制和原理,以及我们还应该学习自定义一些类似与系统提供的组件的工具(例如自定义 View),学习这些知识,以上两本书再好不过了。它们对于这部分知识的讲解可以说是相辅相成的,这两本书同样是需要花大力气去阅读的,当这两本书被你彻底吃透以后,1 到 3 年经验的 Android 面试中,你基本已经可以拿下全部和 Android 有关的问题了。如果你已经吃透了《Java 编程思想》想必你已经和 23 种设计模式的其中几种见过面了,但也许还不是特别有感觉,这时候就需要系统的学习了,《Android 源码设计模式解析与实战》不仅讲了 Android 源码,更精讲了各种设计模式,学完这本书可以说是一举两得,又能学习源码,又能系统的学习设计模式。

5.实战环节

当你第 3 阶段完成以后,实际上就可以将这第 5 阶段和第 4 阶段并行执行了,这部分的知识绝大部分是书籍中所没有的,因此需要结合网上的博客文章和自己的大量动手实践来学习。首先,你已经在《第一行代码》中见过几种开源库了,现在,为了高效开发 Android 应用,我们应该学习以下几类主流 Android 开源库的用法和原理,如下所示:


1.网络请求(Retrofit2)2.图片加载(Glide/Fresco)3.事件总线(EventBus/Otto)4.异步操作(RxJava2)5.依赖注入(ButterKnife/Dagger2)


括号中列出的是该类开源库中的代表作,有些种类我列出了两个,但是初学的时候只需要挑一个学习就可以了。当然,开源库的种类远不如这些,还有例如数据库操作,图片选择器,大图查看器等许多种类,但是这些库用到的频率并不及以上五种,以上五种开源库几乎可以说是在任何 app 中都要使用到的,学会它们无论是对你开发应用的效率还是应付公司面试都颇为有用。学习开源库的方法主要是先在网上找到一篇靠谱的文章简单读读,如果你英文好的话也可以直接去它们的项目主页去读英文文档;然后把它们的简单示例写个 demo 或者直接用在你正在开发的个人项目中,用上去以后再根据代码,仔细研读解析的文章或文档,然后修改这些代码,尝试些高级用法。等你闭着眼睛都能在脑中默念出这些库的使用流程的时候,就可以再找一些深入分析的文章或者亲自去看它们的源码来学习它们的原理;学习原理是非常重要的,特别是在大公司的面试中,考察你是否理解你使用的库的原理也是相当重要的一个环节。到这里 Android 开发相关的基础理论知识就已经大致学习完了,这一节既然叫实战环节,那么你大量的编码量是少不了的,作为一个初涉编程的学习者,每天都保证一定的代码量或技术书籍的阅读量是少不了的,只有持之以恒的大量练习,解决实际开发中的大量问题,技术才能真正的快速提高。

6.计算机基础知识补缺

开头已经说过,Android 开发已经不是随便一个外行靠几个月的突击就能进入的低门槛行业了,市场上真正缺少的是更专业的开发者,或者说是中高级工程师。作为一个非计算机专业的非科班生来说,制约人发展的往往就是计算机基础知识,基础是个很奇妙的东西,很多人觉得基础枯燥难学又感觉不知道该怎么用,于是就放弃了基础的学习,但实际上基础这东西就像练体能,你在踢足球的时候射门铲球,头球倒钩,看起来固然很帅,但是在一场 90 分钟的球赛里,如果没有体能,会在比赛结束前就先累趴下,而计算机基础就类似于体能的作用,它供给你一个更专业的视角来看待编程和写代码,让你在不知不觉中写出高效的程序。如果你一个还未毕业的大学生,那你无需做更多的计划,只需要把学校的专业课每一科都学好就足够了,如果你能在大学期间参加一些这些方面的比赛,例如 ACM,无论对你的编程能力还是简历都大有益处。但是如果你已经踏入工作岗位,那肯定是没时间把大学所有的专业课都学一遍且学的很深了,那可以参照我以下的计划,抓住基础中的重点来学习。在我看来,和 Android 开发关系最密切的三门基础课:计算机网络,数据结构与算法,操作系统,下面会为每个种类推荐相关学习书籍。网络:《图解 HTTP》,《图解 TCP/IP》这两本书都很薄,讲的网络知识也不会特别深,因此学习起来是非常快的,其它一些讲解网络的书籍,例如《HTTP 权威指南》非常厚,也很晦涩难懂,虽然把 HTTP 讲的非常透彻,但是阅读起来耗费的时间太长,也非常费精力,因此在职的初级程序员就不推荐这样的书了。而这两本书几乎涵盖了 Android 开发的所用到的大部分网络知识,例如 HTTPS,HTTP,TCP/IP 的原理,以及一些基础网络知识例如七层协议等等,应付面试中网络部分的问题也是足够的了。数据结构与算法:《算法 4th》,《剑指 offer》《算法》是一本数据结构与算法的入门书,并且是用 Java 语言作为示例,因此如果你没有任何算法方面的经验,这本书是再适合不过了,即容易入门,又因为熟悉相关语言而不会感到陌生。而《剑指向 Offer》则是面试前准备的必备书籍,在大公司的面试中,无数算法题都出自本书,如果你没有跳槽的意愿,本书可以提升你的思维并为你未来的跳槽早做准备,如果你即将找新工作,那本书更是必备的武功秘籍。我目前也处在这个阶段,刚刚准备开始阅读这两本算法书籍。操作系统:由于这个阶段自己还没达到,所以还不知道有哪些比较合适的书籍。听群里的朋友说《30 天构建操作系统》是一本不错的书,但我自己还没有去了解过,这一部分等我学到这部分的时候再去详细了解和补充。高级:拓展知识面和大量实战


7.知识拓展

推荐书籍:《深入理解 Java 虚拟机》,《数据结构与算法—Java 语言描述》,Android/Linux 底层书籍在大公司的面试中,无论校招还是社招,都免不了问两道到三道 Java 虚拟机的题,例如 Java 内存模型,gc 算法等等,因此《深入理解 Java 虚拟机》这本书主要就是为了学习上述问题而存在的,当然,不仅仅是应付面试,读完了这本书,也算是彻底理解了 Java 底层的运作机制。


在第六阶段学完算法的同学也许会发现,《算法 4th》并没有包含动态规划等算法知识,而《数据结构与算法—Java 语言描述》正是补足这类知识点的好书,当然,这本书也不是必须要看的,如果你对自己的算法功底有更高要求,想深入学习,或者以后干脆想向这方面转行,并且在自己学有余力的情况下就可以向这方面多下功夫,这本书看完后,如果你还不满足,可以尝试着挑战一下传说中的无字天书——《算法导论》。


作为一个基于 Linux 内核的操作系统,Android 的许多运行机制都和 Linux 有关,如果你想更深入了解 Android 底层的内容,例如 Native 层的运行机制,Linux 内核的原理等等,就可以选择一些 Android 和 Linux 底层的书籍看看,至于具体是哪些书,我还没有了解过,如果以后我向这方面深入扩展(当然也可能不会),我再回来补充。


除了以上这些推荐的书籍,我们还有另外一些知识值得关注,例如 Kotlin。Kotlin 今年正式被 Google 正名,成为在 Android 上开发应用的首选语言,当然,市场上的应用从 Java 向 Kotlin 全面转型是需要相当长的时间的,因此 Kotlin 的学习顺序被我放在了稍微靠后的位置,但是,如果你已经完成了上述的所有阶段,不知道接下来该学习什么的时候,你就应该立刻开始学习 Kotlin 了。


除了新语言以外。一个好的开发者和其它开发者的一个很重要的区别就在于代码是否低耦合,高复用,这就涉及到了架构模式,架构模式在 Android 中最常用也是最流行的就是 MVP,因此学习 MVP 也是一件颇为重要的事情。


这里虽然列在了下面,但是我认为 Kotlin 和 MVP 的学习顺序应该在深入学习算法和 Android/Linux 底层之前,毕竟深入的算法知识和过于底层的系统知识和应用开发实际上已经相距甚远了,虽然学习它们可以提升思想,但是在某些方面来说,这些方向的具体知识已经和 Android 开发无关了,因此这两块是选学内容。以上我列出的书籍,除了《Head First Java》我都是亲自购买并阅读过的(第六阶段及以后的书还没有读完),但在这里我还想推荐一下很多网友都推荐的好书,它们我虽然没有看过,但是都口碑不俗,在这里我把它们列出来。


《Java 核心技术卷:卷 1》,《Java 核心技术卷:卷 2》这两本也是 Java 方面的经典书籍,其中卷 1 是可以作为入门书使用的,而卷 2 则是高级知识的进阶书籍。除了《Effective Java》不能被这两本书替代以外,如果你读了这两本书,我推荐的其它基本 Java 书籍就不是必读的了。《Android 群英传》,《Android 群英传——神兵利器》这两本书是国内 Android 大神徐宜生所著,第一本可以看做和《Android 开发艺术探索》具有同样作用的书,但是内容上比《艺术探索》略微简单,且并不能完全代替《艺术探索》,因此这本书可以作为互补书籍买来看看。而至于第二本《神兵利器》则是一本不可替代的书籍,你如果想找一本学习开发工具的书籍,这本书绝对合你的胃口,毕竟在 Android 开发的学习上,gradle,Android Studio,Git 等工具的使用也是不容忽略的一大块。

写在最后

由于本文罗列的知识点是根据我自身总结出来的,并且由于本人水平有限,无法全部提及,欢迎大神们能补充~


将来我会对上面的知识点一个一个深入学习,也希望有童鞋跟我一起学习,一起进阶。


提升架构认知不是一蹴而就的,它离不开刻意学习和思考。


**这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近 1 个月最新录制的,相信这份视频能给你带来不一样的启发、收获。




最近还在整理并复习一些 Android 基础知识点,有问题希望大家够指出,谢谢。


希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!


转发+点赞+关注,第一时间获取最新知识点


Android 架构师之路很漫长,一起共勉吧!


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Android开发两年:扔物线课程怎么样