1. 程序员考公:先别急着站队,这是个选择题
这几年“程序人生”这个词被讨论得越来越频繁,从“三十岁危机”到“格子衫的倔强”,再到“码农上岸”,每个阶段都有说不完的话题。今天我想聊聊一个在程序员圈子里热度一直居高不下的选项:考公务员。别误会,我不是来灌鸡汤的,也不是来劝退谁的。作为一个在一线写了快十年代码、身边也有不少朋友先后“上岸”的老码农,我想把这件被无数人讨论过的事,掰开揉碎了讲清楚。
先说个挺真实的背景:我朋友圈里最近半年至少有四个人在准备考公,年龄从26岁到35岁都有。他们有的是因为项目组被裁,有的是受不了无休止的版本迭代和倒排期,还有的纯粹是想换个活法。与此同时,网上也充斥着两种完全对立的观点——一种说程序员逻辑好、学习能力强,去考公属于“降维打击”;另一种则说体制内讲究的规则、人情、文字功夫,恰恰是程序员最欠缺的,进去就是“围城自困”,甚至还有人把考公上岸后“水土不服”又跳出来的帖子翻出来当作警示。
说实话,这两种说法都有道理,但都太绝对了。
我见过考了三年才上岸的程序员,也见过裸辞备考两个半月就考进市直单位的测试工程师;我见过进了体制后郁郁寡欢又辞职回去写代码的,也见过在单位里混得风生水起、从窗口岗位一路干到核心部门的。说到底,程序员考公能不能成,关键不在于“程序员”这个身份,而在于你有没有真正想清楚:自己到底要什么,以及你愿不愿意为这个目标付出足够的代价。
这篇文章我就结合自己这几年的观察,加上身边朋友的真实经历,把这个话题拆开聊聊。内容包括:程序员考公所谓的“降维打击”到底存不存在,优势在哪、陷阱在哪;为什么又会有“围城自困”的说法,哪些人最容易踩坑;以及行测、申论、面试这几个环节,程序员该用什么思路去准备;最后再聊聊上岸之后心态和工作的真实情况。如果你也在纠结要不要走这条路,或者已经在备考但心里没底,建议你花几分钟把这篇看完,也许能帮你少走不少弯路。
2. “降维打击”只是个传说:程序员的优势清单,比你想的短
2.1 真正的优势不在智商,在“信息处理”
很多程序员觉得,公务员考试不就是考语文和逻辑吗?自己大学高数都啃过来了,这种东西难道还能难倒我?这个想法很常见,但也很危险。
先说结论:程序员在考公中确实有一些天然优势,但这跟“降维打击”没太大关系。真正的优势,其实是几个被很多人忽略的点。
第一个优势是“信息检索和规则解析能力”。咱们程序员这些年被产品经理和需求文档反复磨炼出来的能力是什么?是把一段模糊的描述拆解成清晰的规则,再去查资料、看文档、找答案。这个能力放到考公上简直不要太对口。行测里那么多题型,每个题型的方法论,其实本质就是“一套算法”。比如图形推理,看起来是玄学,但你把题目归类,位置类、样式类、属性类、数量类,每个大类下又有具体的规律,这本质上就是在建立一套决策树。程序员对这种事特别敏感,很容易就能把题目当成代码来“调试”。
第二个优势是“估算能力”。行测120分钟做大约135道题,平均一道题不到一分钟。这种时间的分配和取舍,其实特别像给接口做性能优化。你不可能把每个请求都优化到极致,你要做的是找到瓶颈,把资源花在性价比最高的地方。很多非技术背景的考生一上来就死磕数量关系,结果后面资料分析都没时间做。程序员因为常年被倒排期和线上事故训练,对“什么时候该放弃、什么时候该死磕”这种事有天然的直觉。
第三个优势,说实话有点残酷,那就是“见惯了大场面”。咱们程序员都是被线上事故、需求变更、技术评审这些事反复蹂躏过来的,心理素质相对来说确实稳一些。而这个考试,无论笔试还是面试,本质上都是一个“高压环境下的能力输出”过程。见过凌晨三点的生产环境告警的人,再面对一个结构化面试,至少不会手抖到连话都说不出来。
2.2 但别高兴太早:这三个短板,非常致命
如果只看优势,很容易高估自己。我身边真正考上的朋友,都承认一个事实:在备考的头一个月里,他们几乎都被自己的“信息茧房”害惨了。
第一个短板是“文字表达能力的退化”。程序员的工作习惯是写代码、写注释、写PR描述,追求的是逻辑严密、表述精准。但申论要求的是什么呢?是用规范的公文语言,按照一定的行文逻辑,表达观点和对策。很多程序员一看到申论材料就下意识地想“提炼核心逻辑”,这本来没错,但一动手写就露馅了——要么写成了技术文档的说明文,全是“首先其次再次”,要么通篇大白话,没有半点“官方语境”。我有个朋友在字节做了四年后端,第一次做申论真题,大作文只写了一半就写不下去了。他跟我说:“我不是没思路,我是不知道同样一句话该怎么用那种口气说出来,写一句删一句,比写代码难受一百倍。”
第二个短板是“对体制内行事逻辑的陌生”。这个其实比文字能力更致命。行测里的常识判断、申论里的材料分析,很多时候考察的不只是知识储备,而是一种“语境理解能力”。比如有些题目里涉及部门分工、工作流程、行政逻辑的地方,程序员如果完全没有概念,做题就只能靠猜。面试就更明显了。程序员的思维习惯是“发现问题—分析原因—提出方案”,这听着没毛病,但到了公务员面试里,光有方案不行,你还得讲究“轻重缓急”“协同联动”“风险防范”,这恰恰是很多技术人想都想不到的维度。
第三个短板,也是最容易被忽视的:碎片化时间利用效率差。程序员的工作强度大,这是事实。但很多人在准备考公的时候,给自己找了太多借口——“项目太忙了”“这周要上线”“领导临时加了需求”。结果是,备考周期拉得特别长,复习却三天打鱼两天晒网。说实话,如果每天拿不出稳定的一到两个小时来学习,这个岸就别想上了,跟智商没关系,跟优先级有关系。
2.3 结论:优势是“折扣”过的,劣势是“溢价”的
所以你要问我“降维打击”是不是真的,我的答案是:在行测的某些题型、在资料分析的计算、在逻辑判断的严谨度上,程序员确实有优势,但这个优势的“折扣率”不低。至少没有大多数人想象中那么夸张,更撑不起“降维”二字。而文字表达、政治素养、体制思维这几点短板,在市场定价上却是“溢价”的——因为它们恰恰是拉开分数差距的关键。
换句话说,程序员考公,拼的不是谁聪明,而是谁先意识到:过去的职业惯性,既是本钱,也是包袱。
3. 围城自困,困住的多是这四类人
聊完“降维打击”的真相,再来说说“围城自困”。这个词本身其实有点情绪化。很多人印象里的体制内,是“一杯茶一张报”的清闲,也有一部分人在上岸后发现,真实情况和想象中差了十万八千里。但你如果仔细去观察那些后悔的人,会发现他们后悔的原因高度趋同,无非是下面这四类。
3.1 奔着“清闲”去的人,基本都会失望
这也算是我观察下来最普遍的误区。很多程序员一提到考公,脑子里默认的画面就是朝九晚五、没有KPI、不加班、双休稳定。这个画面不能说全是假的,但至少是极其片面的。这么说吧,体制内的“忙”和互联网的“忙”,完全是两种忙。
互联网的忙是“任务型忙”:需求来了,项目上了,这段时间天天加班,上线完了就好一些。体制内的忙是“责任型忙”:没有明确的“上线时间”,但有永远在推进的工作任务,尤其是在基层,上面千条线,下面一根针,任何一项工作落下来都得有人去落实。而且程序员的忙,忙完之后有明确的交付物;体制内的忙,很多时候做着做着会发现“又做了个寂寞”,写不完的总结、报不完的报表、开不完的会,每一件单看都不难,但堆在一起就非常磨人。
所以如果你把“清闲”当成考公的核心诉求,大概率会在入职后的一到两年内产生严重的心理落差。我那个去了某区直单位的老同事,原以为换个环境能养老,结果入职第一个月就跟着加班做了三次大型会议的保障工作,晚上十一点还在单位写简报。他跟我说:“早知道这强度,我还不如留在原公司拿三倍工资。”
3.2 身处业务开发链顶端,却接受不了“流程文化”的人
程序员追求什么?效率、结果、逻辑。你跟一个工程师说一个需求不合理,他大概率会直接问你:“那为什么要做?”但在体制内,很多事情的执行理由并不在于“这件事本身合理”,而在于“它是流程的一部分”。这里面有大量看似低效的环节:层层审批、反复征求意见、多方会签、会议纪要、留痕管理。
习惯了扁平化协作和快速迭代的程序员,进入这种环境后,很容易产生一种“这破地方怎么这么低效”的烦躁感。但这种烦躁没有用,因为流程本身就是目的之一。说得直白点,在互联网公司,效率是生命线;在体制内,规范和风险控制才是底线。这个逻辑不转变过来,哪怕笔试面试都过了,进了单位照样天天难受。
3.3 对薪资落差没有心理预期的人
这个最现实,也最不可回避。程序员考公,工资大概率是要“腰斩”的,有些一线城市的大厂员工,甚至可能是“膝斩”。如果你在互联网公司年薪五六十万,到了一些地区的公务员岗位,全年到手可能也就十几万,还不一定有原来的年终奖。这个落差,如果不提前算清楚,等你每个月还房贷的时候,那种滋味是真实会压到心口的。
我有个前同事,在北京做了七年后端,回老家的三线城市考了一个区级单位的岗位,工资从月薪三万多变成了六千出头。他后来跟我复盘的时候说:“当时我只想着回去离家近、生活安逸,但忘了算房贷。老家房子虽然便宜,但我之前在北京买的房子还在还贷,每个月现金流直接变成负的,当时那个压力真的让我一度想辞职。”好在他撑过来之后慢慢调整了心态,但这个过程绝不是网上几句“考公真香”就能概括的。
3.4 不适应“软性评价体系”的人
最后这一类,可能很多人没意识到。互联网公司的评价体系相对透明:你的KPI、你的OKR、你的代码质量、你的交付速度,都是可以被量化的东西。但体制内的评价体系完全不同,它是一个更依赖“综合评价”的体系。你的提拔、评优、考核,不仅仅看你干了多少活,还要看你的协调能力、人际关系、汇报水平、领导主观印象,甚至有时候还看你会不会“来事”。
对习惯了“我代码写得好就应该被认可”的程序员来说,这种评价体系带来的挫败感,往往比薪资落差还要强烈。你不是不行,你只是不知道在这个环境里“行”的标准到底是什么。
所以你看,所谓“围城自困”,困住的核心不是这个环境,而是你带着一整套互联网公司的价值观和方法论,直接空降到一个运行逻辑完全不同的系统里,又拒绝调整和适应。这样的状态,换到哪里都会困。
4. 既然决定考,就用程序员的方式备考
前面说了这么多,不是在劝退。如果你在认真思考之后,认为自己确实想走这条路,那接下来这部分你一定用得上。备考这件事,程序员完全可以拿出自己的看家本事——把考公当成一个“大型项目”来管理,用拆解问题的方式去复习,效率会高很多。
4.1 行测:本质是“时间片内的多任务调度”
行测这门科目,说白了就是考察“在有限时间内解决问题的能力”。每一道题单独看都不难,难的是你在120分钟里,既要做完135道左右题,还要保证正确率。这就特别考验“任务调度”的水平。
我建议程序员的复习思路是:先确认自己的“能力基线”。拿一套去年的真题,严格按照时间做一遍,做完之后统计各模块的正确率和耗时。这一步的目的是找瓶颈。怎么找?拿数据说话,别靠感觉。
我之前帮一个备考的朋友做了一次摸底分析,他的资料分析正确率只有55%,但每次能花掉25分钟;逻辑判断正确率80%,但速度偏慢,每道题平均要两分钟。后来我们制定了一个针对性计划:资料分析每天练习加减乘除的估算能力,把做题时间压到20分钟以内;逻辑判断每天做两组限时刷题,逼自己在90秒内完成一道题。两个月后,他的行测总分提高了差不多15分。
再看看行测各模块,对程序员来说通常有个精力分配建议:
| 模块 | 程序员常见优势 | 核心注意事项 |
|---|---|---|
| 言语理解 | 理解信息速度快 | 别凭直觉选,抓“题干关键词”和“选项对应” |
| 数量关系 | 数学底子扎实 | 别太执着,一道题超过90秒果断放弃 |
| 判断推理 | 图形推理、逻辑判断很像Debug | 图推要归纳题型,逻辑要背熟公式 |
| 资料分析 | 数据敏感度高 | 练习估算能力,别硬算,掌握截位法 |
| 常识判断 | 知识面窄是硬伤 | 性价比最低,每天积累即可,别花大块时间 |
关于行测,还有两个程序员特有的小技巧。第一个是“用刷题代替听课”。很多备考新人特别喜欢花大量时间看视频课,跟着老师的节奏走,感觉学了很多,实际上一做题还是不会。程序员的思维更偏向“边用边学”,所以我的建议是:第一遍直接做题,不会的翻答案、看解析,把某个题型的规律摸清楚之后,再去找对应的技巧课听。带着问题去听课,效率至少翻一倍。
第二个是“错题本应该像Bug记录一样对待”。很多程序员写代码有记录Bug的习惯,但到了备考就忘了。你在错题本上记的每一道错题,都相当于一个你没考虑到的“边界条件”。把错题的原因归类,是知识盲区、是思维定式、还是时间不够导致粗心,分门别类地记录下来,每周复盘一次,这比什么技巧都管用。
4.2 申论:别当技术文档写,要当“产品说明书”写
申论是绝大多数程序员最头疼的科目,我在这部分要多说几句。为什么程序员写不好申论?核心原因是:申论要求的不是“逻辑清不清晰”,而是“是否符合规范和语境”。程序员写东西,默认受众是同行,默认目标是“把事情说清楚”;但申论的受众是阅卷老师,目标是在短时间内看到“规范性表达+材料信息点+清晰的结构”。
说白了,申论不是让你自由创作,而是让你做“信息压缩和再表达”。首先,小题部分,本质上就是“按照要求从材料里摘取信息点,并进行归纳概括”。这不就是给接口写依赖抽取吗?材料里有的,你提炼出来;材料里没有的,你想都不要想。很多程序员申论分低,就是因为控制不住自己“补充背景知识”的冲动,把材料外的信息写上去了,结果白白丢分。记住:申论小题,一切答案都在材料里,你的任务只有一个,就是当一台精准的信息提取器。
其次是公文写作和大作文。这部分,我建议程序员准备一个“语感库”。什么意思呢?每天读半小时官方媒体的评论文章或者政府工作报告的片段,把你觉得“有感觉”的句式、结构、用词摘抄下来,周末的时候仿写一段。这个方式听着土,但非常有效。程序员的语感不是天生的,是练出来的;你学一门新语言都要先抄一段官方文档的代码找感觉,写申论不也是这个道理吗?
另外,申论考试中有一个特别多程序员吃亏的点:字体。真的,别笑,这个比你想的严重。因为程序员平时键盘敲得多,手写字的机会少,而且长期握鼠标,很多人的手写字姿势和控笔能力都不太行。如果字迹潦草,阅卷老师根本没法给你分。建议备考期间每天花十五分钟练字,不需要多好看,但要做到工整清楚,这个投入的回报率非常高。
4.3 面试:把它当成“需求评审会”来准备
过了笔试,面试又是一个分水岭。大部分程序员在日常工作中的沟通,都是面向熟悉的同事、产品经理,甚至机器,说的话都比较随意。但公务员面试是结构化面试,面对的是陌生的考官,说的每一句话都会被权衡评分。这不是让你“装”,而是需要你拿出一个“职业化的表达状态”。
我有个朋友总结得特别好,他说公务员面试,可以把它理解成一场“用户需求评审会”。只不过你的“用户”是考官,你的“产品”是你自己,而你要“交付”的,是几分钟内合理解答一道问题的能力。这个思路我很认同。那怎么准备?
第一,积累“自己的素材库”。很多面试题问的是“怎么看”“怎么办”,如果你只靠临场发挥,很容易说出大而空的话。建议提前准备几个自己经历过、或者身边发生过的具体案例,把它们打磨成两分钟之内能讲清的小故事,然后用在你的答卷里。这样做的好处是:一方面有话可说,另一方面内容是真实的,不会显得背稿。
第二,答题要“有框架但不模板化”。网上有很多所谓的“面试万能模板”,比如“第一,思想上重视;第二,行动上落实;第三,制度上保障”,这种框架可以用,但如果只背框架不填血肉,考官一听就知道你是培训班出来的,分不会高。程序员的思路是:每个框架背后,你得有例子、有数据、有具体的做法。比如问你“如何看待基层工作加班多”,你别光说“我会调整心态,克服困难”,你可以说“我以前做项目的时候也经常需要应对突发的线上问题,我习惯建立一套问题分级机制,分清轻重缓急来安排工作,我想这种经验也可以迁移到基层工作中”。
第三,练习“开口”。面试不像笔试,不是你会就会,你得能“说得出来”。找家人朋友当考官,或者自己对着镜子、手机录像练习,答题完之后回放,看自己的表情、语气、停顿。这一步很多人会忽略,但对程序员来说特别重要——因为咱们写代码的时候太久没“说人话”了,得多练才能找回嘴巴跟大脑协同工作的感觉。
4.4 时间管理:上班族备考,逼自己建立“纪律”
最后说说备考节奏。作为在职程序员,备考最大的矛盾是“工作”和“复习”抢时间。我的观点是:不要指望自己能用大块的完整时间学习,碎片化才是常态,但碎片化不等于低效。
我在帮朋友制定计划的时候,用的方法是“模块化学习”:每天午休时用20到30分钟刷一组行测题,晚上回家如果项目不紧,用1到1.5小时做申论或复盘错题;周末把整块时间用来做套卷模拟,严格按照考试时间执行,培养考场节奏。这样算下来,一周差不多有12到14个小时的有效复习时间,坚持三到四个月,效果其实相当可观。
但这里我有一个重要的提醒:在职备考,最难的不是“没时间”,而是“情绪管理”。项目上线、需求变更、领导批评,任何一个临时的负面因素,都可能让你那一天的学习计划泡汤。所以一定要学会“原谅自己”——今天没学就没学,别破罐子破摔,第二天接着按计划走就行。考公是一场持久战,就像跑一个没有P0故障的系统,偶尔抖动不重要,重要的是别让整体服务宕掉。
另外还有个小建议:备考期间,尽量少在群里跟人争论“程序员到底该不该考公”。这种争论除了让你情绪波动,真的没有任何帮助。你把时间花在别人身上,就不会有结果花在自己身上。
5. 上岸之后:真实的工作生活,跟你想象的不太一样
很多人觉得考上了就万事大吉,但事实上,上岸只是另一段职业旅程的开始。如果你认真思考过前面提到的“围城自困”问题,并且觉得自己能接受,那接下来你要面对的就是上岸后如何“活下来”并且“活得好”的问题。
5.1 前三个月,先当“观察者”
很多程序员进到体制内的头一个月,最容易犯的毛病是把互联网公司那套“快速出成绩”的思路带过来。进来就想搞事、提建议、改进流程,觉得自己能力比领导强,方案比同事好。这其实是特别危险的心态。
前三个月,我建议你把自己当成一个“新入职的高级开发”,先读代码,别急着重构。什么意思?就是先花时间观察:单位的办事流程是什么、不同岗位的职责边界在哪、领导的工作风格怎样、同事之间怎么协作。对体制内来说,头三个月最重要的不是产出,而是不出错,然后建立起基本的人际信任。你让身边人觉得你是一个靠谱、稳重、好沟通的人,比你在这三个月里做出几个漂亮的汇报更重要。
5.2 找到“技术之外”的价值感
程序员习惯了从代码、技术方案、系统里获得成就感。但到了体制内,你会发现你敲代码那套东西,根本带不过来。如果一直用旧标准衡量自己的价值,很容易陷入“我没用”“我废了”的自我怀疑里。
我那位上岸的同学刚入职的时候,也经历了这个阶段。他分到一个窗口岗位,每天面对群众的咨询和材料,跟代码完全不沾边。后来他发现,自己长期做技术支持练出来的“倾听能力”和“把复杂问题拆解清楚的表达能力”,在窗口岗位上特别管用。群众来办事,很多时候表达不清楚自己要什么,他会耐心引导、帮忙梳理材料,办结率和群众满意度都很高。领导后来把他调到了办公室,专门负责对接一些信息化建设的项目。你看,技术人的能力并不会消失,它只是换了一种表达方式。你得主动去找那个“翻译器”。
5.3 心态放平:体制内是一份工作,不是修行
最后想说的是,不管你对这个选择有多大的期待,上岸之后,它最终回归到“一份工作”的本质。它不比写代码更高尚,也不比写代码更卑微。它有自己的规律,有让你觉得有价值感的时刻,也有让你想骂人的时刻。关键不在这个环境有多理想,而在于你有没有想清楚:自己在这个环境里,想得到什么?愿意付出什么?
6. 几个常见问题,一次说清楚
备考和上岸的过程中,大家问得最多的问题,我集中整理一下,算是一个“常见问题速查表”,希望能帮你解决一些实操层面的疑惑。
问:28岁、30岁了,再去考公,会不会太晚?
从年龄上说不晚。大多数岗位的年龄限制在35周岁以内,所以28到32岁这个区间,恰恰是程序员考公占比最大的年龄段。但这个年纪考公,要面对的核心问题不是年龄,而是“职业积累沉没成本”。你前面挣了几年高薪、攒了几年经验,突然换到一条薪资可能减半的赛道,心态上能不能接受?如果能,那什么时候都不晚;如果不能,就算让你25岁上岸,你也一样会后悔。
问:在职考还是全职考?
我的建议是,如果没有特殊情况,先在职考。程序员这个职业收入不低,裸辞备考的心理压力非常大,反而容易影响复习状态。给自己设定一个周期,比如一年,一年内认真学、认真考,如果没考上再评估是继续还是调整方向。这就像做技术选型,前期调研充分,方案落地才有保障;贸然停掉线上服务直接重构,风险太大了。
问:行测和申论,哪个优先级更高?
想进面的前提是过笔试合格线,通常行测有单科线,所以行测是底线,必须稳。但想拉开分差,关键在申论。很多理工科背景的考生行测能考75分以上,申论却只有50来分,一拉一扯,总成绩反而不占优。所以行测决定你能不能进面,申论决定你进面之后排第几。
问:程序员考公有专门的岗位吗?
有。像一些部门的信息中心、大数据局、网信办等岗位,会明确要求计算机专业背景,有的还会限制基层工作经验。这类岗位的竞争相对普通岗位会小一些,专业壁垒也帮你挡掉了一大批文科背景的对手。选岗的时候,优先报限制计算机专业、限制基层工作年限的岗位,上岸概率会高不少。
问:体检和政审有什么特别注意的吗?
程序员常年的久坐熬夜,最容易出问题的其实是体检环节。血压、转氨酶、颈椎这类的指标,在体检前一个月建议调整作息,尽量早睡,饮食清淡,少喝饮料。如果体重超标或血脂偏高,提前一周加强运动也能临时拉回一点数据。政审方面,只要没有违法记录、没有严重的诚信问题,一般都能过。但有一点要注意,有些单位会查个人征信,长期有严重逾期记录的话,可能需要提前处理并准备好说明材料。
7. 最后再分享一个小建议
这篇文章写到最后,我没有办法告诉你“程序员该不该考公”这个问题的标准答案,因为答案在你的具体情况里:你的家庭条件、你的性格、你对钱的在乎程度、你对风险的容忍度,甚至你所在城市的房价和岗位薪酬,都会影响这个决定。
但有一点我是确定的:无论最终你选择考或者不考,都不要用“逃避现状”作为唯一的推动力。把考公当成一个主动的、经过理性测算的职业选择,而不是被糟糕的加班、难缠的产品经理、无望的晋升逼出来的“退路”。当你是主动选择的时候,备考再苦,你都扛得住;上岸后哪怕环境不完美,你也能自己找到适应的方式。但如果你是带着怨气去考的,就算考上了,你也很容易在新的环境里继续积攒怨气。
我自己的体会是,程序员这个群体,最大的本事不是写代码,而是“解决问题的能力”。考公这件事,说到底也是一道综合题,它考验的既有智商、执行力,也有心态和信息整合能力。只要你愿意认真拆解这道题的隐藏条件、边界条件,然后一条一条去攻克,上岸并不算一个多难实现的目标。难的是上岸之后,你还能不能保持着“解决问题”的积极姿态,去面对一个跟代码世界完全不同的新环境。
祝所有在纠结、备考、或者已经上岸路上的同行,都能找到自己真正想要的答案。