五年开发经验杭州竟找不到工作:Android开发真等于废人?

最近有读者在后台给我留言说,学Android难找到工作,是不是Android在走下坡路,前景是不是不那么乐观了。

而在知乎上的问答关于这种类型的问题也像雨后春笋一样,冒出了不少:

image
image

针对这一系列问题,也为了解答读者的疑惑,小编特意收集资料对Android现状和未来的发展以及作为一个Android程序员如何提高自己的核心竞争力做了一个总结:

文中资料可在GitHub上免费下载。

首先我们来看看互联网现状:

如今的互联网,延续了2018年的态势。虽然前些年,每到年底的时候大环境都不好,然而来年照样春暖花开。但是2018下半年的颓势,在2019年春天并未得到缓解,所以现在的互联网环境是真的不好了。

首先各大公司争相优化员工,小公司我就不提了,咱就只说大公司。先有阿里、百度、京东、网易、美团和滴滴,再有外企甲骨文和IBM。前些年各大公司优化员工的时候都藏着掖着,而且用词很含蓄,都说是正常的人员流动和业务调整。今年就不同了,没必要藏着掖着了,而且有些公司由于补偿到位,还裁出了一片好评。

最开始大家以为只是移动端环境不好,到现在才发现,是整个互联网环境都不好了。所以,谁也别笑谁,大环境不好,谁也跑不了。

百度前段时间公开财报,2019 Q1亏损3.27亿,这是百度自2005年8月5日登陆纳斯达克后,第一次出现季度亏损,百度股价大跌。与此同时,腾讯和今日头条的广告收入也受到影响。究其原因,是很多广告主缩减了广告投放预算。缩减广告投放预算的背后,还是因为缺钱。互联网就是这么奇妙,一环扣一环,大环境不好,公司和员工同样难受。

再来说说市场的需求:

这个想必是很多人比较关心的一个问题,说Android开发市场饱和了,找工作难找,所以在纠结我到底要不要学习,要不要考虑换行。

不得不说,前几年的移动端的开发很火,为什么?因为一个行业刚兴起,智能手机发展的快速让人震惊,加上4G时代的时候,短视频的兴起比如抖音,快手,火山等等,再加上创业的越来越多,基本上创业都需要做一个自己公司的App,以上种种原因综合下来导致移动开发人才特别紧缺,再加上5G时代的到来,移动端对市场的需求还是很大的,可以说随便能鼓捣出来点东西都很容易找到工作。

而现在明显降温了,对人才的要求也越来越苛刻,现在搞一个公众号就可以创业融资了,App 不再是刚需了,所以跟前几年比需求确实少了很多。

但是跟同类其他编程行业比移动开发依然需求蛮大的,这种现象只能说明以前是「疯狂」,而现在才是「正常」,所以那些说 Android 开发饱和了,我并不认同,因为我看到各大招聘网站 Android 跟 iOS 开发的职位跟其他岗位的招聘比并没有少,所以所谓的「饱和」只是一种从「疯狂」到「正常」的错觉而已。

为什么感觉不好找工作:

这个也是很多人的疑问,说投了很多简历,都没有回应,总感觉今年工作特别难找。这个在这里解释下原因:

1.不知道我的读者们关注经济不,我老板是做投资出身的,所以跟着他我也了解了不少知识。从15年下半年开始,中国经济特别差,企业亏损严重,股票大跌,投资人手上也没多少现金了,所以看到16年下半年很多公司倒闭,老板跑路,我亲身经历的一好哥们公司倒闭了,还拖欠了两个月工资没发。这还只是上海这边,相对影响已经算小了,如果你仔细观察,应该能发现小城市经济更差,我是亲身体验过的,16年回家,家里很多煤矿倒闭,房地产不经济,钢铁厂亏损严重,村里很多人都没有工作,我是亲眼见证的。

2.因为移动开发前几年的火爆,导致很多新兴的培训机构大举招聘移动开发,所以这几年你会发现培训 iOS、Android 开发的人特别多,我自己是能感受到的,收到的一些简历比以前培训的多多了。而且相对来说培训iOS的人要更多些,我自己也是培训出来的,我这里并不是看不起培训的。只是人越来越多,质量也是越来越差,现在很多培训的都是伪造简历来求职,所以你会发现应届生、没工作经验的人找工作较难些,因为没工作经验的初级太多了,而现在企业也优先选择有工作经验的,现在再也不像几年前招不到人需要自己培养了,现在可选的人一大把,我为什么要先招进来再培养你呢?

到底该如何选择:

所以综上,真的别杞人忧天,沉下心来学好基础,提升技能比什么都重要,如果你找不到工作,只能说你学的还不够好,或者能力还不达标,并不能说明没有这个岗位的招聘,以个人能力的不行来否定整个市场的需求是弱者的行为!

还有很多人纠结到底是选择 Android、iOS、web前端还是后端?虽然我是做Android开发的,但是我必须客观的说,没有什么区别,谁也不知道以后 Android、iOS 谁把谁打败了,谁也不知道web前端还是后端以后更吃香,我能给到你的建议是看你的兴趣所在,别纠结太多,学好了哪一个都能找到一份好的工作,先跟着你内心的感觉学好、学精一门,而且编程语言都是互通的,以后你都会有机会接触其他领域,目前第一重要的是全身心的投入你现在想要从事的职业上,吃饱饭比什么都重要!

所以这个时候,出色的开发能力能让你的开发职业生涯更加顺风顺水。

下面我想结合我的经历给大家讲一下几点:

  • 如何系统化学习 Android 技术?(Android 知识体系)
  • 企业到底需要什么样的 Android 开发人才?(Android 市场行情)
  • Android 学习的方式都有哪些?(Android 学习方式)
  • 对 Android 学习和提升的一些建议。(Android 提升建议)

Android 知识体系

image

在 Android 开发的过程中,需要很多很多的知识,而有些知识也很难为其分类,在这里,我把它们分为上述五个部分:UI、架构、性能、NDK、其他,其他则可以细化为代码风格,学习能力,第三方库等。

  • UI方面

首先是 UI 方面,我相信大多数人都是开发 Android 应用的,所以 UI 的知识,必不可少。UI 一共分为三部分:绘制、布局和触摸反馈。要想写出漂亮的 UI 搭配动画,这需要花费巨量的时间,可能已经有特别多的朋友和我一样,在一直跟进扔物线(朱凯)的HenCoder系列了。如果你可以写出非常漂亮的控件或者动画框架并开源出来,我相信,你找份好工作已经没有问题了。

UI开发知识体系:

image
  • 架构方面

这个方面是卡年限的一个东西。随着工作的需要以及阅历(看代码)的增长,我们总是会越来越不满意自己写的代码模块,比如我,就深受这个的苦恼,我经常会出现三个月前写的代码,自己都看不下去,强迫症的我,一定会把它翻写的。但如果项目周期短的你,千万不要像我一样做。

当你不断改写封装自己的代码的时候,你可能就已经涉及到了架构方面的知识啦。架构方面的知识主要包括设计思想,及其选择合适架构的能力,这两者通常来讲是相辅相成的。每一种新的架构或设计思想问世往往是用来解决实际问题的,他们解决问题的侧重点各不相同,因此在什么时候采用什么架构或设计就非常考验程序员的阅历了。通常这部分的知识学起来最为困难,因为他不仅仅是一种思想,如果你的代码量不多,或者接触的项目比较小的话,你往往会很少触及到这部分的知识,最后自然而言又忘了。

所以在这方面我建议大家在工作之余,多参考 GitHub 上开源的完整项目,也要多写点自己的项目,提升自己的代码量和架构能力。

移动架构师知识体系:

image
  • 性能方面

性能方面相信开发稍大型 APP 的工程师体会尤其深刻了。随着 APP 工程的体量越来越大,开发功能越来越多,你会发现原来非常流畅的 APP 可能会出现卡顿、OOM、ANR 等现象,除了前面韩神所提到的内存泄漏,可能你还会因为其他问题导致性能表现不够优秀。而这部分的只是相对比较零散,也很难总结,更多的就是你的经验积累,所以多年经验的程序猿更受企业的青睐。

性能优化方面知识体系:

image
  • NDK方面 这一方面的知识比较特殊,很多 Android 开发工程师在初中级阶段可能都不会涉及到。在开发中我们可能只会在特定的领域才会用到 NDK 进行开发,由于我也没遇到过,所以暂不多讲。

NDK模块开发知识体系:

image

Android 学习方式?

我认为最主要的一点就是主观能动性,或者说兴趣,如果你对 Android 开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,自然是确立一个比较正确的学习路线。据说我们参会的还有一些应届毕业生或者还没开始工作的朋友。可能还在学习中很迷茫,我这里先给大家说一下我的学习经历。

学习 Android 无非几种方式:

  • 看书类

此类可能比较全面,但也意味着过时的问题,我不是非常提倡,但书籍是人类进步的阶梯,你们可以考虑。其实我也买了挺多相关书籍,但自从习惯在网络上学习后就不看了。

  • 线上课程直播或者录播

这个可能是初学者当下比较受欢迎的学习方式了,但所讲知识通常比较基础,而且学习速度慢,但效率确实挺高的。这也是我在入门 Android 的时候用的最多的方式。采用这种方式学习的时候通常会有一个毛病,就是喜欢边看边写,这是我不提倡的,我提倡看一段写一段。在前期你可以不用一整段都看完,以小节的方式学习后再写代码。前期可能你会觉得自己像在背代码一样,但我不可否认,这确实是效率挺高的方法。但真的太费时了,至少我在工作后没用过这种方案。

  • 看博文、看别人的开源项目、看官方文档、官方例子代码

这是我现在用的最多的一种学习提升方式。一般可以通过上面的看书或者看录播的方式学习到完整的基础组件和代码编写,但这时候你用基础的组件实现出来的东西美观度通常比较局限。但当你加入公司后,产品会设计出各种新颖的效果,而这些效果并不能通过原生控件实现,这时候,网上超大量的资源就涌现出来了。掌握 GitHub 正确的搜索姿势,通常能让你事半功倍。而这个时候,一个熟悉的英文阅读能力和理解能力将展现的淋漓尽致。随着开发经验的积累,你会发现你的开发速度直线飙升。

Android 提升建议

成为一名Android开发者很容易,但是要成为一名成功的、突出的Android开发者却不那么容易。这需要付出很多的努力,耐心,奉献和毅力才能做到。

我并没有什么捷径或者简单的方法来告诉你让你成为一名成功的开发者。但如果你愿意全身心投入并付出努力的话,你肯定会得到你应得的成功的。

应大家的请求,我这里给大家提供一些提升建议,仅供参考。

  • 开始阅读更多的代码

大部分的开发者都不会抽时间去阅读其他开发者所写的代码,他们大多数时间只是花在写他们已经知道的事情上。但那并不利于你成长为一名优秀的开发者,也不会增长你的见识。我建议大家阅读同事的代码,让你对你们的项目更加了解,当你对公司的产品代码足够了解后,你给老板提加薪的时候才更有底气。 有的人会说,咱们公司就我一个 Android 开发者,我看谁的代码呢?GitHub 上那么多优秀的开源应用和类库,我建议你们去阅读并开始学习它们,每天 30 分钟的代码阅读量是个非常好的开始。你将会惊讶的发现,还有如此多美妙的东西是你没见过的。

  • 克服对未知的害怕

Android 系统很大,非常大。你不可能在一两个月内完全掌握它。随着学习越深入,你会发现越多的内容需要学习。作为一名初学者,很容易也很正常地出现这种对未知恐惧的害怕。我也不例外,曾经我学习 RxJava 的时候,我看了很多很多的博文但持续了整整一个周,依然不懂,这时候觉得 RxJava 真是太难了。在这种时候,不妨先放下它一段时间,过些日子再去学习你会觉得如鱼得水的。比如我,前面就在GitHub 上开源了RxJava2Examples尝试去克服对未知的恐惧吧,学习那些你确实需要用到的东西,能够让你开始手头正在构建的应用,然后慢慢地开拓你的视野。

  • 尝试开始写博客

写博客或许是一件相当费时的事,或许你写的博客只是阅览了多篇文章后的总结而已,或许你写的博客一点都不深入,但但是!!!别人的永远是别人的,作为一个已经写了很多博文的我来说,我所收获到的东西,不是这点时间能比拟的。因为只有你足够懂了,你才能讲给别人听。

  • 开始贡献开源库

GitHub上有很多很棒的开源库,但由于一些特殊的原因可能作者并没有时间维护它。尝试去为开源库贡献你的源码,你会得到非常非常非常大的反馈的。

除了为别人开源库贡献,你也可以开源自己的代码。图片压缩在项目中挺常用的,在编写我们公司的项目的时候,我自己写了图片压缩,后面觉得挺好用的,所以直接把它开源到了GitHub上。这个过程非常的 nice,不仅学习到了特别多的知识,而且通过大家的测试,我的开源库的伸展性更佳。开源的过程有很多的东西是需要你学习的,而且这有助于你成为一名优秀的开发者。

  • 花一些时间来学习 Android 最佳实践

要使自己比其他开发者更加出众,并能构建出整洁美观而又功能完善的应用,你需要开始学习一些 Android 开发最佳实践。除此之外,你还应该多去关注市场发展,看看最近流行的库都是怎么用,并尝试阅读它们。

总结:

最后小编想说:当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

想要拿高薪实现技术提升,薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

以下是今天给大家分享的一些独家干货:

整套Android架构视频+BAT面试专题PDF+实战学习笔记+思维导图+学习路线:

Android架构视频:

image

BAT面试专题PDF:

image

实战学习笔记:(附源码解析)

image

思维导图:

image

学习路线图:

image

文中所有资料都可免费分享的,如果觉得恰好对你有用,可以点此处免费获取全部资料。

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~ 点GitHub获得更多Android相关资料。

你的支持,我的动力;祝各位前程似锦,offer不断!!!

推荐阅读更多精彩内容