我怎么感觉全世界都在劝退学 Android 的程序员?
上面这些原因导致一度出现三百六十行,行行转 IT 的盛况。
我记得我在逛某乎的时候,有几个问题经常上热榜:
“Android 开发凉了吗?” “程序员的出路在哪里?” “感觉中国的程序员前途一片灰暗,是这样吗?”
这些话题下面有很多程序员都在吐槽自己,吐槽程序员这个行业
事实上,整天觉得世界灰暗的人,他们绝大多数都是那些些随便学了一两个月技术,项目都没做过一个就想来拿高薪的人。
但是结果没能如他们所愿,工作只是每天敲些老代码,上网搬轮子,坐着等加薪等升职,等提车买房的美梦落空了。于是上某乎吐槽。
其他那些认认真真学习技术,打磨了四五年的人他们大都换了个称呼,他们叫做工程师,技术人,技术专家,技术经理。他们的前景一片光明,让他们做一个月兼职的收入都比那些一味抱怨生活和工作,但是又不努力,不改变的二流程序员高。
程序员这个行业靠不靠青春吃饭我不确定,但一定是靠技术吃饭的。
很多人带着劳动密集型的思维来做技术密集型的事情。
体力劳动的附加价值能有多高?
而且程序员这个行业的出现真的拯救了很多不擅长混职场、不愿意与人打交道的人,只要你能解决问题,哪怕你不说话,你的老板也照样给你加薪。
但这一切都是建立在你的「无可替代性」上的,如果你只会敲敲基础代码,搬搬轮子,百度一下,那你就很容易被替代。这样的你也根本没有底气没有筹码谈待遇,因为这些工作是体力活而不是脑力活,而程序员应该是建筑师而不是搬运工。
##如何提升自己?
这里我们可以从深度和广度努力。
提升广度
如果你选这个方向,可以尝试做一名全栈工程师,而所谓全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。
朝这个方向发展,不需要你每个方向的技术都学得多么深入,每一种语言掌握 80%左右即可。你可能解决不了很多高深的技术难题,但你可以一个人解决前后端大部分的问题。而且因为对开发工作全局的了解都很熟悉,是离项目经理最近的开发人员。
钻研深度
而如果你选择第二个方向,就需要将某个技术领域的某一门或两门编程语言学习透彻,要做到这个技术领域上的所有问题到你这里都能得到解决。而常见的技术领域包括前端、后端、移动端、iOS 开发等传统领域,还有近几年兴起的人工智能、大数据分析、物联网等。
(一)学什么?
当下时代,5G 迅速铺开,在智能手机普及,流量降价的大环境下,NDK 技术是必不可少的。
此外还有很多技术都是被大厂所看重的,归纳之后大致有以下技术要求:
深度理解 Android 平台架构、主要组成和工作模式;
有 linux 内核、framework 和 jni、虚拟机、安全逆向等底层技术经验;
深入理解设计模式,能够设计出高內聚,低耦合的系统框架,提升开发效率;
具有比较强的客户端系统架构设计能力,在通用性、跨平台和复用性方面有深刻的理解;
有大型软件架构设计和重构经验。
这里推荐阅读:
(二)怎么学?
这里给大家分享一下我自己的学习思路:
1. 学习基础知识
Activity 相关实体知识体系
? Task 启动原理与调用栈内核
? 生命周期与内核管理原理
? ViewGroup 源码解析
? View 源码分析与高级自定义 View 项目实战
? 事件分发的核心机制
? Handler 通信原理与框架手写
? Intent 数据传递原理和内核
? Hook Resource 源码实现
Fragment 内核
? Fragment 事务管理机制与控件混合应用原理
? Fragment 事务管理的原理
Service 内核原理
? 生命周期及 AMS 关系
? 两种启动方式启动原理
? 基于内核的应用实战
? Service 进程优先级调优与实战
? Service 职责原理
实体间的通信方案
实体中数据存储专题
2. 阅读源码+实战运用
关于源码的阅读和实战运用,我这边梳理了一份笔记,还有在网上整理的一套实战的教学视频。
评论