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

37岁老码农现身说法:青春饭怎么吃?

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

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

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

2、学习的边际效益递减,所以开始考虑投资/收益比了。

刚入行的时候,技术一丁点的进步,都能带来非常大的成就感,至少能少挨点骂,是不是?积累到一定时候,就可以跳个槽涨点工资啥的。但三五年过后,我已经会了

Bootstrap+JQuery+ASP.NET+Autofac+AutoMapper+NHibernate+mysql,再会一个Entity  Framework或者Dapper又有多大意义呢?真要用的话,也就一两周时间的问题。你说找工作的时候,会因为你只会NHibernate,没用过Entity  Framework就直接把你pass掉?这种面试官确实有,但属于脑子进水的那种,不多,碰到了算是运气。

再说了,真是这种leader,你在他手下待着有意思么?

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

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

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

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

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

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

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

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

37岁老码农现身说法:青春饭怎么吃?

35岁以后的程序员去哪儿了

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

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

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

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

37岁老码农现身说法:青春饭怎么吃?

.Net VS Java

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

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

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

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

舒服的话,当然是第1种了,但是呢,要英语好。

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

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

说实话,我觉得学英语比学《数据结构和算法》难多了……

37岁老码农现身说法:青春饭怎么吃?

人脉

其实还有很多很难很难的东西,比如人脉。

我现在缺的就是人脉。

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

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

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

37岁老码农现身说法:青春饭怎么吃?

功夫在诗外

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

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

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

37岁老码农现身说法:青春饭怎么吃?

十年编程路的“遗憾”

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

1、动手太晚。

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

2、没有广交朋友。

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

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

3、究竟是创业还是打工,没有下定决心,并一直坚持。

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