忆往昔,这是不是你
一个程序员在10多年的从业经历中,一直没好好考虑过如何构建自己的核心竞争力。
长年如此,导致他就跟着公司慢吞吞的走着,就像温水煮青蛙,直到30多岁的时候,突然发现自己几乎一无所长。
举个例子,比如从技术角度而言,可能发现自己不是什么技术专家,也不是架构师,没有任何一个技术领域有足够的深度。
甚至可能都没好好读过什么技术的源码,很多最新的技术,比如大数据、人工智能、微服务、互联网,等等,都没跟上。
而10多年来,一直做的事情可能就是重复以下:带着几个小弟,做传统的软件系统,然后整天就是研究各种软件的需求,设计一些简单的架构。
然后使用的技术都是比较过时的,一直是一些增删改查的事情,可能涉及到一些其他的技术,但是那些技术很多都是非主流的,或者是不流行的。
最后,发现自己10多年工作下来,跟小年轻相比,唯一的优势好像就是做的那种CRUD的项目比较多,经验丰富一些罢了。
公司遇到危机时,他就第一时间被下通知了。
站在老板的角度,假如手里本来有10个大龄程序员作为骨干,此时完全可以拿掉其中的8个。
老板这时就留下2个大龄程序员,让他们为了保住饭碗,加班加点给公司撑住剩下的业务。
而大龄程序员的工资可是公司里最高的那一批人,把他们拿掉8个,是不是一下子节省了很大的成本?
如果公司还有业务需要支撑,完全可以找几个工资才10k的小年轻程序员进来把活儿顶着,跟着2个大龄程序员继续做就行了。大家想想,是不是这么回事?
在遇到困难的时候,工资高、年龄大、加不动班的大龄程序员,很有可能就会率先“被”牺牲掉,用来节约公司成本。
然后呢,换上几个薪资低、年龄小、可以天天加班到凌晨、还有充足的精力学习各种新技术的程序员,给公司顶上。
所以从今年四月份被辞至今依旧没找到下一份工作,也变得越来越抑郁,觉得即将步入30岁的行列,却一事无成,不甘心从事一眼就能看到头的工作,大一点的公司自己又进不去。
所谓的程序员“中年危机”就这么形成了。到底是谁造成的!
Android开发怎么提升核心竞争力?方向在哪?
我们就需要知道为什么很多人会一直停留在三,四年的水平上,而后一直在重复以往的经验?
我认为最主要的一点就是主观能动性,或者说兴趣,如果你对Android开发没有太大的兴趣,或者说对于新的技术没有那么感兴趣,就觉得自己现在会的已经够了,从而不想学习。
当然还有两种原因:
1、本身的技能增强,能够应付日常工作,没有刚入行时那么大的压力了。
2、学习的边际效益递减,所以开始考虑投资/收益比了。
刚入行的时候,技术一丁点的进步,都能带来非常大的成就感,至少能少挨点骂,是不是?积累到一定时候,就可以跳个槽涨点工资啥的。
怎么规划学习路线
第一阶段,我觉得一个比较好的路线是,把日常开发常用的各种系统库,开源库,代码好好研究一遍,比如我用了butternife就要了解背后的apt,以及apt衍生出来的一系列库比如Hugo。当然这大部分情况是初级进阶的第一步。这个阶段应该是尽量很好的用技术完成业务需求。
第二个阶段,我觉得可以尝试去了解Android Framework比较细节的一些东西,比如activity启动流程,顺便分析清除Activity stack的管理,比如了解Android的资源加载机制,顺便了解aapt是如何打包Android资源的;又比如Java的类加载机制,这里配合资源的加载机制,很自然的就可以去了解Android的hotpatch机制,插件化的实现,开一些这方便的开源库或者自己撸一个也就自然而然。
关于Framework 可能很多人了解的不多,而且网上关于这方面的指南也少,这里我就分享
一份Android Framework源码希望对大家有帮助。
详细Vx关注公众号:Android老皮
《Android Framework源码开发揭秘》
本学习手册深入剖析了Android系统源代码,详细讲解了Android框架初始化过程及主要组件的工作原理,旨在通过实例和案例介绍 Android Framework 的核心概念和技术,从而帮助开发者更好地理解 Android 应用程序的设计和开发。 该手册适合具有一定 Android 应用开发经验的程序员,希望能通过深入学习 Android Framework 来帮助开发者更好地理解和掌握这一技术。
第一章 系统启动流程分析
Android系统完整的启动过程,从系统层次角度可分为 Linux 系统层、Android 系统服务层、Zygote进程模型三个阶段; 知识要点:
第一节 Android启动概括、
第二节 init.rc解析、
第三节 Zygote、
第四节 面试题
第二章 跨进程通信IPC解析
Binder作为Android进程间通信的机制,可以看做是一个驱动。在Android中,常见的进程间通信例如系统类的:打电话、闹钟等;自己创建的:像WebView、视频播放、音频播放、大图浏览等。
第三章 Handler源码解析
第一节 源码分析
第二节 难点问题
第三节Handler常问面试题