1. 为什么写了这本书,以及"技术决定论"的迷思
带过团队、面试过几百个工程师之后,我越来越确定一件事:技术能力决定你能不能拿到Offer,但软技能决定你能走多远。
这听起来像一句正确的废话,但真正想明白的人不多。以我面试的经验,很多3到5年经验的开发者,技术上已经足够独当一面了,但谈到跨部门协作、需求沟通、项目推进这些事,明显露怯。反过来,那些晋升快、带项目、能拿到好资源的,往往不是代码写得最漂亮的人,而是"什么都懂一点"的综合型选手。
我在写《超越编程: IT软技能完全指南》这本书的时候,最开始问自己一个问题:市面上已经有无数的技术文档、框架教程、底算算法书,为什么还需要一个专门谈软技能的东西?
答案是:技术书教你怎么把事做对,但没有人教你怎么把事做成。
举个最直观的例子。一个团队里有两个水平差不多的工程师,A每天埋头写代码,需求不明确也不问,闷头做完发现方向错了,返工两次;B接到需求先花半天找人确认边界,列出风险点,同步给相关同事,开发中遇到问题及时暴露,最后项目顺利上线。谁的贡献大?从代码量看,A可能写了三倍的代码;但从项目结果看,B才是真正推动事情的人。
这本书要解决的,不是"怎么用某个框架",而是"怎么用你的框架能力去解决真实世界里的问题"。它面向所有IT从业者——从刚入行的初级开发,到准备转型管理岗的技术骨干,再到需要与技术团队频繁打交道的产品、运营、项目经理。核心观点一句话:编程是你的硬底座,软技能才是你的天花板。
很多开发者容易陷入"技术至上"的思维定式,觉得只要我看完某本书、精通某个框架,就能解决一切问题。我年轻的时候也这么想,后来吃了几次亏才明白,程序员坐在电脑前的世界是一个逻辑严谨、非对即错的理想国,但真实的职场是一个充满歧义、情绪、博弈和妥协的现实世界。代码不会跟你吵架,但人会。
这也是我把书名定为"超越编程"的原因——不是让你不学技术,而是让你在技术之上,长出另一种能力。这篇文章我会从职场的几个核心场景出发,把我这些年的经验和教训掰开揉碎讲给你听。
2. 沟通能力:程序员最被低估的生存技能
2.1 向上汇报:不是邀功,是降低不确定性
很多技术人讨厌汇报,觉得写周报、做PPT是形式主义,是"表演"。这个认知害人不浅。
我见过太多这样的场景:开发做了三个月,埋头苦干,Leader问进度,他说"还在做,快了"。Leader再问细节,他开始讲技术难点,讲了十分钟,Leader一头雾水,最后只能拍拍他肩膀说"加油"。三个月后项目延期,复盘会上Leader只能说"风险评估不足"。
问题出在哪?出在汇报的本质被搞错了。汇报不是让你证明自己有多辛苦,而是让决策者能在信息充分的情况下做判断。
举一个我常用的汇报模板。每周一,我会给老板发这样一封邮件,四段话,总共不超过两百字:
- 上周围绕X需求完成了哪些关键节点,附带可验证的产出(合并了什么代码、完成哪个模块的联调)。
- 当前最大的风险是什么,需要在什么时间点之前做决策。
- 是否需要协调什么资源(比如测试人力、设计支持)。
- 下周三个核心目标。
你看,这个结构没有任何"我很努力"的废话,全是决策者需要的信息。老板看你的邮件,只需要三十秒,就能知道现在项目状态如何、哪里需要他出手、下周预期是什么。这种汇报方式,一次两次看不出来,半年后老板对你评价和那些只会说"还在做"的人,绝对是天壤之别。
这里面有个心理门槛要跨过去:很多人怕汇报显得自己能力不行,比如主动暴露风险,怕老板觉得自己搞不定。我的经验恰恰相反。暴露风险并提供解决方案的人,在老板眼里是"靠谱";掩盖风险直到爆雷的人,才是不靠谱。风险本身是中性的,重要的是你有没有提前看见它、并给出处理方案的能力。
2.2 跨部门沟通:听懂"人话"背后的真实诉求
跨部门沟通是另一个重灾区。技术人经常抱怨产品和业务"不懂技术",提的需求无理取闹。但我想说,很多冲突的本质不是谁对谁错,而是双方在用不同的语言体系描述同一件事。
业务说的是"我要什么",技术说的是"怎么做",两者中间隔着一层"为什么"。如果你只听到"要什么"就急着说"做不到",那沟通当场就死了。先问为什么,往往能柳暗花明。
我举个例子,某个跨平台系统项目里,某次业务方提了一个需求:要在用户列表页实时显示所有在线用户的精确地理位置。当时负责的工程师第一反应是"不行,前端频繁定不到位会爆,后端高并发扛不住"。如果在这里直接拒绝,会议就变成拉锯战了。
但多问一句"你们为什么要展示实时位置?"之后,真相是——运营想判断某个区域的用户活跃度,好决定在那个城市投广告。这就完全不一样了。业务方的真实诉求是"区域的活跃度趋势",而不是"实时精确经纬度"。最后方案改成了按城市维度的半小时聚合数据,成本只有原来的十分之一。
这中间省下来的工作量、避免的线上事故,就是沟通带来的直接价值。当你能从"需求"跳到"动机",你在团队里的位置就从一个执行者变成了能解决问题的人。
我总结了跨部门沟通的三板斧:
- 接到需求先复述确认:"你要的是不是这样一个东西?"
- 问三个"为什么"直到触达真实目的。
- 说"不行"的时候,一定带上替代方案,哪怕是临时的。
这套方法让我从以前"和产品吵完架谁都不理谁",变成现在大部分需求都能在半小时内对齐方案。技术这个职业,越往后走,你会发现和机器打交道的时间在变少,和人类打交道的时间在变多。这件事要尽早想明白。
2.3 职场写作:周报、邮件、技术文档的通用心法
程序员普遍有个毛病——写代码时逻辑清晰,一写文字就变成流水账。周报写八百字描述每天干了啥,邮件发出去没人回,技术文档写完自己都不想看第二遍。
我以前也是这样,后来总结出一个非常简单的原则:职场写作不是写文章,是"压缩信息"和"释放决策"。
场景拆开说:
写周报,核心是"这周有什么值得别人知道的变化",而不是"我这周做了什么"。如果一个工作内容和上周完全一样、没有新进展,那它的价值就是"还在进行中",不值得占用读者两行以上的注意力。周报里最该突出的,永远是里程碑、风险、求助。
写邮件,核心是"收件人看完之后要做什么"。一封合格的邮件,结尾一定要有一句明确的行动指向:"请在本周五前确认方案A,如需调整请回复。""以上需要你协助协调测试资源,请告知可行性。"没有行动指向的邮件,本质上是一张便签纸,被淹没是正常的。
写技术文档,核心是"别人看完能否独立上手操作"。我以前带团队做文档评审,只问一个问题:"现在把写文档的人开掉,你对着这篇文档能不能在半天内跑起来?"绝大多数文档都会在这一问之下暴露原形——环境依赖没写、配置文件漏了、关键步骤一句"按需修改"带过。真正好的技术文档,目标是让自己三个月后失忆,也能按图索骥。
顺带分享一个写作通用结构,任何事情都能套:先说背景和目的(为什么有这篇东西),再说当前状态(现在走到哪),然后说方案或建议(接下来怎么做),最后列行动项(谁来做什么,什么时候做完)。你把这个结构用熟练,就会发现邮件、周报、技术方案、甚至Slide都能快速搭出框架,而且不会漏重点。
3. 协作与项目管理:从"我"到"我们"的思维转变
3.1 Code Review:技术交流的本质是达成共识
只要说协作,Code Review(代码评审)是最常见也最容易做走样的环节。
很多团队的Code Review流于形式:小改动人人都能过,大改动评审三小时吵翻天;有人把Review当成找茬的舞台,有人把Review当成走过场的流程。这两种极端都说明团队没想明白一件事:Code Review的目的是什么?
我认为,Code Review表面上是"检查代码有没有Bug、有没有明显问题",实际上是让代码库向着团队共识的方向慢慢演化。它是一次异步的技术交流,是集体对"这段代码应该长什么样"达成共识的过程。
理解了这一点,你就知道怎么做才能把Review做扎实:
第一个要点,小步提交。一个几万行的大改造,谁看了都害怕,评审者只能草草掠过。你把改动拆成几百行的小提交,每次Review的人都能真正看进去,问题的发现率显著提高。我见过一个团队强制要求每次MR(Merge Request)不超过300行,结果Review的质量和速度都上了一个台阶。
第二个要点,用问题替代命令。我看到有人在Review里写"这里应该用XXX模式重写""这个变量名改成XXX"——这种命令式语气容易引发防御心理。更高效的做法是提问:"这里用XXX模式是不是更合适?""这个变量名我第一眼看成了另一个意思,是不是可以换个表达?"提问的姿态,把评审者和被评审者放在了探讨问题的同一侧,而不是对立的裁判和被告。
第三个要点,把约定写进文档。Code Review中反复出现的同类意见(比如命名规范、错误处理方式),应该沉淀进团队规范文档,而不是每次都靠人肉提醒。规范文档存在的意义,是让"共识"变成"默认",而不是每一次都重新讨论一遍。这一步做了,Review的重复争论会大幅减少。
3.2 技术方案评审:让所有人提前上车
比Code Review更靠前的协作环节,是技术方案评审。很多项目死在一种常见的情况下:开发到一半突然说"这个需求之前没说清楚,架构上做不到,得改方案",这个时候需求冻结、排期已定,一改就是大事故。
为什么会出现这种情况?因为方案评审的环节被你跳过了,或者走了形式。
我要求团队里,凡是改动会影响到线上架构、数据模型、接口契约的,必须写一页纸的技术方案,哪怕只有半页也行。这页纸包括:背景(要解决什么问题)、方案(三个候选,选哪个,为什么)、影响面(哪些系统要动)、回滚预案(如果出问题怎么办)、验收方式(怎么算完成)。
方案写完了,拉上相关的后端、前端、测试、运维,开一次半小时的评审会。每个人都有机会指出自己视角下的问题——前端发现接口设计不友好,运维发现部署方式不兼容,测试发现了遗漏的场景。这些发现如果等到开发完再提,那就是返工;在评审阶段提,只是一个修改意见。你在设计阶段用一个小时换来的意见,可能帮你避免开发阶段花一个星期返工。
技术方案评审还有一个隐藏的价值:让项目相关的人"提前上车"。参与过方案讨论的人,对项目有认知、有参与感,后续协作的摩擦会显著降低。你拉人评审过一次方案之后再去推进项目,会发现大家配合度比"突然通知你明天开始联调"高很多。
3.3 需求变更管理:不是拒绝,是流程化
在IT行业待过几年的人,一定会遇到需求翻来覆去改的问题。产品说"这个很简单,就换个字段",开发心里翻白眼:"你知道换一个字段牵扯多少东西吗?"
需求变更这件事,我建议用流程来管理,而不是用情绪来对抗。情绪化对抗的结果往往是两败俱伤——你被贴上"不配合"的标签,需求方被贴上"不靠谱"的标签,项目该延期还是延期。
我的做法是:任何需求变更都要走一个"轻量级"的流程:
- 变更提出方需要说清楚:为什么要改,不改会怎样,改了对用户的影响是什么。
- 开发侧需要评估:改动涉及哪些模块,工期变化多少,会不会影响现有排期。如果有影响,把这个影响显式写出来。
- 最终由项目经理(或特定负责人)拍板:接受变更、调整排期,还是本期不做、排入下期。
整个过程不需要开会超过15分钟,不需要复杂的工具,用IM群就能完成。它的核心价值不是"增加障碍",而是让每一次变更都变成有记录的决策,而不是空气里的争吵。等项目复盘的时候,你翻开记录就能看清楚:项目延期是因为新增了哪几个需求,每个需求的ROI是否值得。没有记录,一切锅都变成"开发能力不行",这是最冤的事情。
3.4 知识分享:你以为在帮别人,实际在帮自己
再往下说一层,团队协作还有一个高阶玩法:做知识分享。很多人觉得分享技术、写博客是The工余时间的额外负担,挤占了coding的时间。我的看法完全不同,分享本身是一种高效的学习方式。
认知科学里有个概念叫"费曼学习法",核心是通过"用自己的话教别人"来检验自己是否真的懂。你试着把一个技术点讲清楚的时候,往往能发现自己理解里的空洞。比如你觉得你懂线程池的运行逻辑,但让你给别人讲清楚"当核心线程满了、队列满了、最大线程也满了,新任务怎么办",你可能会卡壳。这个卡壳就是学习的起点。
我在团队内推过一次"每人每月一次技术分享",不限定主题,十五到三十分钟。为了准备分享,分享者往往要读源码、查资料、整理案例——这个过程本身就是一次深度学习。听众则能用三十分钟了解一个平时自己不太接触的技术域,视野一下就打开了。半年之后回头看,这个团队的整体技术氛围、方案设计的周全程度,都会上一个台阶。
顺便说一句,写作能力和技术影响力是强相关的。你们圈子里那些有名气的人,基本都有输出习惯。写博客、做分享,本质上是在互联网上建立你的"技术信用"——未来你跳槽、接私活、做开源项目,这个信用都能用上。而且写作能倒逼你把碎片知识编织成体系,这件事越早开始收益越高。
4. 问题解决与职业成长:破局的关键不在键盘上
4.1 定位问题:区分"表象"和"根因"
程序员最擅长的能力是什么?我观察下来,是Google(或者用你的搜索引擎)搜报错、看文档然后解决一个明确的问题。这种能力当然重要,但真正难的是处理一个模糊的、没有标准答案的问题——比如线上突然CPU飙升但没有任何报错、用户量翻倍但接口平均耗时线性增长、某个数据对不上且不知道从哪个环节开始错的。
面对这种问题,新手的典型反应是:打开终端,盯着监控面板,到处乱试,像没头苍蝇。有经验的人会先做一件事:把问题缩小范围。
我先讲一个排查过的经典案例。某个系统上,用户投诉接口偶尔会很慢,但没有规律。新手同事一开始怀疑数据库慢查询,排查半天没结果;怀疑网络抖动,也查不出所以然。后来我让他做一件事:把调用链路上的每个环节耗时都打点打出来,跑一个白天。结果发现,慢请求集中在某个时间段,而且都经过了同一台缓存服务器。再深挖发现,那台缓存服务器的内存使用偏高,触发了频繁的GC(垃圾回收),GC期间线程暂停导致下游所有调用变慢。问题定位清楚了,解决方案是给那台服务器扩容、调整GC参数,就解决了。
这个案例的关键不是最终那个技术手段,而是先通过打点把"问题发生在哪一段链路"确定下来,再针对那段链路深入。如果上来就在数据库上死磕,可能一周都找不到原因。
我总结了一套"问题定位四步法":
- 尽可能精确地定义现象:用户说"慢",是全部慢还是部分慢?是持续慢还是间歇慢?是哪个接口慢?
- 把现象转化成可观测指标:接口耗时、QPS、CPU、内存、GC、网络延迟……把可能相关的指标全部拉出来看。
- 缩小嫌疑范围:从最大的可能性入手,用排除法。比如先看是DB的问题还是应用的问题——把应用日志的慢SQL统计拿出来,如果DB确实快,那就排除DB。
- 验证根因:定位到怀疑对象之后,用一个最小化的实验去验证它。比如"把缓存扩容后观察两小时,如果曲线平了,说明就是它"。
这四步听起来简单,但实际操作中最大的坑是跳过第一步——一上来就凭感觉猜原因,然后一顿操作猛如虎,回头一看问题还在。所有的排查都应该始于"精确描述问题",这一步做得越细,后面越快。
4.2 时间管理:深度工作的正确打开方式
IT行业的工作特性是碎片化:一会儿IM响一下,一会儿邮件来一封,一会儿同事过来问个需求。很多人一天下来感觉忙得不行,但仔细一想,真正写完的代码没几行。这就是时间被切碎之后,大脑的上下文切换成本被忽略了。
时间管理这件事,我试过好几种流派,番茄工作法、GTD、四象限……最后真正留下来的是两条很朴素的原则:
第一条,保护深度工作时间。我每天会从日历上预留90到120分钟不被打扰的"深度工作"时间,这个时间段内IM状态改为勿扰模式,邮件不刷,手机扣在桌上。这段完整的时间用来处理需要高专注度的任务——写核心模块、设计复杂方案、复盘线上问题。90分钟和三个30分钟的效率完全不是一回事,因为前者能进入"状态",后者每到快进入状态就被打断,然后重新热身。
第二条,把"任务清单"变成"日程表"。绝大多数人用的待办事项列表本质上是一条愿望清单——写了十几项,但从来不会真的逐一完成。我更推荐的做法是:每天下班前花10分钟,把明天的核心任务安排到具体的时间段里。比如"9:30-11:00,完成订单模块的退款状态机设计;15:00-16:00,回复所有积压的评审意见"。这样到了第二天,你不用思考"我现在该做什么",直接执行就行,思考成本也是一种巨大的消耗。
顺带多说一句"多任务并行"的真相:人类大脑并不能真正同时处理两个需要认知的任务。所谓"一边开会一边回消息",其实是快速切换,切换带来的损耗比想象中高得多。想提升效率,与其学各种神器工具,不如先把"一次只做一件事"变成肌肉记忆。
4.3 复盘方法:让每次事故都变成资产
IT行业里流传一句话:"线上没有新鲜事。"意思是,今天遇到的事故、踩过的坑,大概率别人早就踩过了,甚至你自己之前也踩过类似的。那为什么这些问题还会反复出现?因为大多数团队没有做有效的复盘。
复盘不是"开个追责会,确定谁背锅",然后就没有然后了。有效的复盘长什么样?我给大家一套可落地的流程:
- 先记录事实,不评价人。按时间线列出:什么时间发生了什么,影响了什么,谁做了什么操作。这一步只摆事实。
- 再找根因,问五个为什么。比如"为什么缓存挂了?因为内存满了。为什么内存满了?因为大量请求写入缓存没有淘汰策略。为什么没有淘汰策略?因为当初上线时没考虑到这个流量场景。为什么没考虑?因为需求评审时没有人提出这个预案。"问到第五层,你会看到系统设计、流程规范上的漏洞,而不是把锅甩给某一次操作。
- 然后是制定行动项:不是"加强监控""多注意"这种空话,而是具体到"在缓存层增加容量告警,阈值80%时触发,责任人某某,完成时间X月X日"。
- 最后是跟踪闭环:行动项写出来不落地等于没有,半个月后复盘时要逐条核对。
这套流程坚持做下来,团队的工程质量会肉眼可见地提升。复盘的本质,是把已经发生的成本,转化为未来的收益。做一次不落地的复盘,比不做还糟——因为它会让所有人觉得"流程走完了,问题就没了"。
4.4 从技术骨干到技术负责人:能力模型的转变
在IT行业谈"成长",绕不开一个关键节点:从"自己做"到"带别人做"。很多优秀的工程师在这个节点上栽了跟头,因为他们用做技术的方式做管理——想把所有事情控制在手里,任何细节都要亲自确认,结果自己成为瓶颈,团队也被架空。
写这本书的时候,我花了很大篇幅讲"能力的迁移",核心观点是三个层面的转变:
第一个层面,从"解决问题"到"定义问题"。执行者拿到一个题目,会去做;管理者拿到的往往不是一个题目,而是一个模糊的领域,需要自己把它定义成具体的问题,再拆解成任务。别人向你汇报"支付成功率下降了",你不能直接说"你去把数据库慢查询优化一下",你要先定义清楚——成功率从多少降到多少?降的是哪个支付渠道?是新增用户还是存量用户?定义清楚了,解决方案才可能正确。
第二个层面,从"自己干"到"让别人干"。这个"让别人干"不是甩锅,而是相信团队、授权并兜底。刚开始带人的时候,我看着新人交上来的代码质量,恨不得自己全重写一遍。后来才明白,只有放手让他做、让他犯错、让他把Review意见默默消化掉,他才能成长。你替他做,他永远不会;你教他做,他做完了才是他的能力。
第三个层面,从"赢"到"共赢"。技术负责人需要协调的资源、需要对齐的目标,远超一个模块的范围。这时候还需要理解一件事:矛盾的解决不一定是你打赢我、我打赢你,而是找到让双方都往前走一步的路径。这种心态的转变,很多人到35岁、40岁仍然转不过来,这也是很多技术专家做不了管理的原因。
5. 常见问题速查:给实战场景的避坑清单
5.1 高频问题与应对策略
写到这里,我整理了一份实战中最常见的场景速查表。这些场景你大概率正在经历,或者即将经历,建议收藏备查。
| 场景 | 典型错误 | 更有效的做法 |
|---|---|---|
| 老板问项目进度 | 说"快了,在联调" | 直接说"接口已完成80%,剩下支付模块在做边界测试,预计周三能进生产,风险点是第三方回调延迟,已和对方确认过" |
| 产品需求不明确 | 直接动手写 | 先复述你的理解,列三条澄清问题,确认边界后再动手 |
| 同事代码有Bug | "你这写的什么玩意" | 私聊:把现象截图发过去,"这块逻辑我测了个场景没通过,你方便看下吗?" |
| 线上告警突发 | 手足无措直接上服务器乱查 | 先问三个问题:影响多大?什么时候开始的?最近变更了什么? |
| 多项任务同时涌来 | 来一个处理一个 | 区分紧急度和重要度,把不紧急的都放进"待办池",集中处理 |
| 会议太多没时间干活 | 硬撑着参加所有会 | 判断自己是否是决策人,不是就申请不参加、会后看纪要 |
这张表背后的通用逻辑就是:任何场景,先把"我要在这个场景里扮演什么角色、达成什么目标"想清楚,再行动。大多数人出问题,都是因为没想清楚就行动了。
5.2 新手最容易踩的三个坑
这么多年带下来,我注意到新人入职最容易踩的坑,往往不在技术上,而在以下几点:
第一个是最常见的:遇到问题只会自己闷头查,不知道求助。很多程序员有"求助羞耻",觉得问别人显得自己不行。但实际上,一个有经验的同事看一眼你的报错,可能十分钟就帮你定位了问题,你自己查可能要查半天。高效求助的正确方式不是甩一个截图过去说"求助",而是带着你的排查过程说:"我在做X,遇到了Y报错,我排查了A和B两条路,都没通,能帮我看看是不是还有别的方向?"这种求助展示了你已经付出了努力,别人也愿意帮你。记住一个原则:自己不思考到极限,不要轻易求助;但思考到极限后,赶紧求助。
第二个坑是忽视上下文,只看眼前一行代码。新人改Bug的时候,常常只看报错的那一行,改了这一个点,结果牵一发而动全身。改任何代码之前,先看调用链,先理解你改的这一行是什么上下文、会影响谁。代码不是孤岛,改一处导致另一处崩的案例我见得太多了。
第三个坑是以为"完成"等于"交付"。开发说"我写完了",但没自测、没更新文档、没通知相关方——这不叫交付,这叫"留下一堆隐藏问题"。一个合格的交付,是你自己能对着它把流程走一遍,确保不依赖你这个人也能被别人接管。在别人眼里,"代码能跑"和"交付可用",中间隔了一整个职业素养的距离。
5.3 我的检查清单:推荐你直接抄作业
最后给大家一份我用了很多年的软技能自查清单,算不上什么灵丹妙药,但每次定期对照着过一遍,都能发现自己松懈的地方。你可以在手机上建一个笔记,每季度翻出来自检一次。
- 上一次主动向老板同步项目状态,是一个星期以内吗?
- 最近一次需求变更,是否留下了文字记录和决策依据?
- 上一次Code Review给同事提的意见,是在讨论方案而不是命令改代码吗?
- 本周是否有过一段90分钟以上不被打扰的深度工作时间?
- 最近一次线上事故/重大问题的复盘,是否产出了明确行动项并验证过落地?
- 近期是否分享过一次技术知识,或者输出过一篇技术文档?
- 当任务过多的时候,是否主动说过"不"或请求了资源倾斜?
这七条看着简单,每条背后都是一整个领域的能力。如果你的答案里有三个以上"否",那就说明你在某些维度上正在走下坡路,值得花点时间补一补。
6. 写在最后:技术之外的那些事
这本书的标题叫"超越编程",最后我想多说几句超越编程之外的话。
一个人在IT行业的天花板,从来不是技术深度,而是技术深度的变现能力。同样的技术,有的人做成了让人眼前一亮的产品,有的人做成了维护到想离职的遗留系统;同样的需求,有的人三言两语对齐了认知,有的人拉扯两个星期还在原地打转。差别不在键盘上,在你如何处理与人相关的一切。
我在实际工作中见过太多遗憾的案例。某位能力很强的同事,代码质量在团队里数一数二,但每到晋升评审就卡壳,原因是"无法清晰表达自己的设计思路""跨部门协作评分低"。反过来,也有技术明显平庸但极其会沟通、会推动的人,一路走上了管理岗。现实确实是这样的,这不是谁对谁错的问题,而是你用什么维度在行业里换取回报的问题。
所以我给所有读者的建议都很简单:如果你还年轻,别把全部业余时间用来刷新框架的教程。分一点时间给经典书,分一点时间练写作,分一点时间看些沟通、心理学、项目管理的书。这些在当时看起来"没用"的东西,往往在你最没防备的时候帮上大忙。
这个主题还能延伸出很多东西——比如怎么把个人影响力延伸到开源社区、怎么在跨文化团队里高效协作、怎么用结构化思维提升方案演讲能力——篇幅有限,这些有机会再展开讲。最后分享一个小技巧吧:我每次决定做一件有挑战的事情时,会先在心里问自己一遍"如果一年后的我想给现在的我发一条提醒,他会说什么"。答案常常不是"多学一个框架",而是"多跟那个谁聊聊""把那封邮件早点发出去""别怕问蠢问题"。技术之外的功课,关注真正长期积累的方向,别忽视它们。