我当Android架构师的那几年,缘起—发展—下坡路—赋闲—重新开始

前言

近年来,当程序员真的是越来越难了。这是事实,我从业到现在差不多八年多,名副其实的“Android”了,差不多目睹了这个行业的发展。

最近看帖子的时候我看见了一些人对那些喜欢Android,想学习,问问题的新人说的一句话:都2020年了,你居然还学Android?

看见这句话,当时的内心有些震惊,也有些感慨,就想说一下我的经历,写一下我的看法。

文有些长,希望大家耐心看完,文末有我给粉丝的福利。

缘起

我家是南方一个普普通通的家庭,父母都是地地道道的农民,家庭条件不太好。

我没考上好大学,大专计算机软件毕业后,浑浑噩噩来到这个社会,发现社会太难混了,钱太难挣了。当时看到Android培训班的广告,就选择了Android这条路。

后面我发现,干这行的,很多都不是科班出身,三百六十行,行行转IT。这是我后来多年接触到所有同事后总结出来的。

在培训班的那三个月是我过的最累也是最充实的日子。

每天早上五点起床,赶车,学习,吃饭,节奏很紧张,吃的是最简单的咸菜馒头,住的是五个人一起的小单间,但是我也无比感谢那段时间自己的努力。

培训班出来后,因为出色的表现和扎实的学习,培训班的老师内推了我去北京的一个小公司工作——那个时候,以我的学历和家庭条件,那样一份工作已经很让人眼红了。

发展

我在北京做了两年Android开发,工作之余自学了大数据。因为老家父亲得了癌症逝世了。

为了照顾老母亲,不得已,2014年从北京辞职回来南方,到杭州这个地方找了一份大数据的工作。说实话那时候大数据工作挺好找的,工资也翻了一番,甚是得意。

过年回家,以前的朋友都看我混的好,找我打听,我还很热心的跟他们介绍这一行,介绍北京的培训机构,鼓励他们也去学习。回头想想在北京吃的那些苦,真是值得。对自己的现状很满意。

就这样在码农的道路上一年年走着,工作在换,工资在涨,从前端玩到java,从java玩到Android。还不停的学习,各种知识几乎是轮流学。

别以为我有多爱学习多喜欢钻研技术,那都是被工作逼出来的。所以,学习这些,也仅学到能应付工作就完事儿了,老板也只要结果,不在意你对技术理解的有多深刻,程序员不是科学家。

到2016年底的时候,我跳槽了,换了一份24K的工作,然后就在24K这个水平停滞了,上不去了,我把这个认为是我的瓶颈,但我也没力气突破它了,就这样吧,挺好的。

由于习惯了贫困的生活,虽然这些年来赚了不少,工资水平在不断提升,但是我没有大手大脚的花钱,攒下了不少钱吧。

后面,我在老家贷款买了房,买了车,装修养车谈对象成家生小孩等等等等一连串的事儿,居然还真是应了老人常说的那句话“花钱如流水”,积蓄也花的干干净净。

虽然心痛,但换来的老婆孩子热炕头的生活,还是很幸福的。又努力干了一年,把10万的装修欠款结清了,还剩20来万的房贷。其实生活到这里,对于我一个农村出来的大专学历的人,已经很好很好了。家庭幸福,工作稳定,待遇不错,吃穿不愁,还有什么烦躁的呢,好好工作,好好生活就行了。

可是我这个人,天生就不是那种做一天和尚撞一天钟的人,脑子里很多想法,总把自己折腾来折腾去。

下坡路开始

2019年10月,我为了回老家陪小孩,从杭州离职回来了,在老家找了一份team leader的工作,薪资打了半折,凭借我多年的全栈经验,在这里带着一个8人团队做项目。

无奈小地方就是小地方,招人难招,招来的人水平不行。用也是他不用也是他,每天就是边安排任务、边开发、边解决问题、还要给团队做技术培训,给老板汇报工作等等等等。什么996?那也太幸福了,我们都是8-11-7,差点晕倒在办公桌上。

就这样,出活还是慢,老板着急,我更心累。

最后公司决定,迁移到省会,利用大城市的更多资源发展公司,我很理解,但是我去不了。所以最近离职了,提了两次离职,老板挽留了两次。最后一次跟他说我找好新工作了,待遇很高。于是他也没有挽留了,给我办了离职。虽然大家都不舍,但现实就是这样无奈。

决定还是回杭州,可是这一次在找工作的时候,感觉情况很不对。简历投出去,反馈很少,有约去面试的,问的问题也很深。做开发时间长了,一些基础概念反而答不上来。以前面试找工作问的多的都是项目经验,但是现在几乎项目这块不怎么问了。跟以前的朋友聊天,听到的声音都是:大环境不景气,企业生存困难,招人要求越来越高,竞争很激烈,互联网行业红利没有了,很多人都在逃离杭州等等等等。呵呵,可能是吧,但是我不会管这些,把自己练成金子,走哪儿都发光。

在看招聘信息和面试答题的时候,发现回老家的半年来,技术又更新了一轮,好多老的技术不用了,换新的了。很正常,这个行业就这样,要不停的学。于是我又静下心来,去学习和研究新技术。学着学着,我心里一种忧伤的情绪上来了。

我又在学习新技术,又在到处投简历找工作。我现在的状态,跟我6年前有什么区别?我不应该在这个行业越做越精通越做越专业吗?为什么又轮回到6年前?我学了那么多技术都会用,但也只是会用,会写业务代码,但很少了解底层。

不,这不是我想要的。做这个行业虽然能挣到点钱,但永远都是在这个轮回中。我想跳出这个轮回,不想再当个码农,可是又能干什么去呢?研究底层吗,没那个精力,大部分企业都是见好就收,只要东西做出来就好了。源源不断的任务让你精力耗尽。做开发管理吗,你可能有那个能力,但你不一定有那个机会。

赋闲

赋闲在家半个月,看看招聘,打打游戏,复习知识。每天都在想。我要不做这个的话,做什么去?什么都不好做。我要做这个的话,这样的状态是不是还将继续持续下去?

会那么多技术,却感觉自己要失业了一样。简历投出去了,客气的跟你回一句不符合招聘要求,不客气的直接没下文。想不明白我做错了什么,可能年龄大了注定要被淘汰吧。

刚参加工作的时候在哪儿都是单位年龄小的,现在到哪儿都是单位年龄大的,这一年一年的后继来者不断的加入这个行业。那些老兵都去哪儿了?这个行业不像医生教师那样越老越吃香,真的是吃青春饭的。

投了二十多份简历,收到四五个面试通知,还都没通过。唉,在这个行业摸爬滚打多年,一直以来的自信,在这一刻都被击垮。

我现在也想好了,下周还有两个面试,如果还没有offer的话,就弃坑转行创业去了。可能上天就想把我逼到创业这条路上,让我做一番成就吧!就像马云当年找工作因长的丑被拒绝,创业失败4次,失声痛哭,那种心情相信没有多少人能体会。

人不磨砺不能成大器,是挫折也是机会。在这里也与每位同行共勉,无论这行业有没有出路,我们都是优秀的,都是最棒的,都是这个社会的金子在发光的。要懂得左手温暖右手,相信明天会更好!

最后

说了这么多,并不是想制造焦虑,也不是想劝退。

客观来说,有一个说法是对的“穷学IT,富学商”,IT这行的确是见效最快的改变命运的途径。不管是实习生还是正式员工,程序员的薪资待遇相对于公司其他部门都是最好的,这个是毋庸置疑的。

但是,程序员真的离不开学习,而且,这里说一下,不是歧视小城市,毕竟我也是农村出生,小地方的IT真的没什么出路,大家要想求发展,想学技术长本事,就得去一线城市。

学习是一个应该贯彻终生的事情,成为生活的一部分。大家如果想要继续稳定的工作和生活,保持学习,保持与最新技术接轨是必不可少的。向下面这些东西,都要好好钻研。

希望这些能给大家提供一个学习的方向:

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。有**Android架构视频+BATJ面试专题PDF+核心笔记等资料。希望能够帮助到大家提升技术。如果大家想要获取的话,可以简信我【666】免费获取哦也可点击查看详情**~

(一)掌握java

Android应用是由Java语言进行开发的,SDK也是由Java语言编写,所以我们要学习java语言。另外,虽说kotlin语言得到了Android官方的热推,但是kotlin也是编译成了java语言再运行的。对于Android来说,只要SDK没有用kotlin重写,那么Java语言是都需要学习的。而且Android apk的后台服务器程序大概率是java语言构建,所以学习java也是一种必然。 那么Java中哪些东西是我们Android程序员需要学习的呢?由于Android程序员习惯了 C V 代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像 泛型,多线程,反射,JVM,Java IO,注解,序列化等,都是被 CV 的对象,而程序员是不懂原理的,具体内容如技术导图所示;

(二)掌握全方位性能调优

高性能编程和性能调优共同决定了Android平台的代码执行的高性能。这也给我们指明了努力的方向:我们即具备写高性能代码的能力,同时又要具备修改别人代码并使之具备高性能的能力,这些都是copy代码学不来的。

以下是性能优化的思维导图:高性能代码编码实战,是带领大家将代码写起来;用户体验及资源消耗优化,是带领大家从用户体验的角度去修改现有的代码。

(三)掌握NDK技术

音视频/高清大图片/人工智能/直播/抖音等等这几年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以Android NDK技术已经是我们必备技能了。要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且OpenCV/OpenGl/ 这些又是图像处理必备知识,这些都需要在实战项目中去学习掌握。

(四)学习前沿技术

现在去很多公司面试,企业除了你具备基本的能够写一个高性能app的能力后,一般都会在自己的app里面加一些现有的相对较 666 的技术,这些技术我们称之为前沿技术。他们一般包含热升级,热修复,App Instant,强制更新,组件化路由架构Arouter,RxJava,IOC架构方法,Hook技术等等,当然,这些技术你不能只会用,你需要知道他的原理,有时候,你还需要知道如何对这些架构进行改进。

(五)学习跨平台开发flutter

混合开发的flutter现在已经逐渐变成了主流的混合开发框架,另外由于阿里系的强大存在,导致阿里 系的公司都在用Weex混合架构,这些都是一个Android工程师开拓视野,走向未来必不可少的基本技能。

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页