程序员的2个悲哀:
1、唯大厂论。
个别程序员(注意:是个别),以进大厂为荣,以进小作坊为耻。实际,并不是每个公司都需要发展成为大公司,也并不是每一个技术人员都需要去大厂施展。另外,在我看来,大厂的背后,更多的是资本在运作,大资本家是要吃人的(说吃人你可能没感觉,说程序员抑郁跳楼你可能更有感触),资本从头到脚每个毛孔都带着血和肮脏的东西,大资本的到来,就是要完成对资源的集中垄断和掠夺,在某些关乎国家信息安全的领域,甚至都已经包含了某些跨国资本势力的渗透,资本的嗜血和贪婪,才导致过去大厂让用户“二选一”的垄断圈地运动。唯大厂论,背后的遗害,导致的是个别程序员的技术路线纯粹是会为了“迎合”进大厂而学习,是为了搞钱而学热门,大厂为了垄断而高薪抢人,而真正的技术研究与创新,反而没有人关心,彼此疯狂追逐利益,大厂肥而不强,搞点买菜、外卖、贷款、零售、游戏这种业务,讲真,有些业务甚至毒害一代青少年(比如游戏),有些性质恶劣的大厂,搞个高利贷就妄图颠覆、指划国家金融制度,类似这样的大厂,套路都是:垄断流量、排他、烧钱扩张、再割韭菜,本质上,对社会、对国家并没啥帮助,只是在巧取豪夺而已。社会主义这种体制,本质追求的是公平和公正,说远点就是“共同富裕”,以保障每个人都有条活路,体制的根基并不会允许大资本无序扩张。大厂或中小厂,它们都只是解放和发展生产力的一种手段,没有高下贵贱之分。社会的发展是多元化和多样化,有能力进大厂的人,只是很简单的说明你定向的适配了某些大厂在某方面的对口能力,但是没必要用那种全部程序员都应该“唯大厂”的顽固偏见来鄙视小厂程序员。对技术的追求,应该是去推动社会进步和创新,实现价值共生....
(以上这段,导致我在评论区和网友有一些关于大厂的交流,但是在之后,在2021年9月3日,我看到,国家宣布成立:北京证券交易所,毋庸置疑,这个信号,我从中读到的是,国家将会从金融市场支持更多高精尖的中小企业未来之星,在细分行业支持"培养出大量精专特新中小企业",只有大力发展中小企业,才能解决就业问题。)
(以上,我尝试从大厂背后的资本力量、国家政策层面对小厂的支持,这两方面做一些我自己的肤浅分析,说得不中你意,请谅解!我其实并非是想和大厂搞“对立”思想,这并不是我的本心和本意,我真正想反对是“唯大厂论”这种偏见,“唯”字是我想打击的重点,切莫看丢我提到的这个“唯”字,这种偏见,害了很多人,也曾害了我自己,每当裁员潮滚滚来袭之时,那种若有所失的感觉尤为明显。我其实想指出的是,在个人发展这条路上,与“唯大厂”论相反的另一面,在职业发展这个问题上,你可能还有一些其他的选择路径和选择机会,而不是“唯大厂”,尤其是当你放眼人的整个一生来说,写代码到30岁或35岁,即使10年开发生涯干下来,那也只是人生中一个很短暂的工作区间而已,而不是全部,技术终将很快更新换代,要保障自己一生连续性的长足成长,不防从更长期的视角,长期主义,认真思考当下在大厂或是在小厂工作对你所产生的长期复利价值)
2、年龄论
多少程序员年轻时候想的,怕就是一辈子一心搞技术。你过去没有关注非技术因素,那是因为别人替你解决了,公司给程序员提供了一个做技术的温水环境,比如:流量、用户、产品资源、运营等。可是一旦年龄上去了,才发现,非技术的东西是如此重要,当潮水褪去就会明白,技术+产品+运营,这三者在商业上的合理组合,才是程序员真正需要去积攒的核心能力,从技术到产品,再从产品到商品,这里面有一连串价值链路要去构建的。如果到了那个年龄段,技术刚刚初窥门径,但是其他能力没跟上,后面小年轻携年龄优势,自己就会产生焦虑。也许,真正淘汰程序员的,不是年龄,而是过去被你忽视的非技术因素。
——————以下是更新————————
看到不少同学的评论,关于小厂的缺点和种种不好,评论区不少老哥已经说得很清晰了,但是,我依然还是要再补充一下小厂的优点,供你选择性了解,小厂的优点是,自主和自由:
1、在小厂,你能把自己掌握的东西都实施一遍,你能从业务的全局视角知道自己所参与功能的全部核心商业价值。小厂技术如果开发的功能不那么融洽,或业务没那么切中用户痛点,会立刻被用户捕捉感知到,槽点即时就反射回来了,这个反射弧是极短的,没有中间商,因为你就是要解决问题的人,这能让你从侧面学到小厂的商业流程闭环,让你近距离感知到商业的本质,总之,小厂虽然麻雀虽小,从0到1,能让你从整体链路上更快、更多的了解到用户思维,近距离打磨用户体验和挖掘用户需求。
2、小厂,有助于你了解人心和洞察人性,打开更多人生通道。小厂的成败,更多的在于团队成员之间的沟通、协作信任,以及彼此的价值认同,任何不协调的人和事都会导致组织的停滞不前和内耗,这个非常助于你提早看清和了解人性,通过观测创业团队的日常运作来让自己成长,让你知道做什么可以做成一个事情,知道去和什么样的人合作能帮助你人生进步。了解人心,触摸人性,这个是容易被开发人员忽视的,开发人员更多的是内观,强调从自身出发,而人际之间的碰撞与磨合,往往更需要历练,多说一下,在小厂,技术和管理整体能力出色的话,更容易晋升到leader角色。
3、小厂没有太重的历史包袱,假如你有心,可以很方便地为小厂实时引入最新、前沿、最有效率的技术方案,即使有历史包袱,你也可以在局部进行探索和尝试,这些都是对自己非常有价值的事情,主要看你愿不愿意尝试和学习,没有人会拒绝高效、便捷、有优势的技术方案,如果有,那你赶紧跑吧!
靠山、靠厂,总归还是要靠自己,如果只是你一直把自己当做一个学徒,抱着有"大神带我"这种学生思维,估计大厂小厂都没人要...
父母不理解
你天天坐办公室,有什么苦的?什么狗屁996?你爹妈年轻的时候哪里有五天工作制,全是上六天班的,以前在工厂上班,天天都站着,空调都没有,还能比你舒服不成?有的班上就不错了,别天天跟个祥林嫂似的。
女友不理解
你每天加班,加班,加班,每天都到半夜才回来,想你难得周末有空能一起出去逛个街,陪我买买东西,结果你和我说你周六还要上班,那好吧,我他马的等你到周日,我们刚准备出门,你说公司打电话给你,有个紧急的BUG要处理一下。我X,你眼里有我吗?算了,你和你的电脑和你的BUG过日子去吧,我们分手了。
同事不理解
这个需求你说你要二个礼拜才能实现?你和我开什么国际玩笑,我觉得这东西二天就可以做出来了。你说太复杂你一个人不好弄?那别人淘宝怎么做得出来,换你就做不出来了呢?别和我逼逼,我不要你认为,我要我认为。
朋友不理解
我操……你一个月的工资顶我三个月了,我羡慕死你了。你竟然还说你太累太压抑做不下去了……你真是得了便宜还卖乖,要是别人给我这么高的工资,我命都可以给他。
路人不理解
瞧那个人,一脸猥琐的样子,眼圈黑得和熊猫似的,头发都快秃光了,就留了几根毛在脑袋上,哈哈哈,他一定是个程序员吧。
同行不理解
你找不到工作?活该啊,这么大年纪了你不紧跟技术你怪谁啊,这么多年你就光写业务代码么,新出的技术你都不去了解,呵呵,你说底层原理你都忘光了?这分明就是你不努力的表现。你老了,应该被淘汰了,别以为我现在是比你年轻才占了优势,我可是干劲十足,将来我绝不会像你这样的。
老板不会理解。
小张,我们公司打算做个微信小程序,你给我招一个程序员吧?要什么要求?嗯招个条件好能力强的,这样以后除了小程序也可以做点别的功能。最好带有那个阿里百度腾讯公司的工作背景,我们早晚会超越他们做到市值第一的,所以在技术实力上也要对标这些大公司,招的人必须会开发苹果App和安卓App软件,必须精通大流量高并发,以后我们公司的注册用户早晚会突破1亿。现在那个区块链比较火,也必须要精通区块链技术;呃……大数据,对,这个大数据也必须要精通,对了,还有人工智能,我看很多公司都在搞人工智能啊算法什么的,这个也必须要精通。
你问我这个岗位准备开多少工资?呃……一万块钱吧,什么?你说大公司都是2万3万起步的?这价格太离谱了!没这数不肯来?那你想想办法嘛,要不到时候许诺给点期权好了,再不济你就校招弄两个这样的进来。
老王不理解
你家那位也是太拼了,这么晚都不回来,怎么舍得让你一个人在家啊,工作比你还重要吗?什么?他是在拼命赚钱养你?那多无趣啊……要不我来陪你聊聊天吧。
这个问题我想过很久。
为什么码农会在35岁失业,而类似于律师、医生、老师却越老越香,35岁才算是事业高峰的起点。这里最主要的原因是码农压根不掌握社会资源。
就像 @ze ran 所说的,码农是基本没有社交的,基本都圈在自己圈子里面。其中的原因之一是没有资源可以和他人交换。医生掌握着医疗资源,教师掌握教育资源,码农有什么?
你有一个医生朋友,你可以问他健康养生问题(生老病死的问题价值几十万);你有一个律师朋友,你可以问他法律问题(法律问题,少则几千,大则难以计数),你有一个教师朋友,可以问他教育问题(中国人都为学区房所疯狂);你有一个码农朋友,你只能问下几千块的手机值不值得买。码农在社会关系网里面,是完全不值钱的。而且医生、教师、律师们可以积累他们的这些资源,码农能积累个啥?你代码写得又快又好,除了对你的雇主有好处之外,对你的朋友有什么用?
我本人作为码农的其中一员,除了薪金之外,给我的家庭能带来什么?除了买电脑等电子产品不被骗之外,啥都没有。我本人的父亲是一个九线小县城的一名普普通通的一名教师。要论收入,刚毕业没几年的我都完爆我父亲。然而,我家在17年左右发生了一场变故,真正的让我见识到了什么叫社会资源。我加上我的兄长,都不够我父亲社会资源的十分之一,更比不上我一位身为公务员的亲友的百分之一。教师、公务员的社会地位高,是体现在方方面面的。那次我第一次才意思到,一个普普通通的退休教师,会有着这么多人脉。
回到题目,与其说是码农的悲哀,还不如说是不掌握社会资源的工种的悲哀。
本来曾经受邀来回答这个问题的,我当时没想写什么。
那天空闲,做了一个回复,结果响应的人挺多的。
后面一个一个补充一下,回到15年前的一个状态么?好像有点像,真得很多年没有这样应答了。
我做的回答是:
“
你这并不是喜欢编程,喜欢编程的人,不会因为996就厌烦,反而是乐在其中的,我就是这样的人。所有只是因为程序员薪资高才过来当程序员的,没有一个是真正喜欢编程的,他们只是爱钱而已,因为爱钱而骗自己,骗公司,骗所有人,说自己喜欢编程。
”
我说的是不会因为996就厌烦,可从来没有一句话说我支持996。
于是,只会断章取义,以偏概全的一群人出现了。唉,无语,国内太多的人,不懂得看本意,只会看有利于自己想法或者不利于自己想法的部分。
刚刚有时间才看了一下差不多所有直接回复我的评论,嗯,这种特色很常见。我截了张长图:
上面针对评论回复,我都做了图片点评,也许不到位,但是,差不多了,就这么多吧。
20200622补充:
关于兴趣,可以看看前两天应邀参加腾讯云+社区的一个关于新技术的直播,我和两位专家之间的对话与讨论:
这里面有不少点其实是和本话题有一定关系的。
我理解的悲哀还是没有真正从内心喜欢上做一个程序员,能够真正感受到开发的乐趣。
我讲一个小例子,一个程序员工作了5,6年做开发,后面转行做了类似成功学的自媒体,当然个人收益更大是好事。但是我们却看到在文章里面说自己讨厌开发,终于可以不写代码了。工作累996,或者待遇不算高,但是你不能否定的是开发真正带来的乐趣和成就感。你不喜欢开发可以早点转行,委屈自己5,6年对你或对程序员这个职业都是最大的悲哀。
所以程序员的悲哀是自己压根就不想做一个真正的程序员。
最后摘录下《人月神话》一书里面关于编程乐趣的描述。
编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐?
首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。
其次,快乐来自于开发对其他人有用的东西。内心深处,我们期望其他人使用我们的劳动成果,并能对他们有所帮助。从这个方面,这同小孩用粘土为“爸爸办公室”捏制铅笔盒没有本质的区别。
第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果。比起弹珠游戏或点唱机所具有的迷人魅力,程序化的计算机毫不逊色。
第四是学习的乐趣,来自于这项工作的非重复特性。人们所面临的问题,在某个或其它方面总有些不同。因而解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。
最后,乐趣还来自于工作在如此易于驾驭的介质上。程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空地运用自己的想象,来建造自己的“城堡”。很少有这样的介质——创造的方式如此得灵活,如此得易于精炼和重建,如此得容易实现概念上的设想。(不过我们将会看到,容易驾驭的特性也有它自己的问题)然而程序毕竟同诗歌不同,它是实实在在的东西;可以移动和运行,能独立产生可见的输出;能打印结果,绘制图形,发出声音,移动支架。神话和传说中的魔术在我们的时代已变成了现实。在键盘上键入正确的咒语,屏幕会活动、变幻,显示出前所未有的或是已经存在的事物。
编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感。
悲哀的就是,想吃技术饭,那就要走专家路线,但是中国软件开发绝大多数是应用,能给得起钱的也是应用,对专家的需求就没多少。
这条路才真的是独木桥,走到后来,你会发现,你潜心研究的技术都是狗屁,不赚钱。
例如某个回答里提到的,悲观锁乐观锁。我也曾经喜欢研究这类问题,但是后来我发现,一个框架就搞定了。我们的业务量根本做不到需要这种专家的量级——等我们做起来了,系统推倒重来再说。
中国最缺的,是懂管理、懂技术、懂业务的人。
这类人太少了,知乎上你来看,有几个程序员能给你讲一讲他们公司的业务的?有几个能说清楚老板怎么想问题的?
CTO这个群体,要说技术能力,一群人跑出来七嘴八舌给你出主意。
一说业务,好多人就只是粗糙的背背宣传材料,公司到底怎么赚钱,行业趋势什么样,商业模式怎么创新,两眼一抹黑。对业务的理解就是“代码中的业务逻辑”。
一说管理,全抓瞎,连沟通都费劲,别说激发员工潜力,打造技术COE这种话题了。
就这个水平,这个能力,35岁,不淘汰你,淘汰谁?
还有脸说内卷……可不是内卷吗?光会技术,那不就是个高级开发,28岁的就能用,我养你38的,有钱没处花?
有人愿意听,我就多说两句。
我这个回答是从国家视角谈的,所以有些人感觉不舒服很正常,基层如果格局跟高层一样了,早就平步青云了,何至于在知乎上褒贬我。
其实我并没有要求你懂,我只是告诉你,你如果只是钻研技术这条路,天花板很低。
至于你到底想怎么突破,是不是想要突破,是不是要走业务和管理的路,随便你。
要说中国技术让大家能够亲身感受的,莫过于电商和支付业务。
阿里是这个行业里世界级的翘楚,高并发,高可用,敢在双十一玩儿真秒杀。
我有个朋友,2012年进入支付行业,一直走技术路线。那么支付行业什么时候最赚钱?2015年跟着P2P赚了一笔钱。
2015年,公司明面利润N个亿,销售冠军奖励900万,首席产品官奖励400万,CTO你猜多少?100万都不到。他在技术团队跟着喝汤,下了一场毛毛雨而已。那时候你看他们晒什么?晒全世界到处旅游,晒品味,晒格调。
2016年开始走下坡路了,随着备付金统一存管,网联启动,通道同质化,第四方支付崛起,监管步步收紧,第三方支付的颓势在2016年开始盛极转衰。
什么叫业务,业务是business,就是商业。通俗的说,就是公司怎么赚钱。
绝大多数技术人不懂这个,不关心这个,所以在2016年,他还是很兴奋,觉得钱可以继续赚下去,好日子还在继续。
大家都在拼谁的技术强,谁的职级高,谁能涨薪,你三万,我就四万,你四万,我就五万。
各大P2P公司搅乱市场,只要你有金融背景,就直接待遇翻倍。
到了2017年,有先知先觉的就已经退出支付行业了。那时候他还懵懵懂懂,因为一直在中台做产品,他不太了解前端的行业趋势,但是很羡慕有人赚了钱。所以2018年,他去内部创业,去研究监管,研究市场,研究客户,研究业务模式,跟公司签了对赌。
这一年研究的结果,他跟我聊的是:第三方支付死定了。
这哥们后来急流勇退,不管哪家支付公司让他去,甚至许下CTO的职位,他都抵死不从,坚决不碰支付了。
2016年能看出支付完蛋的,是神人。2017年能看出支付完蛋的,是牛人。2018年看出支付不行了的,是普通人。2019年,甚至2020年还在往第三方支付圈子里钻的,不敢说没有牛人,但是大多数都是废人。
技术人,你可以选择两耳不闻窗外事,一心只读圣贤书。
但是这条路是独木桥,天花板很低,竞争压力极大。
甚至一个行业的兴衰,决定了你最黄金的十年到底能有多大成就。
人生几十年,错过了就是错过了,愿意在技术领域呆着,没人反对,自己的路自己走就完了。
1、不爱这行,为了工资硬撑着做
2、只会调用api,却以为这就是编程的本质
3、没有学习过计算机基础(如数据结构、操作系统、网络等),却天真的以为这些东西没卵用
4、前端程序员懒得了解后端知识,后端程序员懒得了解前端知识
5、见了几个科班菜鸡,就觉得所有科班出来的都是这样,自己随便学学都比他们强
6、虽然工作了十年,实际上却只有一年工作经验
完美继承了知识分子哭穷哭得跟真的一样。
这底下好多答案,其实就是把所有loser的共性说成是码农特有的,然后各位码农看到了往自己身上一套发现果真如此,果断点赞!实际上答非所问。
码农最大的悲哀是技术人员的文人式优越感远超社会地位。
今天面试的又一波Java.程序员了。
他们中间有好几位80后的,年龄最大的是80还是81年的,头发更是硕果仅存了。
按说,他们都有将近十年工作开发时间,无论经验还是薪资要求都算得上有一些分量。我尽量绕开初等的概念问题,比如ioc的实现机制,或者aop的实现机制,或者数据库的链接字符串该如何写这样的初等理论问题,因为我也大概工作十年了,我知道这些答案的记忆,早就被繁杂的工作给抹去,也不去问各种绕口的多线程或者线程死锁这样的问题,因为我们做的项目不大,不至于考试那么高深。问点实用而且和我们项目相关的吧。
问了下数据库的事务,大家能说出来加个注解,也知道是用aop实现的。但是注解里面有什么样的参数,如何避免脏读,幻读,不可重复读?基本上都回答不上来了。
再比如数据库悲观锁和乐观锁的问题,更不用说分布式事务了!甚至连权限鉴别的实现也不能说出更深的道道。到使用shiro可以实现权限鉴别,但是如何实现分布式的shiro或者自己定义一些filter或者sessionManage更是闻所未闻。
然后动手搭建一个ssm框架都非常的艰难。一般回答都是这些年公司的框架都是搭建好的,自己只是写写读写删改的业务逻辑,至于这些都是框架考虑的。
其中一个80年的程序员跟我讲,平时工作又忙,家里孩子老婆都需要管,事情一大堆,能解决老板安排的任务,哪有心思去学更多呀!
我听后心里一颤,感觉到一种说不出来的悲凉。鼻子一酸,再想自己或许距离这一状态也不远了。
承蒙大家厚爱,一个周末过来,点赞和评论飙升。都超过我写的这一年多来的知乎总量了。
针对大家评论的几个问题,我自己做一下解释。
首先,针对大家的批评,我表示虚心接受,可能我们的面试方式上有一些问题,认真反思并且改进。
其次,我悲哀的不是说没有在我这里面试通过就悲哀的人悲哀。而是我自己作为一个程序员,想想自己慢慢被工作,被生活,磨的快没有了学习进取的时间和吃苦的精神。已经超过35岁了,身体大不如25岁的小伙子,新的技术又没有能沉下心来研究。至于高并发,大数据,微服务这些框架也只是点到为止。甚至都没机会去深入研究使用。如果创业成功还好,如果创业不成,我去面试和找工作。是多么悲哀的一件事。
再次,关于我们的面试。我也不是上来就问问你spring ioc的原理或者servlet的生命周期这些理论性很深的东西。首先我们大概整理了一个技术框架,然后先看简历,根据简历上您写的精通什么,擅长什么。围绕着你精通的领域提问一下,基础得确认你简历上写的技术,你确实用过,深入一点的看看你对用的技术能知其然有没有知其所以然。当然结合我们的项目再来看看是否能起到支撑。最后顺表聊点新技术的时尚类问题,看看你是否还在关注新的技术。至于解决问题的能力和搜索解决方案的能力,我不怀疑工作多年的人有这个能力。但是面试短短的20分钟时间,没办法让应聘者坐下来解决一个问题。如果合适了,才能到坐下来看看能力的这个环节。
最后,谢谢大家的批评和指正。
我这几天过的诚惶诚恐。不知觉点赞的人数过千,同时挨骂的次数也有好几百了。我也曾试着回复和解释。后来发现,认真看完文章,知道我表达的是什么,然后再去批判或者攻击的人都不多。不知道我表达能力的问题,或者是各位看官遇到过某个操蛋的面试官,然后对号入组就开骂!
我只是针对了一些自己经历过的面试现象,这些现象让我自己引发的反思。然后总结成了一篇小短文。文中面试问题不是出自某一次面试,也不是针对某一个人。
我工作十多年了,在过去的很长时间是一个问题的解决者。而解决问题有一套方法论,无法主要靠搜索,百度或者翻墙。我确实能解决一些问题,对一些新的名词也有一些肤浅的认知。但是总归自己被琐事所累,或者是996,或者是家庭,又或是一些借口。知识体系还是在吃多年前的老本,感觉自己如果去面试,一样面临各种问题。这让我感到还怕和自我的悲哀。
老程序员有能力,有经验,这个我不否认。但是在一个三线小城市,大多数的公司的业务无非做个工作号,搞个企业网站,偶尔一个大项目就是一个微型的管理系统。如果不主动刷新自己的知识体系,不能面对问题的时候刨根究底。最终上了年纪会很吃亏,尤其像我这种只会写代码,搞销售不能喝酒和吹牛,搞管理又缺乏情商低下。
我感受到这种悲哀后,每天晚上看看基础知识和体系,感觉收获很多,自己以前太过浮躁。如果我触痛你了,你或许可以试试是不是要刷新下知识体系了。当然你继续说我问的问题都很操蛋,老程序员遇到问题都能很快解决,我做的系统恰好涉及到资金的结算,如果他从来都不知道处理资金的时候需要锁,也许他说不出悲观锁乐观锁,行锁或者表锁。那么等问题出来了,他再去百度解决,我相信他能解决,但是我不太相信公司能支撑到问题出现后等待他去解决,有些东西不知道就有问题,或许我们不能解决问题,解决掉提出问题的人,也是一个好办法。
谢谢您能看完!
关于java面试,我最近做了一个改进。
来买本书吧,老程序员不迷茫。