Android:职业饱和停滞不前的程序员该如何逆势而上?想稳定最后还是得拼实力!

2021-03-24 10:42:25 浏览数 (1)

随着国内移动互联网的高速发展,各类应用软件(app)如雨后春笋般涌现,许多应用程序甚至成为超级app,一些活跃用户过亿的应用程序成为国民app,这些app的兴起与程序员这个群体密不可分。

快速发展的行业、互联网巨头的光环、国民级的应用程序带来的成就感、远超出普通行业的薪水,每年都在吸引着大量的程序员。

然而,在吸引涌入的同时,竞争也变得越来越激烈,程序员的35岁门槛已一度成为社交媒体热议的话题,中年焦虑成为了我们程序员心中无法打开的心结。

那么,作为Android程序员,我们应该如何自救?建立起什么样的竞争力才能让使自己摆脱焦虑并在漫长的职场道路上不掉队呢?

此刻身处风暴中心的的程序员们又该如何逆势而上?

唯有不断学习,不断更新自己的知识和技能,在一家公司找到自己独特的价值,让自己拥有不可替代性,永远居于前位,不被末位淘汰。

即使被清退,也有过硬的本领迅速找到更合适的工作。

而对于一些不爱学习的半吊子程序员来说,被清退可能就意味着灾难,技术水平低,简历也单薄的可怜,投出去多少都很难收到面试机会。

接下来我们先来看看程序员学习需要注意的几个点以及:

Android移动开发晋级的三个“相对条件”

第一:兴趣

这事不展开说了,每个程序员都知道,做码农,如果不能乐在其中,是很痛苦的一件事,因此,入行需谨慎

第二:静气

如果你新入行,菜鸟级,你的工作主要是改bug,不停的接受改bug的任务,总之,都是小事,这时,也许你会焦虑,我的对策是:马上定一个目标学习计划,主动学习,因为大学里的知识体系基本无用,Android不难,三个月会有小成。

第三:平台

自行车再快,也没有宝马快。努力固然重要,平台也很关键,因为那里有很多大牛人可以迅速带你成长,如果你现在还没有一个好的平台,你就泡一些大牛出没的论坛,看几本好书,找机会换到宝马平台上去。提示:换平台的时机很重要,您至少得有大众的实力,宝马平台才考虑接收你吧。

Android技术发展路线

晋升轨迹:Android初级开发程序员---中级---高级--软件架构师--系统架构师--项目经理--首席技术官

这里放上一张不程序员的薪资情况:(如下图所示)

各阶段对于技能要素的要求:

入门初级阶段:

掌握Java基本知识(或任何其他面向对象语言),需要掌握Android SDK软件开发工具包,多看Android相关的文档,IDE (例如Eclipse),这些是必不可少的。顺便学习一下JavaScript脚本基础。掌握这些基本上已经可以算是入门了。

晋升中级阶段:

想晋升为到高级Android工程师至系统架构师的职位,很重要的一点就是学习研究源代码,直接查阅Android的源代码(这是看李宁老师的书得到的启发),源代码很容易从网上获得。同时,Android很大程度上是基于Linux内核的,所以学习 Linux的相应API以及各种操作也是十分必要的。还有,常用混合移动开发框架(例如:AppCan)。编译原理,高并发网站架构设计等技能。

高级发展阶段:

再往上想发展到项目经理,还需要掌握Android 软件安全分析技术、软件开发常用测试、界面交互式系统设计,同时要补充些项目管理方面的知识,比如:软件项目风险管理常用团队协作开发工具需求分析设计设计模式。

要做到公司首席技术官的位子,更多的是从架构考虑,包括:数据库系统优化、Windows Server服务器架设管理、网络安全技术与解决方案(Cisco)、海量数据库解决方案、大型服务器负载均衡优化技术等等。这是个需要绝对实力的职位。也是我的终极目标。

面试门槛越来越高

你是否有过这么一段经历,一直做着OA,CRM管理系统等传统项目,简历技能开头第一行,基本都是“熟悉Android四大组件”,然后下面接着就是熟悉XXX。然后不断列名词,举例一下:

  • Android基础扎实
  • 熟悉四大组件…
  • 熟悉OKhttp…
  • 熟悉RXJava…

这个,是否就是你的简历套路???

但是你发现,这样的简历,没有丝毫亮点,收到的面试机会更是少得可怜,而且还是低质量的外包居多。

于是,你就看了一些书和网上搜一堆面试题答案,加上了一些高大上的名词来修饰,比如dalvik内存调优、热修复、MVP/MVVM、人脸识别、响应式框架等。

这样一来面试是有了,可是面试官一上来,就一顿连环问!!!

你说你有做过dalvik内存调优,那你说下大图加载时为什么有的图片有1M都不会OOM,有的图片只有200K就报OOM了?也完全没有超过网上所说的16M、32M的限制啊。你们是怎么解决大图加载的呢?

你说你们用了热修复,在哪个业务场景用的?里面的原理是怎么样的?分析下tinker和andfix的区别?你用过sophix吗?可以猜下它的实现原理吗?(这是让我造航母吗?深深地庆幸自己拧螺丝拧了好几年没下岗)

什么是响应式编程?(响应式编程是一种面向数据流和变化传播的编程范式~~就问你这种高逼格架构师专业术语懵不懵逼)RXJava是如何实现链式调度、线程切换的?

Jetpack用过吗?jetpack里面有些什么(纳尼?) 面试官:我们是大公司,很少用第三方库,我们都自己手写,你手写过Retrofit这样的框架吗?(尼玛…)

当然,最后面试还是失败了...

从这里可以看出,现在面试越来越难,已经不是简简单单看看书,掌握点简单的理论就能通过了,更多的是考察一些开放性的问题,比如“有没有遇到一些坑”之类的。

也许你会说,要遇到坑,也要有实战场景,你不让我通过面试,进公司实战,哪来的实战经验。话虽如此,但是实际情况我们也要接受!

技术晋升路线参考

道理其实大家都知道,但是实施起来就遇到了问题,所以这里我推荐最简单的方式:

这里先给大家一完整的Android晋升路线,话不多说,直接上干货:

从架构基础开始,分了8个模块来逐步从基础进阶到架构师的环节。

架构师筑基语言基础
Android框架体系架构
Android 360°全方位性能调优
设计思想解读开源框架
NDK模块开发(音视频开发系列)
微信小程序

Hybrid 开发与Flutter

最后干货分享

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

要想面试通过率高,除了提升技术平时刷面试题也是必不可少的,面试前做好准备是对面试的一种尊重。

最后再分享一些面试相关的干货:

Android相关源码解读

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

Android BAT高级开发面试题及答案解析

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

0 人点赞