2026/10/10 19:53:11

从愚昧之巅到平稳高原:技术人的认知成长之路

从愚昧之巅到平稳高原:技术人的认知成长之路 你有没有过这种时刻——刚学了一个新框架看几个示例跑通 demo就觉得自己已经掌握它了甚至想给周围的同事讲讲课或者反过来明明已经在这个行业写了六七年代码却越来越不敢说自己会某个技术每次面试官问起来第一反应都是我只会一点。这两种状态我都在自己和身边人身上见过太多次。它们看似矛盾实际上都能用同一个认知模型来解释邓宁-克鲁格效应。这个效应把人的技术认知分成了四个阶段从不知道自己不知道到不知道自己知道每个阶段的人都在用自己的方式误解着自己。今天我想结合这些年在技术圈的实际观察把这四个阶段掰开揉碎讲清楚顺便聊聊怎么用它来照镜子、带团队、做技术决策。1. 邓宁-克鲁格效应为什么在技术圈特别常见先说透那个心理机制1.1 从那个经典的心理学实验说起邓宁-克鲁格效应并不是网络鸡汤它来自 1999 年康奈尔大学心理学家 David Dunning 和 Justin Kruger 的一项研究。他们让本科生完成逻辑推理、语法、幽默感等测试然后让每个人预测自己的排名。结果发现了一个反直觉的规律成绩最差的那四分之一学生普遍把自己的表现高估了一大截甚至有人认为自己的水平能排进前三分之一反而是成绩最好的那一批人经常会低估自己的表现。这套逻辑翻译成技术圈的语言就是一个人要判断自己做得好不好得先具备判断好的标准。可如果他不具备这个标准连标准存在这件事都不知道自然无从判断自己差在哪里。我经常用一个学游泳的类比来解释它。一个从没下过水的人看奥运会游泳比赛会觉得不就是胳膊划水、腿打水吗看起来也不难。轮到自己下水呛了几口水勉强能扑腾到对岸就会觉得我也游得差不多了。直到某天看见专业运动员入水、转身、换气全套动作才意识到自己那两下子连入门都算不上。为什么之前不知道因为判断专业所需要的那些细节知识——划水角度、换气节奏、动作效率——对他来说是盲区看不见就等于不存在。1.2 技术这个领域放大了无知者的自信游泳这种技能误判的代价很快就能被现实纠偏——呛水了、跟不上别人了身体会告诉你。但技术工作的反馈链条太长了这导致邓宁-克鲁格效应在工程师群体里被放得特别大。至少有三个原因让技术圈成为这个效应的重灾区知识是分层的看不见的维度太多。入门一个技术栈只需要知道 API 怎么调但调通 API和在生产环境里稳定运行之间隔着网络、并发、容错、可观测性、团队协作整整一大摞知识维度。新手站在第一层根本看不到第二层、第三层的存在。反馈延迟严重。你写一个爬虫在本地能跑你就以为会了。但它能撑住多大流量反爬策略一变还能不能跑代码三个月后别人还维护得动吗这些问题短期内不会报错等报错的时候已经积累了好几个月的认知错觉。入门门槛被极大拉低。现在随便一个人看二十分钟教程就能写出个能运行的脚本这种快速正反馈非常容易让人误判自己的熟练度。一旦理解了上面三点你再回头看技术圈里那些最常见的人际摩擦——新人喜欢对架构指手画脚、半吊子选手在评论区教育别人、PPT 架构师啥都能聊——就会发现它们的底层原因其实都是同一种认知偏差。2. 愚昧之巅不知道自己不知道但自信得发亮2.1 这个阶段的人在技术圈长什么样愚昧之巅是邓宁-克鲁格效应曲线上的第一个高点。人的信心达到巅峰实际能力却处于谷底最扎心的是他自己完全感受不到。现实中的典型画像我随手就能举一堆刚学完 Python 的基础语法用 requests 库写了一个爬虫就跑通了几个静态页面就觉得自己可以去做爬虫架构了。看了三篇史上最全 Spring 入门教程嘴上挂的名词比工作十年的还多IoCAOP依赖注入一套一套的一旦深入到Spring 里 Bean 的生命周期到底有几个阶段立刻支支吾吾。在技术群里帮别人解答问题语气斩钉截铁答案来源是两年前的博客帖子。被反驳之后不先质疑自己而是觉得对方没理解自己的意思。写了两年代码觉得自己可以去点评公司的系统架构了张嘴就是这个系统设计得太烂了用 Redis 缓存一下不就行了吗。这些行为背后有个共同点他们把自己的线性推理当成了工程判断。因为缺乏足够多的变量知识他们把问题简化成了一个二维模型在这个简化模型里他们的结论确实成立于是越推理越自信。2.2 怎么识别自己正站在愚昧之巅说实话站在愚昧之巅的人通常不会主动承认自己处于愚昧之巅——这是这个阶段的悖论。但我们还是可以靠一些行为指纹来识别行为特点具体表现说话用结论不用论证这方案肯定不行这个就该用 XXX 框架问为什么答不上来或只能给出一个很表面的理由很少说不确定你对未知的容忍度极低别人一说这可能有兼容性问题你的第一反应是哪有那么复杂求知模式靠搜博客遇到问题第一反应是找现成代码复制官方文档打开两秒就关觉得太啰嗦把能跑当作会了衡量会不会的标准是跑没跑通而不是有没有考虑边界条件、异常处理、性能退化对自己的评估远高于他人你觉得自己是团队里的中上水平但在别人眼中你连靠谱都谈不上如果你发现自己符合其中三四条先别急着骂自己。这不是人品问题是认知发展阶段问题。几乎每个程序员都经历过这段我自己也在这儿住过相当长一段时间。2.3 如何应对这个阶段的人包括自己如果你是团队里那个看得明白的人面对处在愚昧之巅的同事最忌讳的就是直接怼你懂个屁。这只会激发防御心理让他更想捍卫自己的结论。我试过最好用的方法是苏格拉底式的追问。他说这个系统加个缓存就能抗住流量你就问他加到哪一层缓存什么数据如果数据有更新怎么保证一致性万一缓存雪崩了怎么办问题不一定要求他当场给出完美答案而是要让他切身体会到原来这个问题下面还压着一大堆问题。这个体验比任何批评都有效。如果那个站在愚昧之巅的人是你自己那你需要主动给自己制造被打脸的机会。我的建议非常直接去读一份你没接触过的官方文档、去修一个老项目的 bug、去把我会改成我了解、我试过、我在什么条件下用过。在话术上强迫自己用更谨慎的表达方式行为会反过来重塑认知。你嘴上开始承认边界了脑子里才会慢慢长出边界的轮廓。3. 绝望之谷当知道自己不知道变成每天都在发生的常态3.1 什么经历会把人一脚踹进谷底从愚昧之巅掉进绝望之谷往往只需要一次具体的打击。根据我的观察常见的掉谷触发事件有这么几类第一次给开源项目提 Pull Request被维护者一条一条地 review每一行代码都被指出问题感觉自己写的东西满是破绽。第一次接手一个运行中的老项目面对几万行的代码库发现自己只能看懂自己新写的那部分其余的全靠猜。第一次参加正经的技术面试简历上写了熟悉 Redis对方问那你说说 Redis 的过期策略和内存淘汰策略有什么关系脑袋里嗡的一声——原来自己只是会用 set 和 get。第一次尝试读《深入理解计算机系统》或者《设计数据密集型应用》这种硬核书读了 50 页发现每段都认识汉字连起来不知道在说什么。这些事件的共同点是把你其实还不会这件事从一个抽象概念变成了一次无法逃避的直观体验。于是你的认知曲线急转直下信心直线跌进谷底。3.2 谷底的心理状态从自负直接滑向自我否定绝望之谷里最常见的心理问题不是我知道自己不会而是我知道自己不会之后牵出来的连环坍塌——我是不是不适合干这行别人是不是早就全懂了完了我比别人落后了三年追不上了。我见过太多有潜力的年轻人死在这个阶段。他们不是能力不行而是被突然打开的知识地图吓到了。原来只知道自己眼前有一亩三分地突然发现世界是一整片大陆而自己连村口都没走出去。这种落差感会让人做出一些很极端的事疯狂收藏学习资料但一篇都不看、在技术社区深度潜水不敢说话、干脆换个跟自己能力匹配度更低的工作来逃避。这里我想抛出一个反直觉的观点知道自己不知道才是技术成长真正的起点绝望之谷不是出局是入场。在愚昧之巅的人连问题都看不见你至少看见问题了。看见问题的人才有资格谈解决问题。3.3 在谷底怎么一步步爬出来我在谷底待的时间比任何一个阶段都长因此总结了三条比较可靠的爬坡经验第一收缩信息源专注攻一门。在谷底的人最喜欢逛各种技术路线图大厂面经看一份慌一份越看越觉得自己啥都不会。正确姿势是主动切断这些信息流挑一个跟当前工作强相关的基础主题比如数据库索引、TCP/IP、操作系统的进程调度认认真真啃透一门再说。深度带来的踏实感是治愈谷底焦虑最好的药。第二把知识清单换成能力地图。知识清单是我什么都不会能力地图是我现在能独立完成哪些事、推进哪些项目。每完成一个任务就在能力地图上画一个小对勾。画到第十个的时候你会回过神来原来我不是一无所长只是还不会的东西太多而已。第三记录每天新增的概念锚点。不需要完全理解只要今天比昨天多知道一个专业名词背后大概在讲什么比如今天搞清了事务隔离级别到底隔离了个啥就把它记下来。三个月后回看这份记录你会发现自己已经走了很长一段路只是身处其中时感觉不到。4. 开悟之坡知识体系开始长出骨架信心也慢慢回升4.1 进入这个阶段的标志性变化从绝望之谷爬上来你不会突然某天觉得自己全懂了而是会经历一系列微妙的变化。比如你开始能清晰地描述我不知道什么。不是在谷底那种我啥都不会的慌乱而是像列清单一样一条一条写出我对 Kubernetes 的调度器不熟我对 JVM 内存模型只有概念层面的理解。你看官方文档不再觉得痛苦甚至开始觉得它比博客写得好。你理解了文档是权威博客是线索这个朴素道理。你写代码的时候开始习惯性地想边界条件——如果入参是空的怎么办如果下游超时怎么办数据量涨十倍还撑得住吗这些问题你以前不是想不到是根本没意识到要想。你开始有输出的冲动写博客、写笔记、给团队做分享而且第一次意识到讲出来和以为自己懂了完全是两码事。进入这个阶段的人已经从不知道自己不知道走到了知道自己知道什么、不知道自己知道什么的清醒地带。信心回升的来源不再是我好像会很多而是我知道自己的边界在哪里并且在不断把它往外推。4.2 在坡上加速成长三个我验证过的方法方法一用自己的话写知识笔记千万别复制文档。复制别人的笔记、官方文档写的时候全程没走脑子关上文件什么都不剩。正确姿势是读完一个章节把文档合上用自己的话把这段到底在讲什么、解决了什么问题、有什么代价写下来。写不出来的地方就是还没搞懂的地方。方法二用费曼学习法检验理解。找个不懂技术的朋友试着把一个技术概念讲给他听比如什么是微服务为什么数据库要加索引。如果你发现必须借助一堆术语才能表达清楚那就说明你自己也没完全吃透。真正理解一个概念的人能用生活中的类比把它说明白。方法三周期性回溯错误认知。每个月清理一次我最近修正了哪些错误认知。比如原来 Redis 的持久化不是默认开启的原来 HTTP/2 的多路复用并不能完全消除队头阻塞。如果连续两三个月这条清单是空的说明你做的事情太舒适了大概率在原地踏步。4.3 开悟之坡最大的坑学了不等于要会进入开悟之坡后人会容易得上一种新病——学习焦虑。看到一个新技术就想学看到一个热门方向就生怕错过收藏夹越来越长精力越分越散。这个阶段真正要解决的不是学得更多而是选得更准。我自己在爬坡期也走过弯路花了大把时间研究一些跟业务毫无关系的冷门技术自我感觉非常良好但工作里一点用不上。后来想明白了一个道理开悟之坡上的核心任务是把技术优先级跟自己的业务目标、职业方向对齐。你可以很自由地学任何东西但要有意识地把大部分精力留给那两三件三年后还会对你产生杠杆效应的事。5. 平稳高原不知道自己知道但做事就是能成5.1 高原状态到底是什么体验邓宁-克鲁格曲线的最后一个阶段是不知道自己知道。这个表述听起来很奇怪一个人都那么厉害了怎么会不知道自己知道我观察到的真实情况是这样的真正处于高原期的资深工程师面对一个技术问题的时候并不会经历我知道我懂这个的思考过程而是会直接给出一个方案甚至说不清楚自己是怎么推导出这个方案的。他们的判断力已经内化成了一种直觉就像老司机开车不需要在脑子里默念先挂挡、再松离合一样。几个很典型的高原期行为指标别人带着一个设计文档来找他评审他扫一眼就能指出这里的事务边界有问题这个表结构后面一定会有扩展性问题。问他为什么他说不上来具体是哪条规则只能说经验告诉我这里有坑。技术选型的时候不追新看到新框架先问解决了什么痛点、带来什么成本而不是现在最流行什么。有些新技术他明明没用过但聊十分钟就能判断出它大概适不适合当前团队。在公开场合非常克制说这个我不太熟的频率比年轻的时候高得多。因为他对自己的知识边界极度清楚不会为了面子硬答问题。5.2 高原和愚昧之巅的区别同样自信底座完全不同很多人容易把高原期和愚昧之巅搞混因为它们看起来都是说话很笃定、不太慌张的状态。但只要稍微观察一下区别就很明显对比维度愚昧之巅平稳高原回答问题的依据线性推理、表面逻辑、网络传言多年的正反馈和反例积累面对质疑的反应急着反驳捍卫结论先听你说完再补充上下文对新技术的态度追捧热点生怕落后冷静评估看它解决什么问题描述自己我都懂这很简单我了解一部分这里我不确定需要查一下翻车后的表现怪环境、怪他人、怪需求没写清楚复盘自己的判断条件哪里缺失了核心区别用一句话说就是愚昧之巅的人是因为看不见风险而自信高原的人是因为已经遍历过无数风险而自信。前者是盲目的乐观后者是清醒的从容。5.3 高原期最容易犯的一个错误专家也会滑回愚昧本来文章写到这儿四个阶段已经讲完了。但我在真正接触过几位处在高原期的资深工程师之后发现还有一个特别容易被忽视的陷阱值得讲一讲——高原期不是永久的技术人会因为环境的捧杀重新滑回愚昧之巅。说一个真实发生过很多次的场景一个工作了十几年的架构师在公司里被所有人尊称老师他说什么大家都点头提出的设计评审基本没人敢挑战。渐渐地他开始把自己不熟悉的领域也纳入讨论范围从后端聊到前端从技术聊到产品每个话题都敢下结论。他并没有意识到已经很多年没有人指出过他哪里不对了——他象征性地回到了不知道自己不知道的状态只不过这一次没人再敢把他拽下来。这种高原滑落是非常隐蔽的。要防止它一个有效的小习惯是定期学习一个自己完全陌生的领域重新体验不会的感觉。不一定要学会但一定要刻意让自己暴露在不熟悉的坐标系里。你只有重新尝过从零开始的滋味才会对我无所不知的幻觉保持警惕。6. 用四个阶段照镜子怎么判断自己和身边的人现在站在哪6.1 一套能快速定位的自测清单四个阶段讲完了你肯定想知道自己现在站在哪儿。我整理了一份自测清单从五个维度出发每个维度选一句最贴近你的描述基本就能定位维度一面对未知知识的反应阶段一看到没学过的东西第一反应是这有什么难的。阶段二看到没学过的东西第一反应是完了又没学过。阶段三看到没学过的东西会判断这跟我当前的目标有没有关系。阶段四看到没学过的东西会说有意思然后考虑要不要花时间。维度二讨论技术问题时的语气阶段一语气斩钉截铁常用肯定绝对就是。阶段二基本不发言身体在技术群里潜水心里在焦虑。阶段三会说我理解的是……不确定说得对不对欢迎指正。阶段四会给结论同时给对方留出反驳空间会主动说明这个结论的前提是……。维度三收到代码 review 意见时的第一反应阶段一觉得对方在找茬或者觉得自己这么做也没问题。阶段二先怀疑自己是不是每一条都写错了心情跌到谷底。阶段三逐条对照理解同意的标记不同意的准备在群里讨论。阶段四先分类——哪条是风格、哪条是逻辑问题、哪条是认知差异然后只对后两种花时间。维度四输出内容的深度阶段一能用术语但是不会解释术语背后的为什么。阶段二不敢输出觉得自己写什么都是错的。阶段三能写清楚怎么做并尝试解释为什么写得多了开始有读者。阶段四能把复杂的东西讲得让新人听得懂很少堆术语习惯用类比。维度五对会不会这个词的定义阶段一能用就等于会。阶段二什么程度才算会我不知道。阶段三能在限定条件下解决问题并知道前提是限定条件。阶段四能设计出在大多数条件下都稳的方案而且知道哪些条件下它会失效。6.2 带团队的时候怎么跟不同阶段的人协作如果你手里带着一个小团队或者经常要跟不同水平的人合作这套框架可以直接当管理工具用。我在带人时摸索出的一套做法是这样的对愚昧之巅的同学别让他长期主导讨论也别直接打击。给他布置一个跳一跳够得着的任务让他自己在执行中撞见问题。比如他说加个 Redis 缓存就可以了那就让他去实现在实现中他会自己发现缓存与数据一致性这些他没考虑过的问题。让他自己撞见自己的盲区比让他承认你说得对有效得多。对绝望之谷的同学多安排确定性高、能快速跑通的小任务。这个阶段的人最需要的是小胜仗来重建信心比如修一个定位明确的 bug、写一个边界清晰的工具函数然后及时肯定他的产出。等他积累起十几场小胜仗就会慢慢从我很差过渡到我差的部分是具体的我行的部分也是具体的。对开悟之坡的同学让他做技术分享、带新人、写项目复盘。他在输出过程中会持续发现自己的知识漏洞又能通过教来强化学这是双赢的安排。注意别让他陷入纯执行工作那会浪费他这个阶段最旺盛的求知欲。对平稳高原的同学让他做最难的决策评审和有挑战的架构设计。他需要的是在真实的高压场景里验证直觉以及跟足够水平的同行对话。别让他淹没在一堆流程性事务里那是最大的浪费。6.3 这套框架的真正价值评估一个人看他说不会的方式最后我想说一个我个人很深的体会。这两年我面试过不少人也带过不少人慢慢发现一个特别灵验的判断方法是别太看一个人怎么评价自己会什么要看一个人怎么描述自己不会什么。愚昧之巅的人说自己不会说的是这个我现在不熟但给我两天我就能搞定然后可能真的搞不定或者搞定了但质量堪忧。绝望之谷的人说自己不会说的是我没接触过这个我是不是跟不上大家了带着强烈的自我否定。开悟之坡的人说自己不会说的是这个方向我没有实际经验我理解的部分是……不确定的部分是……描述严谨、边界清晰、情绪稳定。平稳高原的人说自己不会说的是这个我不专业但我认识 X他能帮你或者你可以先查一下 A 资料如果不行再来找我既坦诚又不把它当成身份问题。一个人跟未知相处的方式暴露了他真实的技术成熟度。这套框架看着是讲四个阶段其实本质是在讲一件事技术能力不只是知识的积累更是你与自己无知程度相处的能力。知识会过时、架构会重构、语言会换代但你如何看待自己的不会决定了你最终能走到多高。我自己的经验是四个阶段里我在绝望之谷待的时间最长那两年回头看是最难熬的但也是成长最扎实的。现在偶尔还会跌回谷底——比如接触一个全新领域的时候。但我已经不那么慌因为我知道这只是曲线的必经路径。一个人能做的不是永远站在高原上而是缩短在谷底停留的时间并且在愚昧之巅的时候愿意停下来听别人说一句你可能还没看到更大的画面。