程序员为什么高薪?从经济学上来说是因为稀缺性!但是现在世界上软件行业的从业者并不在少数,从这个角度来说,程序员并不稀缺,但换个角度,程序员这个行业的薪资差距却有如云泥之别,为什么?

在回答这个问题前,先谈一个前段时间让我感到职业生涯恐慌的事件,华为被爆出开除年龄大于34的员工,当时不禁算了算自己年龄,如果自己就职于华为,那么也快到了被开除的年纪了,刚工作时和许多之前不同专业的同学聊天时,他们也总会时不时劝我,别看你现在赚的比我多,程序员是吃青春饭的,干不过30岁,我现在虽然赚的少,可是我稳定,你应该考虑转行之类的云云,说句实话,以前在听到这些时,我的心里多少还是有一些恐慌的,因为我实在想不出,那时的自己出去除了写代码,还能干啥?

正如马云谈实体经济的一句话:“不是实体经济不行了,而是你们家的实体经济不行了!” 同理,不是30岁的程序员不行了,而是你不行了。

软件行业之所以高薪,是因为这个行业技术更新发展之快,远超其他普通行业,在这个行业,技术几乎每五年就翻新一轮,这带来一个结果,就是在这个行业每一位从业者,其实,都有一个统一的别称:学生!

经济学十大定理之一,选择之后必有代价,我们选择这个行业,享受了它带来相比于其他大多数行业的高薪酬,就该承受与之而来的不断学习,不要等到掉队那天,不自己反省自己的不作为,反而给这个行业贴上不该有的标签,对于这种人,其实任何一个需要不断学习的行业,估计都干不过30岁,而那些哪怕入门很艰苦,但学成不需要在学习,吃老本的行业,请放心,它一定是低薪酬的。即使它开始一段时间高薪,也不可持久。

学习的意义是什么?我想借用一句自己很喜欢话来说明:

“不是说学习本身特了不起,而是学习这个行为意味着你没有完全认同于这个现世和现实,你还有追求,还在奋斗,你还有不满,你还在寻找另一种可能性,另一种生活方式”  

也曾经像许多人一样幻想过,如果自己能像武侠小说中主人公一样,有一个德高望重的前辈,把自己的本领毫无保留的倾囊相授,让自己一跃成为技术大牛!可是现实和武侠小说最大的区别就是,这样的前辈有,也愿意毫无保留倾囊相授!但是自己却领悟不了!这是何等的绝望?但这确是铁铮铮的现实!

比如高德纳老爷子的《计算机程序设计艺术》,以高老爷子在计算机中的地位以及知识存量来说,可以说很难有出其右者,绝对可以称的上是德高望重,而这部著作,以老爷子现在的高寿,估计绝对是把这本书当做垫棺之作,倾注了毕生所学之精华,绝对可以说是倾囊相授,可是我们当中又有几人能够完全领悟其中的至理?

我想这便是读书意义了吧!读书(除去闲书)的好处之一便是可以借比自己牛的人但还可以勉强理解的视角,去看待许多自己现阶段不可能遇到,或者经常忽略的问题!去给自己大脑的操作系统升级!

而另一个好处就是,我们不是总有机会和比自己牛逼的人一起共事,所以读书就是我们和那些比我们牛逼的人学习和交流的途径,当然不止有读书这一条路,在软件这个行业,还有一条更好的选择就是看源码!

程序员们经常戏称自己为码农,做为程序员之间的幽默确实挺好,但是在自己内心,我一直把自己定位成为一个职业人。

大前沿一在他的《专业主义》中,对职业人有过这么一段论述:

“对上帝发誓,以此为职业的人!”

在这个信仰缺失的年代,而且是东方人,对上帝的几乎没有什么敬畏之心,其实我想说这里的上帝并非传统意义上圣经中的耶稣,而是自己内心中的本我!它是我们内心中最原始的渴望,不需要任何外力的监督,自然而然产生的一种本能!

当然,做到这点很难,但是却不是不可以锻炼后天形成,这是一种对自己所从事职业的荣誉感,借用猫腻小说《将夜》中宁缺师傅颜瑟的一段话:

“修行首重心性,在于敢想敢认,长路漫漫,你自己若都不相信自己能够走到最后,你怎么迈过修行路上那些艰难奇崛的险峰?越优秀的修行者越自信,而最优秀的那些修行者必然自信到极夸张的境界,大概也就是你所说的自恋。”  

虽然这是本网络小说,可读这本书,唯独这句对我的感触最大,记忆也最深刻,回到现实中,若不对自己所从事的行业报以极高的荣誉感,认同感,又岂能在自己的行业内有所建树?可以说我们是极致自恋,但这种职业人的精神,反过来却使我们在艰难中不断前行!如果你只是抱着某个行业高薪酬,好找工作,内心对这个行业始终充满不屑,那几乎可以肯定,你在这个行业终走不长远!

罗振宇的节目中曾经有一期,论述过对学习的定义:他说读书有三个区域:舒适区、学习区和恐慌区,其中学习区又称为:逃离舒适区!但是舒适区其实是我们人类的本能,我们太习惯重复我们自己,而错过了许多进步的机会!这或许就是牛人之所以牛,而我们现在却一直平庸的原因!

我工作已经四年多了,见过的程序员几乎没有一个愿意逃离自己学习的舒适区,总是在不断的重复着自己之前的技术!积累着使用这些技术的所谓经验,但是他们忘了,在这个行业,技术的迭代速度之高,有可能过一年,你所积累的经验就将一文不值,而那时的你,学习能力和性价比又如何和刚毕业的大学生比?我想,这便是华为开除34岁以上那批程序员的真实写照。在爆出华为开除员工消息后,我偶然在微信公众号中看到一位华为员工写的微文《华为之恶》,里面详尽叙述了华为是如何将员工当成螺丝钉用的,虽然我认同这篇文章部分观点,但却决不赞同他的结论!

一个人的职业生涯,一般要远超一个公司的寿命,这其实给我们选择公司提供了一个指明灯,对于职业人来说,在选择工作时,薪水的丰厚是放在第二位的,而自己的职业发展是第一位,当然,我必须承认现实有时比较残忍,在这种情况下,我们其实可以先委屈自己一年,但在这一年绝对不要放弃自己的进步,可以抽一定时间自学,不让自己的技术差距平均水准太远,一年后相信你绝对有一定的经济基础和经验可以跳槽!诚然,这对任何人来说都是一个需要勇气才能做出的决定,但这也是你成为职业人,必须要走的道路,向华为这样的公司,虽然它剥夺了你职业生涯的发展,可同时也给予了你超越一般程序员的薪资,你既然没有选择离职,证明你也认可这种协议,等同于你愿意用自己以后的职业生涯去换前几年高于一般同龄人的薪资,那最后被开除了,又有何好抱怨?还是引用经济学的那句话:“选择之后,必有代价!”,太多的人只愿意接受选择过后,所带来的好处,而不愿意承担它所带来的后果!

相较于华为,其实最不可容忍的,是自己葬送自己的职业生涯,但不幸的是,大多数程序员都是这么干的,我见过太多只愿意重复做自己熟悉东西的程序员,他们对外来的一切新技术都抱有本能排斥,与其说害怕学习新东西,倒不如说是懒!或是假勤奋,在公司我团队有3个刚毕业的大学生,本来打算自己去培训他们,让他们在技术上少走一些弯路,可是尝试过几次后,我彻底放弃了自己这个想法,你永远无法叫醒一个装睡的人,对于那些不想学习的,觉得只要完成工作,单位每月按时发工资就行,虽然他们工作也很辛苦,几乎天天加班,但却根本得不到应该有的回报!

由此,我自己领悟了一个道理,在软件这个行业不存在教会徒弟,饿死师傅的问题,对于那些渴望进步的职业人,即使你不告诉他们,他们也迟早也会知道,而对于那些不愿意去进步的,你即使倾囊相授,掏心掏肺,也不会有一丝效果。所以大胆的去分享自己的所学、所思、所悟吧!毕竟我们都是一群有点自傲的孤独者!在这个大多数人都信仰“老板给多钱,我就干多钱活”的时代,我们承受了太多人的不理解,但我相信,时间会给我们最公正的答案!

我对自己的要求是,在可能条件下,强迫自己用已经验证可靠的新技术去完成工作,对自己编码的要求是,相同的代码,绝不写第二遍,即使第二遍只是命名比第一遍规范一点。

时刻在内心告诫自己,小心被昨天自己的经验所束缚,佛门三障之一称之为:所知障!我在技术上对它的认识,还比较浅薄,总结一下就是“一次偶然的成功,比一次必然的失败更可怕!”。在以前的工作中,我不止一次遇到,最终被自己谷歌百度解决掉的问题,但是有一些第二次遇到,用之前相同的做法,却不能如前一次解决。而往往只有在第二次不能解决时,我才对这个问题有比较深入的研究和认识,引申而来,在技术中我们见过太多的理所应当,而不去探究它的本源,记得上学时,教我们编程的老师,有时候教我们时就会说:”这是固定写法,你这么写就对了“。当然我不是让大家去质疑一切知识本身,而是想告诉大家,在解决或者设计一个问题解法时,一定要注意,避免陷入自己的所知障,敢于打破自己以前的思维定式,做到这点很难!但每一次打破,就意味着你自己的进步!

下面说说自己的学习方法吧!以前自己的学习方法就是买书,死磕,由于前期自己的知识存量不足,看不下去,就强迫自己去记笔记,说好听是在记笔记,说不好听就是在抄书,因为只有在这种情况下我的精神才能高度集中,渐渐也就爱上这种学习模式!

当有了一定基础之后,我自己记笔记就少了,基本上都是花时间去迅速看,了解更多知识!

第三个阶段,也是现在处在的阶段,我重新去审视了自己以前的学习方法,以及学到的知识,带着解决一个具体问题和批判的角度去重读一些知识点。最新成就是带着质疑自己看源码研究整理了部分的Java基础,看了Spring IOC核心的代码!

其实在这里我最想说的不是自己的学习方法,其实每个人都有自己的学习方法,没有最好的方法,任何人也无法说你的学习方法是否是正确的,但只有你自己开始行动,开始不断的去积累,你就会总结出自己独有的学习方法,或许刚开始的方法是最笨的,可是没有之前的笨方法,你就不会在重复一段时间后,去找到更好的,与其纠结什么样的学习方法好,还不如现在就开始学,如果你还是要问,什么样的学习方法好?我会回答你,自己悟出来的最好!

一般我自己学一门知识,会买至少与这个知识相关的两本书,比如,我最近在看网络相关的内容,我买了图灵的《网络是怎样链接的》和《计算机网络:自顶向下方法》两本,前一本比较易懂而后者相对比较难点,一般我会把前一本看到大概一半的位置,再去看第二本,这样我其实有了第一本浅显的认识,看起来能比较轻松点,第二本会看到自己看不太懂的章节,在返回来看第一本,这时我会发现第一本内容对我来说简直太简单了,一般这次会一口气读完第一本,然后在回第二本!有时自己学习同一个技术甚至会买5本或者更多,因为每个作者的认知和思路不同,对同一问题表述还是有一定差异的,有助于我理解比较难理解的一些概念,同时,又能相互印证,其实还是发现有很多书,在同一个知识点,表述上有所欠缺或不一致的情况(有时和翻译本身和作者理解有关)。

而下一个阶段就是质疑了,孟子说过:”尽信书,而不如无书!“!学姐也不止一次说:”自己越来越不迷信权威了!“ 而到这步,其实我们就培养了自己独立的认知,质疑哪怕被冠以权威的东西。这能让我们更容易看清技术的本质!不在被一些技术广告忽悠!在这里我引用《Scala函数式编程》作者的一句相类似的话来表述自己的想法:

”没有那个现有的库是权威的,或不需要再去推敲的,哪怕它们都是专家们设计的,还冠以”标准“的名头。很多库都存在一些随意的设计选择,尽管大多都是无心的。去重新审视那些已存在于设计库中的基本假设,从不同的角度发现别人从未想过的问题“

既然提到图灵的学姐,这里就多说两句,在图灵社区与学姐结识,其实是一件偶然,当第一次得知学姐时,自己多少是有点不服气的,现在看来当时的自己还是很傲娇的说,可是逐渐熟悉后,我不得不承认,他高出我太多,可能我尽毕生之力,也赶不上他的步伐,他值得我发自心底的尊重,我是一个对技术很自傲的人,所以不存在刻意逢迎。是真不如也!说赶不上是因为,我在进步的时候,他也在进步,而且进步速度绝对要比我快!就好比,你如果天赋和Linus一样,但只要你不是小学时就开始编程,而是稍晚的时候。你是很难在技术上超越他的,这是真正的起跑线,每一个职业人一旦认清自己,开始启程,一般后跑的就只有仰望!而无法超越,无他!这个纬度是时间决定的。是很难绕过的,除非天赋比他高不少,或是他中间停止了职业生涯的前进!

但借用王安石《游褒禅山记》所说的:

” 然力足以至焉, 于人为可讥, 而在己为有悔; 尽吾志也而不能至者, 可以无悔矣, 其孰能讥之乎?“

虽不能至,吾心向往之!如果因为不能超越而不去努力,只会让更多的人超越自己!况且,职业人首先对自己负责,根本没必要去羡慕别人!追求更好的自己就好!

由于在学网络这块知识,最近一直在研究林沛满的《Wireshark网络分析就这么简单》从我现在对学姐知识体系的浅见,他现在的编程技巧,超越了许多一般的程序员,下阶段若想在进一步成为《Wireshark网络分析就这么简单》这本书提及的Patrick那种大神的话,应该从更多元的角度去了解技术,在生产环境中任何一个问题产生,几乎不太可能是单一的,打一个比方,你代码写的很优雅,线上出现了问题,可能是网络的也可能是JVM本身的还有可能是发布环境中操作系统内部的一些bug,导致你的程序出现偶然不可重复原因异常,而这时,要定位并解决这种问题,就必须要求自己有多元化的知识结构,因为现今计算机技术本身就是一层一层技术的堆叠,我们在做好自己本身那块的同时,也要了解其他模块的设计理念以及局限性!当然这是我读这本书时一些粗浅看法和建议!仅供参考!