⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 cnblogs.com/freeflying/p/9950374.html 「自由飞」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

前几天突然接到dk的电话,要和我聊聊天。

他说他们部门调整,虽然最后他留了下来,但还是非常焦虑。人无远虑必有近忧,他这次被刺激到了,想提高一下自己,以免下次再有类似的心惊肉跳。但怎么提高呢?

程序员第一考虑的当然是技术,但现在真不知道学什么了:干了三四年的开发,手头的工作马马虎虎都没什么问题了。就算有问题,也是业务逻辑上的问题,系统太复杂,吃不透;或者系统里一些过时的/生僻的技术,真心觉得没必要花时间花精力去研究,能对付就行了,是不是?反正下家单位99.99%的几率是不会用到这些东西的的。

那么就是一些新技术了。新技术杂得很,不知道学什么,框架类库啥的其实没什么技术含量,一两个星期就可以上手,上手了之后呢?往深里学?其实和老旧技术一样的问题,谁知道下一份工作用不用得上呢!而且没趣,大概是因为没有挑战性吧,反正就那个样,还能咋的?

一直聊到这里,我都非常理解。我这个十年的老码农,体会比他还深。其实稍微干上一些年头,就是这个样子,看起来像是“学习热情下降”“懒得学习”,但本质上呢,两个原因:

1、本身的技能增强,能够应付日常工作,没有刚入行时那么大的压力了。

2、学习的边际效益递减,所以开始考虑投资/收益比了。刚入行的时候,技术一丁点的进步,都能带来非常大的成就感,至少能少挨点骂,是不是?积累到一定时候,就可以跳个槽涨点工资啥的。但三五年过后,我已经会了Bootstrap+JQuery+ASP.NET+Autofac+AutoMapper+NHibernate+mysql,再会一个Entity Framework或者Dapper又有多大意义呢?真要用的话,也就一两周时间的问题。你说找工作的时候,会因为你只会NHibernate,没用过Entity Framework就直接把你pass掉?这种面试官确实有,但属于脑子进水的那种,不多,碰到了算是运气。再说了,真是这种leader,你在他手下待着有意思么?

但接着dk问了我这么一个问题:

要不要像我一样去考个软考,补一补算法啊原理之类的东西?

哎呀,这个问题可把我给难住了。了解我的同学都知道,我不光是考过软考,还写了一篇让人热血澎湃的文章,自吹自擂了一番,什么“十年磨一剑,重剑已经成型”。但实际上呢,这些年我回头看看,软考里面,至少60%的知识是没啥用的——我说的是“至少”。包括被吹上天的《数据结构和算法》、《操作系统》,以及《编译原理》,据说这被称之为程序员的三大浪漫?浪漫确实是浪漫,但既然是浪漫,换言之就是不实用。

我知道我这个观点有很多同学无法接受,估计两个原因:一是学校老师长期的灌输,比如“编程=数据结构+算法”;二是似是而非的直觉,“这玩意这么难,学会了应该很厉害吧”,大概这就是所谓的不明觉厉啦?

中国的大学教育水平我就懒得说了,说了无非也就是拉仇恨。我就说说这个“难”和“赚钱”。数据结构和算法肯定有点难——对于大多数正常人类而言,但难就一定挣钱吗?比如计算机最核心最尖端的技术是什么?是不是芯片?在什么科学院研究所里搞芯片的那些人挣的钱有BAT里面的码农挣得多?别说和码农比了,可能连UI连产品经理都不过。

我还想引申一点,难不一定赚钱,苦也一样。我当年做装修的时候,问我一个长辈:“你们哟,就这样玩儿一样的就把钱挣了,而且还是挣大钱。为什么我这么苦这么累都挣不到钱?”他说了一句话:“赚钱不费力,费力不赚钱”。

这么多年过去了,这话我还记得很清楚,因为我一直都在反复咀嚼:太特么有道理了!!!

不说自己创业,就说打工。工资就一定和能力(我就不说“技术”了,技术只是“能力”的一部分)成正比么?不要那么太天真,真的。那只是一种理想,甚至连理想都不算——不知道多少人希望自己的工资超过自己的能力,别人的能力超过别人的工资。

我最近也在找工作,没办法,一起帮要盈利不知道要等到猴年马月,我得先找点事做养活自己。很多同学好奇“35岁以后的程序员”到哪去了?能不能找到工作?是不是只能跳楼……借这个机会,现身说法,给大家汇报一下吧。

我在重庆,工作机会呢,确实不多,我记得是从国庆过后就开始刷新简历开始找工作。自己也随便投了一些简历,筛选条件大致是:十年工作经验或月薪20K以上,要求的Title是CTO或者技术合伙人。面试了三家,其中一家明显不靠谱的创业公司就不说了,另外两家都没成。

其中一家技术很对口,.NET方向的,号称在美国和加拿大有研发中心,人力总监和我聊了很久,但最后说还要他们的CTO看看,我有点懵,回头才发现他们是招developer这个级别的,然后我就知道没戏了。另外一家是互联网公司,职位倒是CTO,但要求的语言是JAVA,看在他们月薪50K的份上,去看了看,当然我知道在重庆基本上是不可能拿这么高的。他们公司明显有问题,什么都在招:CTO在招,CEO也在招,销售总监也在招……所以我最后提了个方案,先试岗一个星期看看,结果就没有结果了,呵呵。

最后就是今天下午还有个面试,欧美外资企业,要在重庆设一个点,需要一个team leader,通过猎头找到的我。如果说能谈成的话,年薪大概是在30万-35万。

经常有同学问工作“好不好”找,这个我真没法回答,因为不知道“好不好”怎么界定。我个人觉得,还将就吧,毕竟是在重庆,在猎聘网上,我把期望工作地点放宽到成都/上海,现在已经收到很多邀请了——但基本上都是JAVA,不到万不得已,我是不愿意转JAVA的。

这里说一下.NET和JAVA的问题,很多同学很关心这个。我有一种直觉,我最后找到的工作肯定还是欧美背景的,呵呵。其实我很想去国内的互联网公司看一看,但好像没这种机会了。.NET开始估计和国内互联网企业绝缘了?大致来说,我现在知道的,.NET开发的三个去处:

1、欧美企业。用.NET开发的很多,我不确定是为什么,知识猜测:.NET不免费但省人工,欧美的人工很高,所以企业宁愿选择给微软的服务费。当然,现在.NET core出来以后他们就更开心了。

2、传统生产企业。做一些内部系统,比如OA啥的,和windows、office紧密相连,用惯了微软这一套,技术栈自然而然的就是.NET了。

3、其他中小型外包公司。技术实力不是很强,用.NET现成的东西成本低好上手。要么就是不担心盗版不盗版的问题,比如800元建站的那种;要么就是给政府医院做点项目,windows的授权费啥的反正没人心痛……

舒服的话,当然是第1种了,但是呢,要英语好。英语这一条,可能要难住很多人。比如我下午的面试,就是从国外打过来的长途电话,纯英文交流。可能即使是欧美外资企业,.NET开发的工资还是比不过一线互联网企业(JAVA啥的)。但是欧美外资企业讲规矩人性化,我干.NET十多年了,真就没怎么加过班,996行军床啥的想起来就怕,真的。

所以我给dk的建议,实在没学的,学学英语吧,O(∩_∩)O哈哈~

当然这肯定很难——说实话,我觉得学英语比学《数据结构和算法》难多了。其实还有很多很难很难的东西,比如人脉。

我现在缺的就是人脉。

想想我之前还自己投简历,真的是太low了。在一个行当里已经做了十年,还需要自己投简历,确实掉价了。正常的渠道,要么是猎头,要么是朋友推荐。而无论哪种方式,技术的作用其实很小的。比如我应聘一个CTO的职位,我就是公司里面技术最牛的人物了,谁来面试我的技术?换一个方式想一想,你现在要请一个律师,你怎么判断这个律师的业务水平?你是不是只能听朋友介绍,相信你的朋友;或者相信你的直觉,直觉从哪里来?这个律师在什么所,开什么车,穿着打扮谈吐气质……但这些东西真的能证明这个律师的业务水平吗?

所以,公司的CTO技术还没你强,这太正常不过了。人家坐上那个位置,靠的不是技术,靠的是老板对他的信任。一点都不要抱怨,这很公平。你经历越多,就越能明白:信任,其实是这个世上最宝贵的东西!能让别人相信你,能让更多的人相信你,让更重要的人相信你,这就是本身。就像一起帮,要是大家都相信它使用它;或者某个风投的大V相信它愿意不遗余力的给它投钱,这不就成了吗?飞哥哪里还需要惨兮兮的找工作?

而且,如果你的技术真比CTO还强,这是一件很幸运的事。要么是这个CTO有胸怀,要么是这个公司有制度,你没有事先就被剔出去。以前我讲过,找工作靠运气,这份offer你没拿到,既可能是你技术差,也可能是你技术太强。你有没有想到这一点?面试官一看简历,艹,把他招进来,不是撬我的位置么?稍稍用点手段,就把你pass了。这才是一个企业招聘的常态,管理者总是倾向于(有意无意的)招聘比他稍弱的人——有一个专门的术语描述这种现象的。最后随着企业的发展,新来的人只会越来越弱,对企业的发展来说是很不利的。要不然我为什么要自己去学编程?

好像有点跑题了。和dk后面又聊了一些,大概都是这个意思:功夫在诗外。决定你十年之后职位和薪水的,更多的是技术以外的东西。除了上面说的人脉,还包括你的名望、这十年的履历,以及渐渐成型的言谈举止,等等。但这些东西,如何通过“刻意的练习”(新学的词)来获得——抱歉,我没准备割韭菜,说实话吧,主要还是靠运气。

这个答案可能很多人也接受不了。我自己都觉得有些暮气,但我真觉得这是最接近真相的一个答案。年轻人不相信命,就像YY小说里叫嚣的那样“我命在我不在天”!但你出门捡个烧火棍就是仙器,随便领个宠物回来就是神兽,烤只兔子都能引来世外高人,外加什么丹药秘籍……你确定你不过只是命好?越是上了年纪的人越容易相信命,因为见过了太多光怪陆离的人生,不可理喻。

好吧,上了年纪的人也容易话痨和跑题。

要不就先这样吧?很遗憾没能给你什么具体的建议,因为《我的成功可以复制》之类的已经被证明是骗人的。成功不能复制,其实失败也不一定。彼之蜜糖吾之砒霜,人生经验这些东西,世易时移,以前是对的,现在可能就错了;现在是错的,以后又可能是对的。但这样的话,我就没什么话可说了?

好在文字可以“博大精深”,以下几点,算是我这十年编程之路的“遗憾”吧。姑妄听之:

1、动手太晚。一起帮其实在5年前,甚至8年前就可以弄出来,当然可能是用现在看来非常“弱”的技术,比如就简简单单的ASP.NET WebForm+ADO.NET,不像现在什么MVC/Nhibernate,依赖注入三层架构……但是,技术永远没有止境,商机一旦错过就永远错过了!很多想法,我早就有了,但一直拖着,拖到现在成了“大路货”,而且七八年前的互联网环境,和现在完全不一样,至少那时候流量要便宜好多好多啊!

2、没有广交朋友。现在我想找个美工找个推广——尤其是推广人才,完全没地方下手。人才市场上的招聘,我一点信心都没有。可能是自己面试的时候说的假话太多,所以对求职者的话天然怀疑,而我自己又没有鉴别能力,很担心把千里马当驴子给pass掉,招了一头披着羊皮的狼进来。还有其他一些问题,比如融资,怎么找风投,我完全是两眼一抹黑,找不到人可以帮我一把。朋友多了路好走,我这孤家寡人的,唉!

以上两条,本质上都是因为“在技术上钻研太深”,把太多精力花在了技术上,没能兼顾或者平衡其他方面。想想真的是……程序员里的一股泥石流,是吧?钻技术还钻错了?!

3、究竟是创业还是打工,没有下定决心,并一直坚持。可能是因为第一次创业失败的阴影,或者家人的影响和压力,这些年一直在摇摆。由于目标不明确不坚定,所以很多时候就只能随波逐流了。离开上海回重庆是一个分水岭,在此之前,我怎么钻技术都不为过,因为那时候技术就是我最大最大的短板。但之后,我回重庆的时候,技术上我已经将就了。回重庆一个重要的原因是想在重庆创业,便宜。但现在创业不成,在重庆这些年就亏了;包括在HP,如果是铁了心的要打工为生,早就该跳槽了,在那里面纯粹就是虚度光阴;甚至现在也一样,究竟是咬牙坚持下去,坚决不打工,还是找个工作先……我心里真的没底。

真的是掏心窝子了,把我的软弱彷徨都赤果果的暴露给大家了。原谅我放荡不羁爱自由的人设崩了,捂脸.jpg,这粉应该是刷刷刷的往下掉咯……不过无所谓,剩下的都是铁粉!

老铁啊,看在我这么真诚的份上,是不是应该666个赞走一波?

文章目录