张雪峰这个名字在热搜上挂了一整天,我的朋友圈也跟着吵了一整天。吵到最后,有人发了一句"张雪峰老师走了",配了一张节目截图,底下评论全在讨论一个词:选择。
作为一个写了十几年代码、换过四家公司、在深夜跟需求方掰扯过无数回的程序员,我看完这些争吵只觉得心里堵得慌。所有人都试图回答"普通人该怎么选",但对最普通的程序员来说,"选择"这个词本身就带着一种奢侈的意味——我们从入门那一刻起就被裹在一条既定的流水线上:学好语言、背好八股、挤进大厂、熬到三十五。这条路的每一个路口都像是被别人画好的,我们在其中能做的,只是在"被裁"和"主动跑路"之间二选一,在"转管理"和"继续写代码"之间二选一。
这篇博文不是什么人生导师课,就是一个程序员在深夜对着屏幕敲下来的一些真实想法。想聊清楚三件事:为什么我们总觉得自己没得选,那些看似重要的选择到底该怎么拆解,以及在一个不确定的行业里,"活着"这件事的底线到底是什么。如果你也曾在凌晨改完bug之后盯着天花板发呆,我的这篇反思或许能帮你理顺一些东西。
1. 张雪峰为什么会被骂:他戳中了普通人最痛的"选择权"问题
先说清楚,我不是来站队的。张雪峰这个人争议极大,但有一点必须承认:他能在网上火这么多年,是因为他讲的事情本质上就是普通家庭的"军备竞赛"——用有限的信息和资源,在人生最关键的几个路口上做出最优选择。
1.1 骂他的和认同他的,其实是同一拨人
有意思的是,骂张雪峰的人和认同张雪峰的人高度重合。骂他,是觉得他功利、武断、动不动就"干掉"某个专业,把复杂的个人发展简化成一套冷冰冰的性价比公式。认同他,是回过头看自己走过的路,发现当年确实没有人把这些现实逻辑讲给我们听。
落到程序员这个群体里,这种撕裂感尤其明显。打开任何一个程序员论坛,你能同时看到两种截然相反的声音:一边是"无脑转码"的劝退帖,列出一二三四条理由证明现在入场就是当韭菜;另一边是"真香"贴,晒出刚拿到的校招offer,感慨幸亏当年选了计算机。
你问他们后不后悔?大概率都嘴硬。但你问他们"如果回到高考填志愿那天,你还会选计算机吗"——沉默的比回答的多。因为真正让程序员感到不安的,不是"我选错了",而是"我根本不知道当时还有别的选项"。
1.2 程序员的"选择"困境:高配版的知识改变命运
张雪峰的核心观点里有一条,我印象特别深:"越是底层的家庭,选专业越要务实,因为试错的成本太高了。"这话被很多人骂"现实得令人窒息",但程序员群体其实是最能理解这句话的人群之一。
你看这个行业的构成就明白了。程序员是中国过去二十年里少有的、不看家庭背景、不看人脉资源、只看技术和勤奋就能拿高薪的职业。多少人出身小县城,靠着一本教材、一套刷题攻略、甚至一个培训机构的网课,就改写了整个家庭的收入曲线。这确实是"知识改变命运"的高配版。
但问题恰恰出在这——因为见过太多"靠选择翻身"的案例,整个行业对"正确选择"的执念被无限放大了。大家疯狂追逐热门方向:前几年是移动端,后来是前端,接着是大数据、AI,现在又集体涌向嵌入式和大模型。每一个风口都伴随着培训机构的狂欢和一批人的焦虑转移。
结果是什么呢?结果就是我身边越来越多的人,把"活着"过成了"猜下一个风口",把"选择"过成了"追涨杀跌"。
说句残酷的话:普通人能接触到的"选择",绝大多数都是已经被包装好的信息差。你费尽心思抢到的那个"最优解",很可能是别人设计好的"付费解"。
1.3 我理解的"张雪峰式选择观":选错了不等于人生完了
抛开争议,张雪峰真正让程序员群体不舒服的,不是他的结论,而是他逼大家直面一个问题:如果你现在的工作是错的,你该怎么办?
大部分程序员对这个问题的第一反应是逃避。我们已经习惯了用"行业下行""大环境不好""再熬两年看看"来麻痹自己,然后把希望寄托在"等优化、等赔偿、等转机"上。这种状态有个专有名词,叫"温水里的青蛙",但青蛙至少还有跳出来的本能,我们连跳出来的勇气都被卷没了。
所以这篇文章谈"选择",第一个要拆掉的心结就是:不要觉得"选错了"是一件不可挽回的事。程序员这个职业最大的优势,恰恰是它的试错成本被互联网的生态摊薄了——你会Java可以转大数据,会前端可以啃Node,会C++可以去搞嵌入式,哪怕你只会写SQL,都能在数据仓库领域混口饭吃。真正的困境不是没有后路,而是我们总试图找到一条"永远正确"的路,然后一劳永逸地躺上去。
2. 去不了大厂怎么办——程序员每天都在做的"小选择"里藏着答案
热搜词里有一串看着就很热闹的词条:黑马程序员、java程序员ai学习流程、软考初级程序员、javaweb黑马程序员电子版、c++程序员实习项目。点进去看,提问的几乎都是同一个群体:刚毕业或者准备转行的年轻人,在无数个方向里挑花眼,生怕一步选错就万劫不复。
这个场景我太熟了。八年前我从培训机构出来,面前摆着三条路:留在这个二线城市做外包、去北京投奔同学挤地下室、回老家接手家里的小生意。当时拿到的最高offer是一家中型外包公司,月薪九千,单休,出差驻场。我纠结了整整三天,最后选了一个看起来"最不吃苦"的选项——留在了外包公司。
2.1 那些年我们纠结到失眠的"选择",后来都没那么重要
现在回头看,那三天的纠结几乎毫无意义。因为后来我跳了三次槽,每一次跳槽都像一次重新投胎,前一份工作的"选择"只决定了我的起跑线,根本决定不了终点。
这事特别反直觉,却是程序员这个职业最真实的运行逻辑:行业对技术人才的评价体系是动态的。你第一份工作是大厂还是外包,只影响你的简历初筛;但真正决定你后续发展的,是你三年后拿着什么项目、什么技术栈、什么实战经验去面试。我见过大厂出来的人因为技术栈老化,三年后连外包的Offer都难拿;也见过培训班出身的人靠啃下几个高质量开源项目,一步步跳进了核心部门。
所以如果你正在为"第一份工作该怎么选"失眠,我唯一的建议是:在能接受的范围内,选那个能让你接触到更完整的项目生命周期、更复杂的业务逻辑、以及更高级别技术挑战的机会。薪资的差距、公司的光环、城市的繁华,这些都会在你跳槽时被重新定价,但你对一套系统的理解和动手能力,是你带得走的资产。
2.2 从黑马程序员到必修课:为什么"该学什么"会让人如此焦虑
热搜词里频繁出现的"黑马程序员",其实代表了一种巨大的焦虑:Java、C++、AI、前端、嵌入式,每一个方向的培训机构都在告诉你"再不学就晚了"。
我自己踩过的坑是典型的"全都要"陷阱。工作第一年,我白天写Java,晚上学Python,周末还抽空看大数据课程。结果半年下来,Java的项目经验不深,Python的语法忘得差不多,大数据连MapReduce的端口号都没记住。那段时间我疲惫不堪,每天下班回家打开电脑就犯困,对着密密麻麻的教程视频产生强烈的生理性厌恶。
后来我想明白了一个特别简单的道理:程序员的"学习"不是学生时代的"考试",不需要你样样都懂。它更像是一个"按需调用"的武器库——你当前的项目需要什么,你就去学什么,把它学透、用熟、沉淀成自己的方法论,然后这笔经验才会真正成为你简历上的加分项。
拿热搜里的"java程序员ai学习流程"来说。真正让Java程序员插上AI翅膀的,不是去把深度学习的理论啃完,而是搞清楚"我能不能在业务代码里接入一个AI接口""怎么做Prompt调优""怎么把大模型的输出接入现有的Spring服务"。这需要的不是知识广度,而是结合场景的拆解能力。这类能力,恰恰只能从实际项目里长出来,任何教程都给不了你。
2.3 选择语言就是选择生态,但别把语言当信仰
还有一个程序员永远绕不开的选择难题:该学Java还是C++?该冲Python还是扎根JavaScript?
我的看法可能有点"政治不正确":语言的选择其实没那么玄学,它背后真正代表的是你选择的生态——C++让你靠近底层和性能,Java让你泡在成熟的企业级框架里,Python让你离算法和AI更近,JavaScript则几乎是前端的代名词。你选的是一个生存空间,不是一门语法。
但最关键的一点是:语言可以换,思维模式才是核心竞争力。我带过的实习生里,有写Java的,有写Python的,有写Go的,他们刚入职时水平参差不齐,但半年后分化得最明显的指标,不是谁的语言更熟练,而是谁更擅长拆解问题、排查故障、设计模块。这跟语言没有半毛钱关系。所以我劝那些还在纠结"选哪个语言"的新人:放下对语言的执念,先去把一两套完整的系统做出来,跑通、上线、扛住流量,你就已经赢过了大部分人。
3. 热搜词里的程序员众生相:年龄、学历、脱发与被搜出来的生存焦虑
这次热搜词里有一批格外扎眼的:程序员年龄分布、程序员行业从哪一年开始走下坡路的、不脱发的程序员、程序员证书、程序员修水管gif图。每一个词条背后都藏着一整个群体的焦虑切片。
3.1 35岁危机不是一个谣言,而是一场被夸大的幸存者游戏
"程序员年龄分布"这个词条下面,最高赞的回答是贴了一张统计图,显示35岁以上依然在写代码的比例不到三成。评论区瞬间变成大型"中年人哀悼现场",各路35岁上下的老码农涌出来分享自己的"被毕业"经历。
作为一个差点亲历这场游戏的人,我必须说:35岁危机是真实存在的,但它的成因被严重误解了。真正的危机不在于年纪本身,而在于年纪增大之后,你的"性价比"很难跟刚毕业的年轻人抗衡——同样的工时,年轻人更能熬;同样的薪资,年轻人要价更低;同样的任务,年轻人更有冲劲。如果你到了35岁,做的还是十年前那些事,那确实危险。
但换个角度想:35岁危机本质上是"可替代性危机"。如果一个人的价值完全建立在对某项技术栈的熟练操作上,而这项技术栈又恰好在走下坡路,那他无论多少岁都会焦虑。反过来,如果你对业务的理解足够深、对系统的掌控力足够强、对团队的带领能力足够硬,年龄反而是你的壁垒。
那些在热搜里哀嚎的35岁程序员,大多数是前一种情况。他们不是没有能力,而是把能力绑定在了"具体的工具"上,而不是绑定在"解决问题的能力"上。这是选择上的失误,不是年龄的错。
3.2 脱发和修水管:程序员被娱乐化背后的生存刻板印象
"不脱发的程序员"和"程序员修水管gif图"这两个词条放在一起看,很有黑色幽默的感觉——大众对程序员的想象,已经分化成了两个极端:要么是焦虑到秃头的加班机器,要么是身怀绝技的段子手。
这些娱乐化的标签本质上是在消解真实困境。真正在一线写代码的人知道,脱发不只是调侃,它背后是常年熬夜导致的内分泌问题、是久坐带来的颈椎和腰椎劳损、是盯着屏幕十个小时造成的视力恶化。"修水管"也不只是一个段子,它反映的是程序员资产评估的一个冷峻现实:当行业进入下行期,你在代码库里积累的经验,可能真的不如一把管钳在社会上值钱。
我当然不是劝程序员都去学水电工。我想说的是,热搜词对程序员的娱乐化包装,恰恰掩盖了一个严肃的命题:程序员的劳动力价值是被结构性地"用完即弃"的。平台需要你的黄金五年,资本要求你保持高强度产出,技术迭代不断缩短你的经验保质期。在这场游戏里,如果你把全部筹码押在工作上,而不去经营任何"带得走的东西",那等到潮水退去时,你会发现除去代码,自己一无所有。
3.3 私活、副业和软考证书:程序员的"Plan B"为什么大多成了韭菜收割
热搜词里还有一组非常有代表性的:程序员如何在家接私活、软考初级程序员、程序员证书。这组词条反映了同一个心理:我已经预感到不确定性了,所以我必须给自己找一个Plan B。
这个思路是对的,但执行起来几乎全军覆没。我身边接私活的程序员,十个里有八个以"钱没收到"或者"把人得罪了"收场;考证书的程序员,一大半考完就把证书压在抽屉底层,项目经验完全没变化。原因很简单:Plan B如果只是"用更便宜的价格卖同样的技能",那它不过是Plan A的低配版,不仅不能抗风险,还会放大你的焦虑。
真正有效的Plan B,是要建立一条与主业平行、但能力可迁移的第二曲线。比如你做后端,可以试着把自己对业务的理解写成一套结构化的课程或者专栏;你做前端,可以研究低代码平台的搭建方法,把重复劳动工具化;你懂一点运维,可以做小团队的 DevOps 顾问。关键是这条曲线要能沉淀出"作品"或者"口碑",而不是靠出卖时间换碎银子。
我见过最励志的转机,是一个干了七年Java的同事,因为长期给开源社区提交代码,被一家海外公司挖去做远程开发。他从来没有专门"找过"这份工作,也没花一分钱报班。他只是把业余时间投入到了"带得走"的资产上,然后等来了复利。
4. 深夜反思的核心结论:把"活着"拆成可执行的"选择项"
说了这么多,回到最初的问题:一个程序员,到底该怎么面对"选择"和"活着"这件大事?
我的答案可能不够热血,但它是真实的:别去追逐"最优解",也别急着找"唯一解"。把生活拆成一个个小得不会再让你失眠的具体环节,然后逐个击破。这个方法听起来很不性感,但它是我在无数次深夜焦虑中验证过的唯一能让自己平静下来的策略。
4.1 设计一套"程序员生存算法":输入是现状,输出是行动
如果你愿意尝试,我把这套方法分享给你,它其实就是一种"算法思维"重写生活决策的方式:
第一步,盘点存量。列出你当下手里所有的牌:技术栈的深度和广度、所在业务领域的理解、存款余额、年龄和家庭情况、可投入学习和社交的时间。不要美化和贬低,客观就好。
第二步,定义约束条件。我把它分成硬约束和软约束。硬约束是"我目前绝对不能做的":比如不能再跳槽了、不能接受低于XX薪资、不能离开现在的城市。软约束是"我希望尽量满足的":比如希望有更多学习时间、希望工作内容更有挑战性。
第三步,生成候选方案。这一步我鼓励你大胆一点,把所有"可能的方向"全部写下来,哪怕是"回老家开培训班"这种看似离谱的选项也写上。数量要比质量优先,先求发散,再求收敛。
第四步,用最小成本试错。这是最关键的步骤,也是大部分人做不到的。不要辞职去验证一个想法,而是用周末、用下班后的两小时、用一个最小化的demo去跑一遍流程。你想做个人博客?先花一个周末把它搭起来跑上线。你想做外包接单?先试着在平台上看三个需求,评估自己能搞定吗。行动才是唯一的信息源。
4.2 "注释"这件小事教会我的选择观
热搜词里有一条特别好笑又特别真实的话题:公司要求前程序员回公司写注释。点进去看,是一个程序员接到了前东家的电话,请他把离职前埋的"坑"给填上——给一段完全没有任何可读性的代码补注释,费用还不低。
这件事让我思考了很久。很多人觉得写注释是"没有技术含量"的杂活,但这个前程序员的经历说明了一个反常识的真相:在任何行业里,你曾经认真做过的每一件"小事",都可能变成你未来的一笔底气。一段好注释背后,是对业务逻辑的深度理解和表达能力的直接体现。这恰恰是很多程序员最稀缺的能力。
所以,我对"选择"的最终理解是:人生的主动权并不存在于某个关键节点上的豪赌,而是存在于你日常对待每一个任务、每一行代码的方式里。你是在敷衍地堆业务代码,还是用心地理解它背后的逻辑;你是在机械地完成任务,还是在刻意思考"这个方案还有没有更好的设计";你是在不断抱怨行业不行,还是在持续积累自己的"可迁移资产"——这些看起来微不足道的选择,才真正决定你是被年龄拖着走,还是踩着经验往上走。
4.3 深夜过后,我给自己定的三条"活法"军规
最后,分享几件我想通之后一直在执行的事情,希望对你有参考价值:
第一,定期做"冗余设计",不要把自己编程成单点。就像高可用系统不允许存在单点故障一样,我也开始有意识地经营自己的第二技能和社交网络。这个第二技能不一定是编程相关的,它可能是写作、沟通、管理,甚至是一点兴趣爱好。只要它在主路径挂掉的时候能兜底就行。
第二,给身体设"告警阈值"。常年加班之后,我每年都会安排一次全面体检。熬夜超过某个临界点,我一定会强制自己休息。这听着特别像废话,但只有经历过一次凌晨两点心悸得睡不着的人,才会懂这条军规有多重要。
第三,定期清空缓存,主动让生活失焦。程序员的生活太容易陷入确定的轨道:上班、改bug、下班、刷手机、睡觉。这种确定性会钝化人的感知。我现在每季度都会安排一个完全不碰代码的周末——去爬山、逛菜市场、看一场跟技术毫无关系的展览。那些困扰我很久的选择题,经常在这种"失焦"状态里冒出意外的答案。
写完这些,窗外的天已经亮了。张雪峰的热搜估计很快就会过去,但"选择"和"活着"这两个命题,会一直悬在每个程序员的头顶。我不觉得这两道题有标准答案,也不打算告诉你"应该怎么选"——我只是觉得,当我们把注意力从"他说的对不对"转移到"我自己今天该怎么过"上,焦虑就会自动让位给行动。这也是我写下这些文字的意义所在。