前言
这个问题,初中级得好奇,中高级看戏。如果我看到这样得我也想进去看看他的一个看法。中高级到底要懂什么技术,如何算是进入一个中高级。好像没有什么标准答案?市场认可你,或者社区认可你那你是不是中高级了?我也去看了很多得文章,好像都是在讲中高级人要懂什么技术,应该会什么技术,懂什么原理,看过什么源码,懂什么设计模式,算法啊,数据结构啊,等等。是http通信问题,还是React底层源码阅读,还是Vue底层源码阅读。好像对于中高级谁也给不出定义。"到底什么样才算中高级前端,需要具备哪些技能才算中高级?"但是我想说的是技术只是门槛,思想与认知才是关键,可能我作为三年的前端经验来谈这个问题,好像经验浅了点,也不是什么互联网大公司的人,好像没什么说服力。 但是吧,我也是一线开发的,我也是面试者,我也是找中高级工作岗位的人。我也是有自己见解跟看法的人。所以就把自己的所想写下来,把自己的感受写下来。可能说得还是狭隘了,可能我的认知还是会低了,我承认哈,毕竟不同的人认知是有上限的。
背景
为什么会写这个话题呢,因为我最近也是再找工作,找了一个多月,面了挺多家中高级岗位吧。现在的找工作啊,一言难尽,要你技术好,还要你要得低。 市场大部分都给不起价钱,给的起价钱的公司,大部分又投不进去。首先区分一下初中级,以及中高级岗位市场如何定义的吧。当然也要分,互联网大公司,中小型公司。小公司给得很少,但是招聘都写着要求三年经验以上得中高级开发经验得,也有初创公司,甚至他们公司一个前端都没有,但给得挺高得,这时候是他们的后台技术跟你聊,或者领导跟你聊,聊你的项目,聊你会的技术,问一下你一些原理。但是怎么定义中高级呢,好像不同得公司定义都不同,有些给得很高,二十多,在往上基本要么有学历,要么有大厂经历,要么有影响力了,有些给的很低15不到。但怎么定义都离不开一点,那就是技术,可以直观的感受到,价格跟技术,问的技术难度不一样。而且很多都很喜欢抓住某一点来考究你的技术深度,不同公司的采用的方式不同,有些从你做的项目挖你的技术深度,解决问题的复杂度,有些从八股文挖你,而有些是从他们公司的业务场景来考你是否能解决,基本上很难会有相同的问题出现,因为不同的公司的需求不一样,不同面试官看的技术角度还不一样。这就是为什么很多人说面试看运气,看你跟面试官聊得来,聊不来,所以就会有一句,敢于裸辞去找工作的都是勇士。 但是有一点,你要知道得是,就是把自己知识体系,要扩展得更大更深,那你跟面试官聊得来概率就会大很多,那你得运气也会增加很多。为什么说运气会大很多呢,因为面试往往不止技术面,还有项目匹配程度,还会考量你的综合,主管面啊,还有价格人事面啊,或者跟老板聊想法。你会发现技术只是进入决赛圈得门票,恭喜你,你只是进入了候选池,想要拿到offer,还早着呢。因为优秀得人很多。人事也在衡量,那些技术好(过了用人部门面试),然后要的少人。
个人作品与项目(机会卷)
个人作品与项目是 "机会卷" ------ 它决定你能否获得面试邀约,能否在面试中脱颖而出。很多初中级开发者的简历里,项目都是 "业务驱动的重复劳动",没有亮点,自然难以打动面试官。而好的项目体现在,核心要体现 "主动性" 与 "价值感"。有人说,公司得业务就这样啊,那我能怎办,公司得业务就是增删改查,就会给人一种感觉,前端没什么难得。有什么难的,增删改查。但是前端得canvas做游戏做图表能做的很深,前端工程化各种自动化工具得实现,低代码得实现也比较考验逻辑思维。当公司没得业务背景得时候,作品是比较重要得。博客文章,还是github,大胆得展现自己得Idea,你的作品,总有人会欣赏你。
从 "执行者" 到 "解决者"
初中级做项目,往往是 "产品给需求,我来实现";中高级做项目,要主动发现问题、解决问题,并量化价值。
举几个实际案例,帮你理解 "项目深度" 的差异:
- 初中级描述:"我做了一个商品列表页,实现了分页、筛选功能。"
- 中高级描述:"我负责的商品列表页,初期加载耗时 800ms,用户投诉卡顿。我通过三方面优化:① 接口数据裁剪(只返回页面需要的字段,减少 30% 数据量);② 前端懒加载(首屏只渲染可视区域 20 条数据,后续滚动加载);③ 缓存策略(缓存筛选条件对应的结果,重复请求命中率提升 60%)。最终加载耗时降至 200ms,页面停留时长提升 25%。"
关键在于:突出 "问题 - 方案 - 结果" 的闭环,用数据量化价值。哪怕是小项目,只要能体现 "主动优化" 的思维,就能区别于普通开发者。
打造 "差异化标签
如果你的工作项目都是重复业务,没有亮点,那个人作品就是弥补短板的关键,**个人作品就是你的 "第二简历"。**它不需要多复杂,核心是 "解决自己或者帮他人的真实需求",并体现技术深度。
个人作品方向:
- 工具类:比如开发一个 "CSS 动画生成器"(用到 CSS 变量、JS 动画逻辑、React/Vue 组件封装),或 "接口 Mock 工具"(用到 Node.js、Express、数据持久化);
- 开源贡献:给常用库(如 Vue、React 生态插件)提 PR,修复 bug 或新增功能;哪怕只是完善文档,也能体现你的技术理解;
- 技术博客 / 视频:把项目中解决的问题写成文章(比如 "如何排查 React 内存泄漏"),或录制技术教程。这不仅能梳理知识,还能让面试官看到你的表达能力与技术沉淀。
作品不在多,而在 "精"。一个能讲清 "设计思路、技术选型、遇到的坑" 的作品,远胜于十个半成品。
因为我主要写react,虽然我也会Vue,但是投Vue得岗位,我也收到了很多面试官得邀请,我也问过人事,人事说,你做的项目,虽然技术栈不是很匹配,但你得文章还是比较吸引人得。所以当项目不行得时候,作品尤其重要,而且很多人面试机会都没有,一个岗位几百人投,你想想,凭什么选你,学历?大厂经验?还是凭你更卷?
技术体系(入门卷)
很多初中级开发者的技术栈是 "零散的":会用 React,但不懂虚拟 DOM;会用 webpack,但不懂构建优化;会写 JS,但不懂异步模型。而中高级的核心是 "构建系统化的技术体系"------ 不是 "会用",而是 "懂原理、能落地、会优化"。
我把前端技术体系拆分为四层 ,帮你对标提升:
技术层级 | 基本重点(会用) | 重点(懂原理 + 能优化) |
---|---|---|
基础层 | JS 基础(变量、函数、循环)、CSS 布局(Flex、Grid)、HTML 语义化 | JS 深入(原型链、闭包、异步模型、垃圾回收)、CSS 进阶(BFC、动画性能)、浏览器原理(渲染流程、回流重绘、缓存机制) |
框架层 | 熟练使用 React/Vue(写组件、调接口、用状态管理) | 懂框架设计理念(React 的 "单向数据流"、Vue 的 "响应式原理")、能排查框架问题(React 内存泄漏、Vue 组件通信异常)、对比框架差异(何时用 React / 何时用 Vue) |
工程化层 | 会用 webpack/vite 打包、能写简单的 CI 脚本 | 构建优化(webpack 分包策略、vite 预构建)、质量保障(ESLint 定制、单元测试 / Jest、E2E 测试 / Cypress)、部署流程(Docker 容器化、灰度发布) |
扩展层 | 了解小程序 /uni-app 的基本开发 | 跨端方案对比(小程序 vsRNvsFlutter)、服务端知识(Node.js 接口开发、数据库基础)、性能优化(首屏加载、长列表优化、接口性能) |
而且这些还只是基础,大公司,又讲究架构设计,微前端等。
从 "点" 到 "网",建立知识关联
也许吧中高级不是 "学更多技术",而是 "把零散的知识点连成网"。比如:
- 看到 "React 组件渲染",能联想到 "虚拟 DOM→Diff 算法→ Fiber 架构→性能优化(memo、useMemo)";
- 看到 "页面卡顿",能联想到 "浏览器渲染流程→回流重绘→JS 执行阻塞→优化方案(requestAnimationFrame、Web Worker)"。
举个实际例子:初中级遇到 "列表渲染卡顿",可能只会想到 "用懒加载";而中高级会先排查原因 ------ 是 "DOM 节点太多导致回流"?还是 "JS 执行时间过长阻塞渲染"?或是 "图片太大未优化"?然后针对性解决:DOM 太多就用 "虚拟列表",JS 阻塞就用 "Web Worker",图片问题就用 "懒加载 + 压缩 + CDN"。这就是 "体系化思维" 的差异。
别陷入 "原理焦虑"
很多人会陷入 "看源码 = 中高级" 的误区:强迫自己看 React 源码,看不懂就焦虑;死记硬背 webpack 插件原理,转头就忘。其实没必要 ------原理不是 "背会的",而是 "用会的"。
比如你想懂 "Diff 算法",不用先啃 React 源码,而是先做一个 "简易虚拟 DOM":自己写一个函数对比新旧节点,实现 "同层对比、key 复用" 的核心逻辑(就像我在 "见识与思想" 部分写的简化代码)。在实现过程中,你自然会理解 "为什么要同层对比""key 的作用是什么"------ 这比硬看源码高效得多。
形成良好得知识体系
因为我的知识体系还是挺庞大得,我只能展示一部分,可能后面分不同的章节进行分享。我就放部分截图,多问个为什么。


从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
一个22届被裁前端思想上得转变背景以及唠叨 抛出问题,你觉得什么样的人算得上大佬?或者是怎样得人会成为大佬?这是我去面试 - 掘金
只有自己的知识体系足够深,足够广,你面试的运气才会增加。
见识与思想(核心卷破局关键)
根本原因
**为什么我会说这个是关键呢,很多人都停留在初中级,与其说技术停留在了初中级,不如说思想停留了在了初中级别。大家都知道中高级别是需要学会源码得,需要会原理得,需要知道这个工具实现得核心得。但是记不住啊,不管看了多少遍,不理解啊,记不住啊,很崩溃啊,就算现在记住了,后面也会忘记。会有这种情况得出现,别人为什么会,他们更聪明嘛,是天才嘛,好像人与人之间好像是不一样得,我们都是会有这样得想法。**我们面了那么多,确实大家都会发现行情会很差,但是对于一些人他们好像不受行情得影响,我们也会有一种感受,就感受面试好像真的是看运气,就是面试官问道东西都是我会得哪一方面,他提问得问题我都能够回答上来,就会给人一种运气成分得感觉,这是不可否认得,我也面过,跟面试官完全不在一个频道上得面试,我也会崩溃,但我是当作扩展我的一种见识完善我的知识体系方式去处理。
但是你要知道,当你的见识,跟知识体系足够大足够深的时候,你就能够跟大部分的面试官聊得来,技术广度,跟技术得深度,决定了你哪所谓得运气得大小。技术广度,我觉得是一种见识,而深度是一种好奇心思想,只有多问几个问什么,才会层层深入思考,打破沙锅问到底,这才会有这个深度。而广度是学习扩展得一种过程。在我看过来,这种广度不止是前端体系广度,更有交流沟通,用户交互,用户心理,社会,在产品中前端是怎样得一个角色,那看看产品得书籍以这种全局得思想去看待,也可以多跟大佬交流,前提是你认知能get他得表达意思。同时也要他认真跟你分享他得思想,而不是听他得。这种突破技术上得认知,这种见识得扩展是不是更好点。
有人会反驳,好像你说得学的有点杂。那你就误解我的意思了,我想表达得是其它行业作为了解,扩展增加自己见识,这样也好跟不同人沟通,你懂点产品,产品大部分都是不懂技术得,当他没办法理解得时候,你可以站在他的角度,以大白话得形式说给他所能理解得听,那他能get到你得思想我们技术得看法角度,这样也能更好得沟通表达。想起了一句话,当你跟一个人相处在一起得时候,你觉得很舒服,那是因为别人得见识跟认知比你更高,起码不会比你差。你才能感受到这种舒服。
关注自己内在
最重要的一点,如何记住怎么广怎么大得知识体系。好像记不住啊,因为太多了。每个人记忆点都不一样,所以我们也要关注自己得内在,自己得精神世界,自己如何去记得住这些东西内。推荐可以看看《百年孤独》学会享受孤独,成长得路上都是孤独得,看看《月亮与六便士》《小王子》等等书籍。为什么强者总是独行呢,因为他们会关注自己,知道自己内心要什么,然后去学什么,怎样记得住。关键核心点,不是记住,而是先理解,因为只有理解了,才能够记住,而对于理解:
不管理解,怎么记忆,梳理清楚,其实就是三个问题,
1.这个工具是干嘛用的,解决了什么问题,它的设计理念是什么?
2.它是怎么实现的,核心原理,以及实现的大致流程 ,然后怎么使用的?
3.跟其它的对比有什么优势跟缺点。最近更新了什么?
对应三W一H学习法
What: 是什么 - 它的介绍
Why: 为什么使用 - 你为什么想到用它,想解决什么问题
How: 怎么用 - 首先做出一个最简单的例子,运行一下
When: 使用场景 - 结合逻辑和业务,决定它的位置
这样是不是很清晰了。
示例
对于理解完后就是记忆。只能说每个人得记忆方式都不一样,而且是有技巧得,我是通过关键词记忆法,然后通过关键词去联想起来。把它串起来。
就比如说Diff算法得实现
Diff 算法是虚拟 DOM 机制的核心,用于计算新旧虚拟 DOM 树的最小差异 ,最终只将这些差异应用到真实 DOM,从而减少不必要的 DOM 操作。不同框架(如 React、Vue)的 Diff 实现略有差异,但核心思想一致:通过优化对比策略降低复杂度,快速定位需要更新的节点。
一、Diff 算法的核心优化策略
传统的树形结构全量对比(如递归对比所有节点)时间复杂度为 O(n³) (n 为节点数),难以满足前端高频更新需求。前端框架的 Diff 算法通过以下策略将复杂度优化至 O(n)(线性复杂度):
- 同层对比:只对比同一层级的节点,不跨层级比较(如不将父节点与子节点对比)。若父节点类型不同,直接判定 "整个子树需要替换",无需深入子节点对比。
- 类型优先 :若两个节点类型不同(如
div
与span
),直接判定 "旧节点需删除,新节点需创建",不再对比子节点。 - 列表 key 标识 :对于列表节点(如
[<li/>, <li/>]
),通过key
标识节点唯一性,快速定位可复用节点,避免错误复用导致的状态异常。
二、React Diff 算法的实现步骤
以 React 为例,Diff 算法的核心流程分为树级对比 、组件级对比 、列表节点对比三个层次,逐步缩小差异范围。
1. 树级对比:快速排除跨层级差异
树级对比是 Diff 的第一层检查,目标是快速判断 "是否需要全量替换子树":
- 遍历新旧虚拟 DOM 树的同一层级节点(如根节点的子节点、子节点的子节点等)。
- 若当前层级的节点数量、类型差异较大(如旧节点是
div
,新节点是span
),则直接标记 "删除旧节点及其所有子节点,创建新节点及其子节点",终止该分支的深层对比。
示例:
javascript
// 旧虚拟 DOM
{ type: 'div', children: [{ type: 'p', children: '旧内容' }] }
// 新虚拟 DOM
{ type: 'span', children: [{ type: 'p', children: '新内容' }] }
树级对比发现根节点类型从 div
变为 span
,直接判定 "删除旧 div
子树,创建新 span
子树",无需对比子节点 p
。
2. 组件级对比:复用相同类型组件
当节点类型相同时(如都是 div
标签或都是 User
组件),进入组件级对比:
- 原生标签(如
div
、p
) : 对比节点属性(props
)的差异(如className
、style
、onClick
等),标记 "需要更新的属性"(无需重新创建节点,只需更新属性)。 - 自定义组件(如
User
) : 复用组件实例(避免重新初始化),仅对比props
差异。若props
相同,则组件不重新渲染;若props
不同,触发组件的render
方法生成新的子虚拟 DOM,继续递归对比。
示例:
javascript
// 旧虚拟 DOM(自定义组件)
{ type: User, props: { name: '旧名' }, children: [] }
// 新虚拟 DOM(自定义组件)
{ type: User, props: { name: '新名' }, children: [] }
组件类型相同,对比 props
发现 name
变化,触发 User
组件重新渲染,继续对比其内部子节点。
3. 列表节点对比:通过 key 复用节点(核心难点)
列表节点(如 ul
的 li
子节点)是 Diff 中最复杂的场景,因为列表可能频繁增删、排序,需要高效定位可复用节点。React 通过 key
实现这一目标。
(1)无 key 或 key 不稳定(如 index)的问题
若列表节点无 key
或使用索引 index
作为 key
,当列表变化时(如头部插入元素),React 会错误地复用节点,导致状态混乱。
示例:
jsx
// 旧列表(key 为 index)
[<li key={0}>A</li>, <li key={1}>B</li>]
// 新列表(头部插入 C)
[<li key={0}>C</li>, <li key={1}>A</li>, <li key={2}>B</li>]
React 会认为 "key=0 的节点从 A 变为 C""key=1 的节点从 B 变为 A",导致所有节点被重新渲染(而非仅新增 C)。
(2)key 为唯一标识时的对比逻辑
当 key
是稳定的唯一标识(如数据 ID)时,React 通过以下步骤对比列表:
-
构建旧节点 key 映射表 :将旧列表节点按
key
存储为{ key: 节点 }
的映射(如{ 'a1': 节点A, 'b2': 节点B }
),便于快速查找。 -
遍历新列表节点:
- 对每个新节点,用其
key
在旧映射表中查找对应的旧节点。 - 若找到(
key
匹配且类型相同):复用旧节点,对比并更新属性 / 子节点,记录节点位置变化(如需移动)。 - 若未找到:标记 "需要创建新节点"。
- 对每个新节点,用其
-
清理未复用的旧节点:遍历旧映射表,标记所有未被新列表复用的节点为 "需要删除"。
(3)列表 Diff 的优化:减少移动操作
为进一步减少节点移动次数,React 会通过 "双指针法" 定位节点的最小移动范围:
- 用两个指针(
oldStart
、oldEnd
指向旧列表首尾,newStart
、newEnd
指向新列表首尾)。 - 优先对比首尾节点(如旧首 vs 新首、旧尾 vs 新尾),若匹配则直接复用,指针向中间移动;
- 若首尾不匹配,再用
key
映射表查找,找到后移动节点,否则创建新节点。
这种策略能在多数场景下(如列表尾部新增 / 删除)避免全量遍历,进一步提升效率。
三、简化版 Diff 算法实现代码
以下是模拟 React Diff 核心逻辑的简化代码,展示如何对比两个虚拟 DOM 节点并生成差异:
javascript
// 虚拟 DOM 节点结构(简化)
// { type, key, props, children }
/**
* 对比新旧虚拟 DOM 节点,返回差异对象
* @param {*} oldVNode 旧虚拟 DOM
* @param {*} newVNode 新虚拟 DOM
* @returns 差异对象 { type: 'REPLACE' | 'UPDATE' | 'MOVE' | 'REMOVE' | 'ADD', ... }
*/
function diff(oldVNode, newVNode) {
// 1. 新节点不存在:标记删除旧节点
if (!newVNode) {
return { type: 'REMOVE', vnode: oldVNode };
}
// 2. 旧节点不存在:标记新增新节点
if (!oldVNode) {
return { type: 'ADD', vnode: newVNode };
}
// 3. 节点类型不同(如 div vs span,或不同组件):标记替换
if (oldVNode.type !== newVNode.type) {
return { type: 'REPLACE', oldVNode, newVNode };
}
// 4. 节点类型相同且是文本节点:对比内容
if (typeof oldVNode === 'string' && typeof newVNode === 'string') {
if (oldVNode !== newVNode) {
return { type: 'UPDATE', content: newVNode };
}
return null; // 无差异
}
// 5. 节点类型相同且是元素/组件:对比 props 和 children
const diffResult = { type: 'UPDATE', props: {}, children: [] };
let hasDiff = false;
// 5.1 对比 props 差异
const allProps = { ...oldVNode.props, ...newVNode.props };
Object.keys(allProps).forEach(key => {
const oldVal = oldVNode.props[key];
const newVal = newVNode.props[key];
if (oldVal !== newVal) {
diffResult.props[key] = newVal;
hasDiff = true;
}
});
// 5.2 对比子节点(列表 Diff)
const oldChildren = oldVNode.children || [];
const newChildren = newVNode.children || [];
const oldKeyMap = createKeyMap(oldChildren); // 构建旧子节点 key 映射
// 遍历新子节点,查找可复用旧节点
newChildren.forEach((newChild, newIndex) => {
const key = newChild.key;
if (key) {
const oldChild = oldKeyMap[key];
if (oldChild) {
// 递归对比子节点差异
const childDiff = diff(oldChild, newChild);
if (childDiff) {
diffResult.children.push({
index: newIndex,
diff: childDiff,
key: key
});
hasDiff = true;
}
delete oldKeyMap[key]; // 标记为已复用
} else {
// 新节点,无对应旧节点:新增
diffResult.children.push({
index: newIndex,
diff: { type: 'ADD', vnode: newChild },
key: key
});
hasDiff = true;
}
} else {
// 无 key:简单对比同位置节点(不推荐,仅作示例)
const oldChild = oldChildren[newIndex];
const childDiff = diff(oldChild, newChild);
if (childDiff) {
diffResult.children.push({ index: newIndex, diff: childDiff });
hasDiff = true;
}
}
});
// 剩余未复用的旧节点:标记删除
Object.values(oldKeyMap).forEach(oldChild => {
diffResult.children.push({
diff: { type: 'REMOVE', vnode: oldChild }
});
hasDiff = true;
});
return hasDiff ? diffResult : null;
}
// 辅助函数:创建旧子节点的 key 映射表
function createKeyMap(children) {
const map = {};
children.forEach(child => {
if (child.key) {
map[child.key] = child;
}
});
return map;
}
四、Diff 算法的意义与局限
- 意义:通过高效对比定位最小差异,将 DOM 操作从 "全量更新" 变为 "精准更新",大幅减少重排 / 重绘,是虚拟 DOM 性能优势的核心保障。
- 局限:
- 额外的 JavaScript 计算开销(但通常远小于 DOM 操作开销);
- 列表
key
设计不当(如用 index)会导致 Diff 效率下降甚至状态异常; - 极端场景(如完全逆序的列表)仍可能产生较多移动操作(部分框架通过 "最长递增子序列" 算法进一步优化)。
看了这些一堆大是不是很难记住:而我是这样记住得
记忆点
理念:用于计算新旧虚拟dom树的最小差异
核心思想一致:通过优化对比策略降低复杂度,快速定位需要更新的节点。
Diff 算法的核心是通过 "同层对比、类型优先、key 标识" 三大策略,将树形结构对比复杂度从 O (n³) 降至 O (n)
实现步骤:
1. 树级对比:快速排除跨层级差异
2. 组件级对比:复用相同类型组件
3. 列表节点对比:通过 key 复用节点(核心难点)
也在一定得局限性:额外得js计算,列表key设计不当,极端场景(完全逆序列表)
起码核心点我是记住得,根据这些核心关键词,去联想,扩展。
这样是不是好记很多了吧。
提外话
思想体系的局限性与破局之道
- 知识过载风险 芒格的 100 + 思维模型可能导致「为用而用」的形式主义。解决方案是建立「问题导向的模型索引」------ 例如,遇到决策困境时优先调用「决策树」「概率加权」模型,遇到创新瓶颈时启用「第一性原理」「反脆弱」模型。
- 文化适配挑战 达利欧的「极度透明」原则在等级森严的组织中可能引发冲突。可采取「渐进式透明」策略:从技术文档共享开始,逐步过渡到代码审查、需求评审的全员参与。
- 人性博弈困境 西奥迪尼的影响力原则若被滥用,可能沦为「操纵工具」。需建立「道德校准机制」------ 例如,在应用「稀缺性」原则时,必须确保信息真实(如「库存紧张」需有数据支撑),避免制造虚假紧迫感。
思想整合的终极价值:构建「认知免疫系统」
这些作者的思想共同指向一个核心:通过系统化的认知训练,建立抵御思维定式的能力。例如:
- 芒格的多元思维模型帮助识别「确认偏误」(只关注支持自己观点的证据);
- 达利欧的「可信度加权」机制防止「群体迷思」(团队成员不敢提出反对意见);
- 西奥迪尼的「承诺与一致」原则提醒我们警惕「沉没成本谬误」(因前期投入而坚持错误决策)。
这种「认知免疫系统」在 AI 时代尤为重要 ------ 当 ChatGPT 等工具能快速生成技术方案时,人类的核心竞争力将转向「批判性思维」与「创造性整合」。正如芒格所言:「你必须知道重要学科的重要理论,并经常使用它们 ------ 要全部用上,而不是只用几种。」
思想价值的三维评估
维度 | 评价要点 | 典型案例 |
---|---|---|
理论深度 | 打破学科边界,揭示行为底层逻辑 | 芒格用「生态位」理论解释企业竞争,西奥迪尼用「社会认同」解析用户从众心理 |
实践广度 | 在科技、投资、管理等多领域验证有效性 | 桥水基金的「原则驱动」、OPPO 的「产品领导力」培训 |
认知迭代 | 提供可进化的方法论,而非静态知识 | 达利欧的「痛苦 - 反思」循环、Cagan 的「用户体验验证」机制 |
结局(看运气)
这里为什么还是说看运气,玄学来的,就怎么说吧,能不能进入一家公司真的看运气。这个是真理,不管是作品或项目,机会也好,还是技术入门也好,见识与思想个人的核心竞争力也罢。跟老板聊不来,公司的预算不够,行情不好。那你也没办法,并不是所有的努力都会成功,并不是能跟所有人都能跟你聊得来。种种原因吧。但即便运气是不可控的外部变量,我们能把控的,仍是'通过作品、技术、认知提升自己的竞争力'------ 毕竟,只有先进入'候选池',才有被'运气选中'的可能。
最后
找对自己得方法才是关键,我说也只是我的,大佬之所以为大佬,真的是他们脑子更发达嘛,学会袪魅。找对自己得学习方法,找对自己路,你也能走得更远。要相信自己,自己也不差,自信也很重要。
一个人得能力是有上限得,当你得认知上限了,你只能挣你认知里面得钱。在一个是因为你的思想有突破后,行动力不差,能力不差,你就懂得如何去学习,如何去把自己得知识体系扩展开来,有自己得独特见解,方能够破局。好像说得笼统了,哪问题又如何突破自己得认知,见识呢,多一个好奇心是关键,看不同得书,尝试去看看关于产品得书,用户交互设计得书,心理学,社会学,学习如何去交流,沟通,关注自己得精神,自己得内在,从自己得这种内在突破也是一种方式,有句话是怎么说得,"鸡蛋从内打破是生命,从外打破是食物"。在去尝试看以前看不懂得书,找出能让记住这些原理,这些知识体系方式。每个人都不一样,靠你自己去用心发现这种规律。引用《小王子》一句话,重要的事情是要用心去感受得,眼睛是看不到得。
总结
如何从初中级迈入中高级,与其说,技术的扩展学习,各方面的学习,不如说突破自己的见识,认知+执行力。思想突破后,才能明确 "学什么、怎么学、怎么用",再用执行力落地。