有很多人说程序员想要涨薪最简单的一个办法就是跳槽,可事实上又哪有那么简单,如果说傍富婆仅仅是“伤身”的话,那么不断的跳槽就真的是跳一次少一次了。
跳槽是涨薪快,但是,正常来说跳槽一次薪资只能涨20-30%,按30%算,需要跳3次才能翻倍,一年跳一次,需要3年;两年跳一次,需要6年。
有人说跳到大厂能涨的多,ok,假设跳到大厂能涨50%,那也需要跳两次。同时大厂又会介意你频繁跳槽,频繁跳槽压根儿就没有面试机会,比如jd明确要求,拒绝不满两年就跳槽的人选。
所以,跳槽这条路要慎重。
比跳槽更靠谱的一条路就是在公司内部升职加薪,职位明显提升的时候,薪资会有一个比较大的涨幅。
那么问题来了,程序员怎么能快速升职呢?
答案就是:让自己成为一个优秀的程序员
普通程序员和优秀程序员有什么区别呢?用下面两个程序员的对比来看一下:
小W:普通程序员
小L:优秀程序员
1. 代码质量的区别
在 Bug 管理平台上,小W的 Bug 是一片一片的。有许多 Bug 的原因是代码中方法计算返回的结果出现了错误,可引发这些错误的输入值既不是极端值,也没出现古怪的边界条件,全是正常的业务参数。
这说明了什么?说明小W他偷懒不写单元测试,甚至有的都自己没去测试,等着别人帮他测。
而小L的代码则非常健壮,Bug 平台里,小L的代码 Bug 非常少。如果去看项目的 Git,发现小L的单元测试代码非常的多,甚至远远超出了工程代码。
2. 开发速度的区别
从项目管理平台上,可以看到大家的开发时间统计。相似的一个需求,小L需要的时间是小W的一半。
比如,上次项目需要新接两个第三方渠道,小W和小L一人搞一个接口,参数相似,流程相似,小L花了 3 天,小W花了 5、6 天。
而且,后期接口出现变化,每次小W都要改个两三天,而小L只需要半天一天。
究其原因,就是小W每次写代码特别不优雅,不灵活,有点变更就需要大改,并且还经常改出 Bug。
而小L从来都是把方案想透彻了才开始写,还不断的重构代码,最终的代码又灵活又优雅,有需求变更了,特别省事的就可以改好。
3. 思维严谨的区别
有一次,小W写公众平台的一个对外接口,写完了拿出去测试,结果闹了个大笑话。他写的对外接口,连个验证签名也没有。这事儿幸亏在内部测试的时候,被查了出来。不然直接放出去,整个团队的专业性都要受到质疑。
而小L同样写一个接口,不仅考虑到了验证签名问题,他还考虑到了参数需要加一个时间戳,保证签名不会被重复利用的问题。
4. 团队合作的区别
打开他们项目的 Git,就看公共工具类,小W一行都没有提交过。然后,随意打开一部分代码,那么多可以共用的代码,小W从来没有想过提出来形成工具去方便别人。只管着自己的那摊子事儿,写完完事儿。什么代码风格、复用、团队合作全部扔在了一边儿。
小L不一样,不但会主动写一些工具类,有时候还会弄出一些小框架,减少别人的开发量。
5. 对业务理解的区别
需求会上,小W基本就没认真参与过,也很少去和产品经理主动沟通分析需求。当开始写代码了,小W要么实现出现偏差,要么就出现了遗漏。
有个权限管理的需求,本来是小W负责。
结果是,这个功能,权限配置甚至连个后台都没有,业务都没地方配置权限。就这样,小W还非说功能实现完了,还和产品们争吵了起来。最后结果就是被啪啪打脸,人家产品的原型图和需求文档说的很明白,而且还连续开了好几次需求分析会,大家都理解了,就小W出现了问题。
而小L则是非常重视业务需求,会写出一些文档,并勾画出设计实现去拉产品核对。如果出现了疑难问题,会同时叫上产品、运营开碰头会,并确保大家形成共识后,开始执行。
小W失败的权限管理开发,小L接手了。他画了角色和权限的关系图,然后全部和产品一一过了一遍。确认后,发邮件形成共识,然后开发。一切顺利。
6. 工作态度的区别
要知道,产品虽然经常惹技术讨厌,但是,大家都是普通人,自然也有想不到的地方。一般来说,小L和产品配合,产品想不到的地方,小L都会积极去沟通,查漏补缺。但是,到小W这里,事情往往推不下去。
曾经有个功能,产品的需求是想在商户信息出现变动的时候,能通知到公司其他部门的系统。要通知到其他系统,就得先对接公司统一的公共消息系统。
这事儿,小W直接给产品说“对接很麻烦,对方不配合”。虽然有时候跨部门配合是有难度,但是也不能因为这理由就把事情一直拖着。一直到别人来问进度,才发现根本没做。
把事儿交给小L后,人家第一时间去和产品解释了原因和面临的问题,然后开会协调了一个新的上线时间,把对接公共消息系统的工作量也进行了排期。
再往后,小L又把工位临时搬到负责公共消息系统的团队那里,在那里就地开发。此事妥善解决。
7. 解决问题能力的区别
同属一个技术团队,小W遇到难题,就去钻牛角尖,一个技术难题,能抠一周,结果别的工作也全部耽误了。
曾经,小W遇到过一个输出数据无序的问题,然后,他当时调试,怎么也找不到问题所在。就这个,墨迹了一周,后来是小L主动问他咋回事,才知道他遇到的问题。团队里几个人一起帮他排查了问题,两个小时解决。而他手头的工作却已经耽误了一周。
而小L则是遇到技术问题,首先是自己努力去解决。如果发现自己解决不了,又要进度延误的风险,他会立即积极求助,问团队高手,问技术领导,总之想办法尽快解决,好进入到工作的下一步。
8. 技术为王
以上的话都是一些个人心态以及工作细节上的一些分享,但作为一个程序员,其实最终都是要回归上技术上的,也就是说要不断的坚持学习,提升技术。如果没有扎实的技术,那么再谈以上种种就太虚了。
至此,我自己做为一名Android开发者,接下来我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名Android高级开发者需要掌握那些技能的笔记分享,希望能帮助到有心在技术有所提升的朋友!
- 架构师筑基必备技能
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
- 设计思想解读开源框架
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
- 360°全方位性能调优
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
1、设计思想与代码质量优化
2、程序性能优化
- 启动速度与执行效率优化
- 布局检测与优化
- 内存优化
- 耗电优化
- 网络传输与数据储存优化
- APK大小优化
3、开发效率优化
- 分布式版本控制系统Git
- 自动化构建系统Gradle
4、项目实战
- 启动速度
- 流畅度
- 抖音在APK包大小资源优化的实践
- 优酷响应式布局技术全解析
- 网络优化
- 手机淘宝双十一性能优化项目揭秘
- 高德APP全链路源码依赖分析
- 彻底干掉OOM的实战经验分享
- 微信Android终端内存优化实践
- Android框架体系架构
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
本篇知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析
- NDK模块开发(音视频系列)
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
- Flutter学习进阶
2019 年无疑是 Flutter 技术如火如荼发展的一年。
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
......
- 微信小程序开发
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
-
Android相关源码解读
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
由于篇幅原因,以上完整学习笔记pdf如有需要,可以 点赞+评论 支持下我,然后私信我免费获取!
最后再说一个能收入翻倍或者是暴富的路:
有机会拿一些公司的股票或者期权
前一两年字节跳动程序员,年仅 28 岁的郭宇财务自由,宣布退休的消息在网上火了一把。
关于股票、期权随便说两点:
第一、现在互联网行业给股票、期权的公司不算少见,提前储备点知识,万一以后谈 offer 的时候出现这些字眼,你也不至于啥也不懂。
第二、觉得自己现在还很菜,公司的股票、期权都是给核心员工的,轮不到自己。现在菜又怎样,谁不是由菜变强的,现在没有股票、期权,不代表以后也拿不到。