从事 Android应用开发4年有余,现在工资7500。很不爽!怎么办?
阅读原文时间:2023年07月11日阅读:2

最近到某论坛看到一个帖子:


坐标北京,在一个公司从事android应用开发4年有余(毕业至今没换过公司)。公司利润越来越大,工资却每年长1000,如今才到7500。琢磨着换工作,又不想扔下这四年来逐步成型的产品。想谈工资,却因为股东是亲戚,又不好开口。纠结。

想把个人技能写出来,各位同僚评价下,看下我处于什么水平。

1、功能设计方面:针对一个需求(功能),从思考到出程序图版,画完整的业务流程、程序流程、建表、编写程序规则,一些列文档2个小时内完成。然后给应届生讲一遍,然后指导所有技术细节让他门完成。
一个功能,基本在7-10个界面,各功能之间有公用的页面。

2、技术方面:除了及时通讯没涉及过,其他行业应用,各功能通吃,不是吹牛,安卓应用无非包括网络请求,本地数据存储,系统资源调用,第三方sdk ,这四个方面,这第三方sdk看文档就能搞定,这没什么技术含量,其他3块做了4年非常熟练了。因为数据操作数据库,有一套成熟的本地与服务器数据苦同步机制。所以只要有需求,实现方式就分分钟有了。并且服务器数据接口已经封装了框架,只需建表,分分钟出接口给手机用。界面方面,复杂的1个小时,简单的10来分钟,太简单的更快,并且适应各分辨率。

3、效率方面:因为经常建表,写了一个自动建表的工具。若服务器有现成的表结构,直接生成sqlite文件,并生成实体类。

封装了一个脚本语言,专门写操作服务器表的数据接口,接口只需要建表,然后写sql语句把一些验证加上,定义返回json 格式,基本几分钟一个。

四年,练就一身本领,独揽设计,开发,帮小孩开发,小孩们每次说,哥你弄东西真快,我心里都呵呵一句,有他吗啥用,工资跟你差不离。

因为公司控制成本,开发人员都是应届生,网站那边4500,安卓的4500留不住人,现在5000了最近招了个2年经验的期望12k,留下7k试用,来了后,各项技术细节不熟练,尽管能做,但是太慢。

哎,想换,又舍不得4年的成果。很纠结。


其实从这位朋友描述中,可以知道他对业务逻辑非常的熟练,7500在北京确实偏低。四年工作经验1W到2W才是正常的。

但是,他通篇只讲了业务逻辑,没有提及其他的一些比如:数据结构和算法的功底,底层原理的了解和实现。我觉得这些才是程序员的核心,因为每个项目有每个项目的业务逻辑,当我们抛去他的业务逻辑,剩下的才是他们的共同点,这些东西才是程序员比较核心的价值体现。

这位朋友说放不下4年的项目成果,我不知道这是指技术层面的还是其他诸如精力、希望层面的。单从技术层面讲,留下的是代码,带走的是技术,没有什么放不下的,对吗?最后我觉得还是跳槽比较好!

什么才是编程中真正有价值的东西?

在我们身边存在一个普遍现象,很多人从事Android开发多年,走过的湾和砍,不计其数,经历的辛酸难与外人道也。可是技术却难以提升、止步不前,薪资也是能看着别人水涨船高,自己却没什么起色。

大多数的程序员都面临一个普遍的问题:技术的广度和深度难以兼顾。

每个企业的业务方向都不一样,用的技术也不一样。运气好,面试的时候甲方公司用的技术刚好跟你学的一样,结果技术面一问,你只答的出四大组件有哪些,生命周期支支吾吾也说不太清楚,view的绘制流程模棱两可,垃圾回收算法一知半解, 性能优化一窍不通。这要是能找到offer, 那就见鬼了。

很多人在开发过程中只是浮在表面,忽略底层源码分析,面试求职的简历也没有进行修缮和突出重点,自然求职不顺,加薪无望。

所以解决这个问题的最好办法就是:抓住不变量。要知道,底层知识永远都不过时。算法数据结构永远都不过时。基本的程序设计理论永远都不过时。良好的编码习惯永远都不过时。分析问题和解决问题的能力永远都不过时。强大的学习能力和旺盛的求知欲永远都不过时。你大脑的思维方式永远都不过时。

最近从一个技术大牛那里薅到一份十万字的Android主流开源框架源码解析,全篇资料都是他手打出来的,整理了一个多月的时间。里面不仅有详细的解释还有对应案例的源代码都有提供,方便咱自己可以实操,我给两个字评价:膜拜!王者晋级,就在眼前,不相信的可以跟着一起来看看!

1.深入解析微信 MMKV 源码
MMKV 是微信于 2018 年 9 月 20 日开源的一个 K-V 存储库,它与 SharedPreferences 相似,但又在更高的效率下解决了其不支持跨进程读写等弊端。

2.深入解析阿里巴巴路由框架ARouter 源码
组件化被越来越多的Android项目采用,而作为组件化的基础——路由也是重中之重。因此详细的分析阿里巴巴开源的路由框架ARouter。从源码的角度解释为什么这样使用,以及避免做什么,让你使用地更加顺滑。

3.深入解析AsyncTask 源码(一款 Android 内置的异步任务执行库)
AsyncTask 是 Android SDK 中提供的一个用于执行异步任务的框架,在 Android 兴起的早期被广泛使用,但如今已经被 RxJava、协程等新兴框架所取代。虽然它存在着一些不足,但我们还是可以尝试了解一下它的实现原理以及存在的不足。

4.深入解析Volley 源码(一款 Google 推出的网络请求框架)
Volley 是 Google 开发的一款网络请求框架,目前已停止更新。虽然目前大家的关注焦点都在 Retrofit、OkHttp 等第三方网络请求框架,团队的项目中所用的也是这两个框架,但 Volley 中还是有非常多优秀的设计思想值得我们去学习的。

5.深入解析 Retrofit源码
在Andrroid开发中,网络请求十分常用,而在Android网络请求库中,Retrofit是当下最热的一个网络请求库。

6.深入解析OkHttp 源码
OkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。随着OkHttp的不断成熟,越来越多的Android开发者使用OkHttp作为网络框架。

7.深入解析ButterKnife 源码
作为 Android开发者,大家肯定都知道大名鼎鼎的butterknife。它大大的提高了开发效率,虽然在很早之前大家就开始使用它了,但是只知道是通过注解的方式实现的,却一直没有仔细的学习下大牛的代码。所以有必要系统的分析下 butterknife的实现原理。

8.深入解析Okio源码(一套简洁高效的 I/O 库)
Okio 中有两个非常重要的接口——Sink 以及 Source,它们都继承了 Closeable,其中 Sink 对应了我们原来所使用的 OutputStream,而 Source 则对应了我们原来所使用的 InputStream。
Okio 的入口就是Okio 类,它是一个工厂类,可以通过它内部的一些 static 方法来创建 Sink、Source 等对象。

9.深入解析SharedPreferences源码
SharedPreference 是一个 Android 开发自带的适合保存轻量级数据的 K-V 存储库,它使用了 XML 的方式来存储数据,比如我就经常用它保存一些如用户登录信息等轻量级数据。

10.深入解析EventBus 源码
EventBus 是一个 Android 事件发布/订阅框架。
传统的事件传递方式包括:Handler(消息处理机制,一般用于更新UI)、BroadCastReceiver(广播接收者)、Interface 回调。

EventBus优点:

  • Activity、Fragment、Service与线程之间的通讯是很常见的,EventBus正好可以屏蔽一些线程切换问题,简单地实现发布订阅功能。
  • 代码简洁,使用简单,并将事件发布和订阅充分解耦。

11.Android 自定义注解初探
由于之前用到的很多开源框架如 GreenDao、EventBus、ButterKnife、ARouter 等都使用了自定义注解,因此有必要去研究一下自定义注解。

12.View 的工作机制源码分析

13.Android 触摸事件分发机制源码分析

14.Android 按键事件分发机制源码分析

15.深入解析 Handler 源码
Android 的消息机制是基于 Handler 实现的。很多人以为,知道了 Handler、Looper、MessageQueue 就自以为了解了 Handler 的原理。但其实看源码的过程中慢慢就会发现,Handler 的内容可不止这点, 像同步屏障、 Handler 的 native 层的阻塞唤醒机制等等这些知识以前就没有理解清楚。

16.深入解析Binder源码
Binder在Android中堪称武林秘籍中的"易筋经",无论是菜鸟还是老鸟都对之神往。Binder架构是进程间相互通信的最常用手段,四大组件的基本功能都是依赖着Binder才能够实现的。
为了开发者能够使用java与cpp进行binder通信,binder的设计贯穿了framework、native和kernel层,开发者可以轻松的在上层使用binder向其它进程发起数据通信。

17.深入解析JNI源码
Android NDK开发中,常常因为效率、安全等原因,需要借助JNI的机制调用到Native环境中进行c/cpp操作。

18.深入解析Glide源码
Glide 功能丰富,图片三级缓存、可深度定制(继承AppGlideModule、LibraryGlideModule实现更多功能)、修改网络请求库、支持多种输入输出资源的转换(例如输入Stream,输出bitmap等等)、生命周期的管理。因此很有必要深入解析源码

19.RxJava原理及如何封装使用
RxJava可谓是Android开发人员必备技能,重要性就无需赘述了。

20.LeakCanary核心原理源码解析
LeakCanary是Android内存泄漏的框架,作为一个“面试常见问题”,它一定有值得学习的地方。

21.插件化架构定义及插件化架构的实践思路分析
babel插件、webpack插件、vue-cli插件,为啥这么多的优秀框架都是使用插件系统?插件化架构是什么?带来了什么好处?可以应用到什么场景呢?

由于文章篇幅有限,为了不影响阅读体验,仅展示一部分内容,有需要全套笔记的朋友【点击我】免费获取哦~100%免费分享下载

最后

源码学习不光可以提升自己的技术能力,同时也是面试所需的必备知识点,面试是跳槽涨薪最直接有效的方式,备战2021金三银四,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些源码知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

针对小伙伴们普遍提出的问题——代码看不下去,说说我自己的看法。

要有决心,要有一个成为高级工程师的决心。这一点谁也帮不了你,完全靠自己。可以提前畅想一下成为高级工程师后的自己,挑女朋友、买HHKB,高清显示屏,人工力学座椅、降噪耳机,漂亮的房子、汽车、人生赢家……

循序渐进,任何事情需要一个过程,由易到难。很多小伙伴一开始不知道看什么开源项目,我这里给大家列顺序:

第一阶段: android的官方Demo,90%都不难,有一些技术我们不常用到,可以直接略过。

第二阶段: 2016年最值得学习的五大开源项目,可以挑自己感兴趣的看,也可以在完整项目(泡在网上的日子)找一些。首先看项目src文件夹大小,在500kb以下都可以接受。

第三阶段: 第三方热门开源库,Volly,Universal Image loader等。

第四阶段: 看自己感兴趣的,融会贯通,扩充知识广度,最好自己再做一个开源项目,放在Github上。

第五个阶段: Android系统源码,扩充知识的深度和广度,成为大牛。

计划,给自己设定一个计划,一个自己想完成的计划。如几天之内看完这个项目。我一般会制定周计划、月计划,这个月学些什么内容,这个星期学一些什么内容,不需要太详细,简要的内容就可以,我会把他以便签的形式放在电脑桌面上。一个月下来,学的东西比计划里的东西要多,但是不一定会完成全部计划,计划可以作调整。

其他。根据自己的习惯选择。我的习惯:编程前把手洗干净,干净整洁的桌面,一个舒服的椅子或靠垫护腰,累了再加点轻音乐,不定期跑步、打球,每天傍晚一个人散步。对于我来说一个人去散步很重要,去不会碰就熟人的地方,可以专心致志想很多事情…..。最后剩下的就是日复一日的坚持。