AI 浪潮下的开发者,又该何去何从?
或许我是最没资格写这篇文章的,因为我也是一位失败者,截止目前已经失业躺平两年多了。但最近还是有些事触动到了我,就想写点什么...
背景
AI 爆发的这两年多,全球似乎都在经历裁员潮。经济不确定性、向人工智能等高增长领域的战略性调整以及持续的成本管理压力,共同推动了这一趋势。即便是谷歌和微软这样的行业巨头,也未能幸免。在这样的宏观背景下,个体职业生涯的起伏则显得微不足道。但最近这段时间,有两位知名开发者也遭遇无故裁员,这让我陷入了沉思...
裁员事件中的 Adam Argyle(Google)和 Ron Buckton(微软)并非无名之辈。他们在各自领域内都拥有深厚技术积累和卓越贡献,其职业变动远超个人层面,更像是行业深层变革的缩影。
Adam Argyle
Adam Argyle[1] 在 CSS、用户体验(UI/UX)及 Web 开发领域拥有深厚的专业知识,尤其在 Chrome 生态中享有盛誉。他致力于简化 Web 开发流程,提升 Web 应用的整体质量。作为 CSS 工作组的活跃成员,Argyle 对 Web 标准的制定和发展具有显著影响力。
在 Google 及 Web 社区的主要贡献与影响
作为 Chrome 团队的开发者关系工程师,Argyle 是 CSS 及新兴 HTML/CSS 特性的杰出布道者。他制作了大量高质量教学材料,包括广受欢迎的 CSS Podcast[2]、各类技术会议演讲以及生动的演示项目。在谷歌期间,他深度参与了高优先级功能的开发、Google I/O 的演讲与筹备、开发者主题演讲,并主导了如 Carousel Gallery[3] 等意义深远的工作流。他的工作被认为对 CSS 的发展至关重要,并为谷歌开发者品牌赢得了广泛的尊重。
离职情况与社区反响
Argyle 的职位据称于 2025 年 4 月 10 日被取消(G̶o̶o̶g̶l̶e̶r̶… ex-Googler.[4]);其经理和 Chrome 团队的其他领导对此感到震惊,并明确指出裁员并非基于绩效原因。他被立即切断了对公司日历、文档、代码等所有工作系统的访问权限。Argyle 公开表达了自己感到“被背叛、不被赏识、像垃圾一样被丢弃”的情绪。
这一事件在开发者社区引发了巨大的震动和普遍的失望情绪。许多开发者表示从 Argyle 的分享中学到了大量知识,并视其为开发者关系领域最优秀的人才之一。他在推上宣布离职的消息获得了高达 74 万次浏览以及数百条回复和转发。Argyle 这样一位在开发者社区中具有高度可见性和巨大影响力的领导者,其职位的突然取消,且并非基于绩效问题,甚至令其管理层都感到意外,这强烈暗示了谷歌可能正在战略性地降低对 Chrome 及 Web 开发者关系维护的优先级。这种调整或许是为了将资源更积极地投入到人工智能等新兴领域,或是出于对 Chrome 浏览器未来可能面临分拆等不确定因素的考量。
Ron Buckton
Ron Buckton[5] 是微软的资深软件开发工程师,拥有长达 18 年的任职经历。他在 TypeScript 领域具备深厚的专业技术,包括 TypeScript 编译器和语言服务方面。此外,Buckton 积极参与 ECMAScript 的标准化工作(TC39[6]),推动了包括部分应用语法(partial application[7])、枚举(enums[8])和正则表达式特性(RegExp features[9])在内的多项提案。他还对 TSDoc[10] 标准做出了贡献。
在微软及 TypeScript 生态系统的主要贡献与影响
Buckton 在 TypeScript 项目上投入了近十年的时间,作为一位杰出的开源贡献者,Buckton 在 GitHub 上拥有 104 个代码仓库,并对 microsoft/TypeScript[11] 项目做出过贡献。他积极推动了如“显式资源管理”(Explicit Resource Management[12]) 、“枚举”(Enums) 和“正则表达式特性”(RegExp Features)等 ECMAScript 提案,对 JavaScript 语言的演进产生了深远影响。
Buckton 帮助 TypeScript 在构建时间和编辑器响应速度方面实现了 10 倍的性能提升,是 typescript-go[13] 项目的核心贡献者(前 5 名)。
离职情况与社区反响
Buckton 于 2025 年 5 月在微软最新一轮裁员中被解雇。他在推上宣布的离职消息获得了 500 万次浏览、3100 次转发和 4.6 万个点赞以及上千个评论,显示出社区对此事的高度关注和普遍惋惜。微软官方将此次裁员称为“为使公司在动态市场中处于最佳位置而进行的组织变革”,并强调了对 AI 领域的投资和运营精简。然而,Buckton 的离职——即便他是 TypeScript 核心技术的奠基者之一——依旧说明,在以 AI 为核心的新战略驱动下,即使是成功且成熟的技术栈与关键岗位,也难以免于资源重组的影响。
这对于整个开发者生态而言,似乎是一个值得深思的信号。
思考
一个令人唏嘘的现实:哪怕你是让 TypeScript 提速 10 倍的重要工程师,也可能突然被公司裁掉。本周微软裁员 6000 人,约占全球员工的 3%。这些拥有卓越成就和长期工作记录的专家被裁,其背后原因已超越了个体绩效的范畴,强烈暗示着科技巨头在人才保留和评估标准上可能发生的根本性转变。企业战略,尤其是对人工智能领域的空前投入,是否正在成为影响人才决策的新风向?
这让人警醒:无论你多努力、多有贡献,企业最终都会选择对自己最有利的做法。所以,你也该为自己做选择:
- 持续建立并维护自己的人脉网络,不把所有的鸡蛋放在一个篮子里。
- 保持职业灵活性和主动权,不让安全感变成束缚。
- 更重要的是,保护自己的精神状态和生活边界,不被公司认同与否定义自我价值。
忠诚固然值得赞赏,但在这个时代,自我保护同样是必须的。记住——没有任何人会像你一样真正为你的职业生涯负责。
缅怀大牛
这个时间点很巧,如果对以上裁员信息仍心有余悸,那希望接下来的内容可以对你有所启示。
距离我写《陈皓:一盏明灯影响了多少技术人?》那篇文章整整过去两年,不知还有多少人记得曾经有这样一位技术大牛?他虽离开了我们,但 CoolShell 上留存的思想仍影响着无数后来人…
网名:左耳朵耗子
签名:芝兰生于空谷,不以无人而不芳。
Blog:https://coolshell.cn
GitHub:https://github.com/haoel
我将皓叔《为什么我不在微信公众号上写文章[14]》和《如何超过大多数人[15]》中的思想融合了一下,整理出一份简版人生攻略。
信息获取:你不是猪,就别指望被“喂”成高手
在当今这个信息极度泛滥的时代,大多数人热衷于“刷”,而不是“学”。如果你想和他们一样碌碌无为,那就请:
- 每天沉浸在短视频、碎片段子和自媒体热搜中,最好连标题都别点开就急着转发。
- 只关注微信公众号推送,不使用搜索引擎,不看原始资料,也不做延伸阅读。
- 将别人的朋友圈当新闻,把公众号当真理,把短评当深度。
- ...
但如果你真想在认知上胜过大多数人,请反其道而行之:
- 构建自己可信的信息源,例如博客、学术资源、社区讨论,而非算法喂养的内容。
- 善用搜索引擎,学会在信息噪音中提炼关键知识。
- 练习批判性思维,对信息进行交叉验证,而不是人云亦云。
- ...
知识学习:别学知识,学“知道别人以为你懂什么”
如果你只是想“看起来很努力”,那么你只需要:
- 看几十篇“快速入门”的文章,然后在面试和社交场合背出几句“术语”。
- 不理解本质逻辑,但能复述流行观点。
- 把“读了”当“懂了”,把“收藏了”当“掌握了”。
- ...
而真正成长的人,追求的是:
- 深入构建知识体系,把“点”的知识连成“面”,进而汇成“网”。
- 重复、打磨、迁移所学,将知识转化为真正的技能。
- 接受“认知痛苦”与“不懂的恐惧”,将其当作成长的标志而非障碍。
- ...
内容创作:别为平台打工,别为流量写作
在《为什么我不在微信公众号上写文章》中,皓叔明确指出,他拒绝被平台所奴役。他的核心观点是:
- 写作应该是内容主导而非流量导向。追求点击率只会消耗创作初心。
- 内容应该长期可见、可索引、可引用。平台内容生命周期短、难以沉淀。
- 写作是为了思考、表达和影响,不是为了打赏、广告或粉丝经济。
- ...
所以他选择博客,拒绝“被驯养”,坚持写“可被引用、可被反思”的文字。如果你只是想做个短暂爆款作者,不妨:
- 写标题党文章,夹带私货;
- 为平台 KPI 而写,不断迎合热点;
- 拒绝深度讨论,关闭评论区,只留下点赞按钮。
- ...
认知升级:要超过别人,先不做“大多数人”
如果你想真正地“超过大多数人”,要先看穿“多数人的认知陷阱”。比如:
- 多数人拒绝复杂,只爱“通俗易懂”。
- 多数人懒于思考,只信“权威说的”。
- 多数人追求快速见效,却无长期耐心。
- ...
那么请你选择:
- 深度钻研、主动学习,而不是等待被“科普”。
- 接触不同立场的信息,而非困于信息茧房。
- 经历认知迭代的阵痛,而不是安于舒适圈。
- ...
写作和表达:让思考变成影响力
写作不只是表达观点,更是深化认知的过程。皓叔强调:
- 好文章是写给未来的,而不是写给点赞的;
- 好表达是提炼思考、结构思维、组织逻辑的训练场;
- 写作是输出,更是输入的整理,是认知闭环的一部分。
如果你希望在公众表达上成长,不妨坚持写博客、长文、结构化表达,而非只做“内容搬运工”。
走“慢路”的人,才能去远方
快速成功是幻觉,深度成长才是通向不凡的真实路径。远离平台算法的操控,远离短期主义的信息毒瘤,构建你自己的思维护城河。陈皓用他的文章为我们构筑了一条“少有人走的路”:
拒绝奴性写作,拒绝信息垃圾,拒绝认知速食,坚持系统学习、独立思考、持续创作。
——这才是一个程序员、一个终身学习者的精神内核。
酷壳精粹
皓叔的文章不但量大(按“归档”统计为 740 篇),维度广(编程、职场、人生等),而且质量超高。这些内容对读者、AI 来说,都是不可多得的文字瑰宝。这次我没有一篇篇去阅读整理,而是借助 AI 的 deep research 功能对其进行深度分析,整理出以下更为具体的人生修炼指南。
注:虽是 AI 辅助整理,但我已认真校对,请放心阅读。
下面汇总了陈皓(博客 “CoolShell”)关于职业生涯规划、人生建议、时间管理、技术领导力、思维方式、学习方法等方面的观点与经验。经过梳理,主要涉及以下核心主题:技术成长与职业发展、学习方法与效率、思维方式与认知提升、人生哲学与价值观、工作习惯与时间管理、技术领导力与团队管理等。我将每个主题下的代表性文章、关键观点、案例进行提炼,并结合作者对常见问题的态度与方法,形成通用的人生与职业最佳实践建议。
相关文章索引:
- 技术人员的发展之路[16]
- 程序员如何把控自己的职业[17]
- 三个事和三个问题[18]
- 来信,创业和移动互联网[19]
- 如何超过大多数人[20]
- 给程序员新手的一些建议[21]
- 谈谈我的“三观”[22]
- 程序算法与人生选择[23]
- “努力就会成功”[24]
- 加班与效率[25]
- 聊聊团队协同和协同工具[26]
技术成长与职业发展
代表性文章
陈皓在《技术人员的发展之路》《程序员如何把控自己的职业》《三个事和三个问题》《来信,创业和移动互联网》等文章中,详细阐述了技术人职业成长的路径和选择要点。
关键观点
- 20–30 岁是关键期:该阶段首要任务是提升学习能力和解决问题能力,练就“能解决大多数人解决不了的问题”的本领。陈皓强调,这段时间应扎实积累基础知识、高效学习,练就过硬的技能,否则即使加班苦干也难出头。
- 培养领导力特征:如果在 30 岁前能表现出“领导力特征”——如帮助团队解决问题、在关键决策时被同事依赖咨询——就会进入正向成长循环:能力越强机会越多,持续学习强化影响力。相反,如到 30 岁仍未显现此类特质,则未来职业选择可能受限。
- 职业发展方向:个人发展有三大方向:其一是在职场打拼,进入大公司或创业公司;其二是追求不同寻常的人生经历,如到创新发源地或热点行业中历练;其三是追求自由生活,如获得“工作自由”、“技能自由”乃至“物质自由”。这些方向并非互斥,可以交叉进行。
- 大公司 vs 创业公司:陈皓建议有实力的技术人应考虑去顶尖大公司拓宽视野,因为顶尖企业具备先进的工作方法和丰富资源。同时,他认为优秀人才在大公司可能被“埋没”,而充满活力的创业公司往往更能提供施展才华的舞台。因此,根据自身阶段与目标,权衡“去大厂学管理和视野”与“去创业公司施展技术”的利弊。
- 积累与历练:陈皓反复强调“积累很重要”:例如,他认为大学毕业生应先去大公司开阔眼界,学习成功经验,然后再考虑创业;创业需要“积累到了就自然出现”,不宜浮躁行事。
- 中年提升软技能:30–40 岁是事业上升期,需要更多软技能:包括带领产品和业务的能力、推行文化、项目管理、沟通说服、团队建设和应对突发事件等。陈皓提醒:随着职位提高,会面临复杂人际关系和政治,需要学会沟通、妥协和权衡,而不仅仅是“写代码”。
案例与总结
在职业选择上,陈皓反复告诫不要被“户口、安逸生活”所束缚。例如,在《三个事和三个问题》中,他与杭州学生讨论去雅虎还是留在家乡工作,回答是:与其追求表面舒适,不如选择拓展眼界的发展机会。他总结:“和有激情能做事的人做有意义的事”应放在择业首位。总体看,陈皓认为技术成长与职业发展关键在于:明确趋势与自我定位,打牢基础,发现并发挥特长,并在实践中不断积累经验,才能在事业中持续上升。
学习方法与效率
代表性文章
主要有《程序员如何把控自己的职业》(学习效率部分)、《如何超过大多数人》、《给程序员新手的一些建议》等。
关键观点
- 主动学习优于被动学习:陈皓引用“学习金字塔”指出,简单听讲、阅读等被动学习只能获得有限记忆(5%–20%),而与人讨论、动手实践、教别人等主动学习能将知识记忆保持在 50%–90%。他强调,只有深入主动地学习(深度学习)才能真正掌握知识,否则只会“学那么多也不用就忘了”。
- 陈皓在《把控职业》中以此说明,要避免表面式学习,通过讨论、实践、归纳总结等方式将知识“学透”。
- 优选知识源与掌握原理:建议获取一手资料,尽量阅读英文原著或高质量翻译,避免大量依赖二手整理,以免信息丢失。同时,他强调注重基础原理:即使具体技术会过时,只要掌握原理,就能根据原理快速迁移到新技术上。
- 构建知识图谱:学习时要结构化思考,将知识串联成网络。例如学 TCP 协议要理清状态迁移、可靠性机制、拥塞控制等关键点,并通过关联回忆整合。陈皓鼓励闭上眼睛想象知识地图,遇到问题知道往哪查、如何联想,就如同在心中有一张城市地图。
- 多种学习方法结合:提倡“举一反三”,对同一知识采用不同途径学习:如读书、编程实践、调试分析、多角度比较等,使知识点关联更丰富。
- 总结归纳与方法输出:只有通过不断总结归纳,才能形成自己的思维框架和学习套路。如学习新语言应归纳底层思路(内存管理、并发模型、多态抽象等),随着经验积累,自然提炼出通用方法论。
- 良好习惯与自律:纪律性和规划性是超过他人的基础要素:如制订年度目标(学一门新技术)、每月攻克一个算法、每周读一篇英文论文并整理笔记等。自律性的习惯可以“拼凑”出实力,远胜过大多数懒散的人。
案例与总结
在《给新手的一些建议》里,陈皓惊讶于学生们对知识缺乏思考,故建议新手不要只会“获取知识不思考”,要问自己“这些数据结构和算法的设计思路是什么,优势和劣势在哪儿”。这是要点——知识固然重要,更要主动思考背后的原理和原因。综合来看,陈皓的学习方法论主张:确立清晰学习目标(What/Why/How)、保持好奇心、利用多维度方式深入理解、善于总结归纳,最终构建起自己的知识体系,以最高效的方式跟上变化。
思维方式与认知提升
代表性文章
涵盖陈皓的思考文章,如《如何超过大多数人》《谈谈我的“三观”》《程序算法与人生选择》等,对认知、决策和“三观”进行探讨。
关键观点
- 批判性思考:他反复指出对流行观点和习惯要保持质疑精神。例如在《努力就会成功》一文中,他批评简单的“努力=成功”口号,指出这种说法把努力当作了成功的充要条件,而实际上只是一种必要条件——如果方向错了,努力也无用。这一逻辑提醒读者:要审视常识和俗语,用批判性思维避免误导。
- 认知模型:在《如何超过大多数人》中,他提到人需要不断扩展思维框架:理解基本模型(如认知阶段、知识层次、技能转化)后,通过“认识→知识→技能”的路径积累能力。他强调不仅要掌握知识,更要有高效解决问题的方法和思考模型(如面向问题的思维、系统设计思维等)。
- 三观(世界观/人生观/价值观):在长文《谈谈我的“三观”》中,陈皓总结了个人世界观、人生观、价值观三个层面,并指出三观随经历而演变。他认为世界观决定看待事物的态度(如理想 vs 现实、乐观 vs 悲观等),人生观决定想成为什么人(如专家或体验者),价值观决定重视什么(名誉 vs 金钱、过程 vs 结果等)。随着阅历增长,人会调整三观:从学生时代的标准答案到三十而立后的选择与坚持,再到四十多岁后对时间和自我的重新定位。
- 亲身经历与实践:他主张通过亲历而非只听他人说法来塑造认知。例如,一位爱国青年见到抵制某国时,他会建议对方先去该国长期生活体验一番,因为只有亲身经历才让人了解真实世界,不被表面情绪左右。这种观念也体现在他鼓励程序员去硅谷等技术创新中心“经历创新”,以及愿意以开放心态迎接技术浪潮(互联网、IT、AI 等)。
案例与总结
陈皓以自身经历为例,讲述他曾经出国多国工作后如何修正偏见和三观。他认为信息化浪潮日新月异,要以科学理性的态度看待选择,避免简单化对立。总的来说,陈皓提倡开拓眼界、主动求证、不断反思与自省:既要学会批判性地看待流行观点,也要通过实践检验认知,最终形成符合自身情况的思维模式。
人生哲学与价值观
代表性文章
《谈谈我的“三观”》《三个事和三个问题》《来信,创业和移动互联网》等,这些文章体现了陈皓对人生意义、使命和价值的深度思考。
关键观点
- 人生经历优先级:在《三个事和三个问题》中,他反复强调,不应让户口、地域舒适等因素限制发展。他的回答是——与其在“安逸的生活”中迷失,不如追求更广阔的人生体验。对年轻人而言,“和有激情能做事的人做有意义的事”应该是择业时最高的优先级。
- 驱动力与内心激励:陈皓建议每个人定期问自己:每天早起让你兴奋的是什么?目前的工作经历是否带给你这样的感觉?是否过于浮躁、只在意别人的认可?这样三个问题旨在帮助人们审视内心真正的动力,而不是盲目追求外界评价。他认为只有自己认可并热爱正在做的事,人生才不至于“虚度”。
- 使命感与价值观取舍:在《三观》一文中,陈皓列举出多种价值观冲突(名利、过程、付出与索取、个人与家庭等),并指出个人会随时改变对这些权衡的看法。他坦言,当人生进入中年后,自己更加专注于有限的时间,倾向于“与世无争,更为自我”的态度。这反映了一种认知——要在复杂世界里找到最让自己安心和自豪的立足点。
- 享受时代与不断求知:陈皓强调,我们技术人最幸运的是生活在一个充满刺激与机遇的时代。他鼓励读者抓住技术浪潮、不断学习和体验,因为不经历或错过可能令未来后悔。这种信念和使命感也体现在他自己积极探索不同领域(厨艺、飞行、政治等,见三大故事),认为跨界经历是成功的人生一种表现。
案例与总结
例如,在《来信,创业和移动互联网》中,针对毕业生是去百度还是去创新工场创业的困惑,他给出“视野决定人生”的建议:刚毕业时更应该扩展眼界,沉淀经验后再考虑创业,而非被短期利益蒙蔽。总体而言,陈皓的人生哲学重视自我驱动和持续学习:鼓励人们思考自己的真正需求(热情、价值),不放弃对意义的追求,同时接受选择背后的风险与代价,不断反思人生航向。
工作习惯与时间管理
代表性文章
主要有《加班与效率》《“努力就会成功”》《如何超过大多数人》等,讨论了工作效率、加班文化和自律方法。
关键观点
- 效率优先,拒绝盲目加班:在《加班与效率》中,陈皓明确抨击将加班当作“核心竞争力”的观念,指出加班只是一种劳动密集型的补救措施。他强调产品发展不是短跑而是长跑,比拼的是策略和意志:在攀登高峰时不是拼命往前冲,而是要学会保留体力、步步为营。引用《Rework》:资源受限时反而能“让你小材大用”,驱使你思考用知识密集型的方案解决问题;工作狂则往往事倍功半,拼时间换不到优质成果。由此得出:应当用智慧和策略提升效率,而非靠无意义的加班堆量。
- 规划与自律:加班不可常态化,更多需靠事前规划和过程管理来实现目标。这与陈皓在《如何超过大多数人》中提出的观点一致:要培养良好的习惯和方法,例如制定明确计划、年度目标、定期复盘等。这些习惯让人相比懒散者形成明显优势。
- 批判“勤奋=成功”:在《努力就会成功》一文中,他借亲身遭遇批判了“努力就会成功、勤劳就会致富”之类简单口号的错误逻辑,指出努力只是成功的必要条件之一,而非充分条件。努力必须与方向、能力相匹配,否则再勤奋也可能无用。这提醒我们:光有勤奋而缺乏方法和策略,最终可能事倍功半。
案例与总结
陈皓在文中描述一家知名公司为了赶进度实行 996,结果项目烂尾、软件质量极差,反映出“用更多钱人更多时间就能胜利”的思路是荒谬的。他总结:管理者不应把时间当做唯一衡量产出的标准,应该优化流程和工具,避免陷入无意义的竞争。总体而言,他提倡合理规划时间、追求效率与创新,而非无止境地加班。
技术领导力与团队管理
代表性文章
虽然酷壳博客以编程、个人成长为主,但也涉及团队管理和领导力,比如《技术人员的发展之路》《如何超过大多数人》《聊聊团队协同和协同工具》等。
关键观点
- 引领而非命令:陈皓将领导力理解为走在别人前面,用更高的标准和能力引导团队。例如,他在《如何超过大多数人》中指出,所谓领导力就是“你跑在别人前面”;在《技术人员的发展之路》结尾也提到,自由者往往“有领导力和创造力,能够指导大多数人并走在他们前面”。这意味着,技术领导者要率先掌握新知、解决难题,以身作则带动团队。
- 关注产品与文化:成长为中高层后,技术管理者需要更多关注产品发展和团队氛围。他列出了中级工程师/管理者应具备的软技能清单:带领产品业务的能力、项目管理、沟通说服、解决冲突、团队培养和应急处理等。同时,他强调推广自己信奉的工作文化也属于领导力范畴。
- 沟通与政治技巧:陈皓警告技术人,成为团队 Leader 后不可避免地要投入大量时间处理人际关系和政治斗争。“Talk is the matter”:写代码变得容易,关键在于用语言和策略影响他人。他甚至用“里外不是人”的角色来形容管理层,提醒大家学习审时度势、妥协让步、择机表现等职场艺术。
- 团队协作工具与流程:在文章《聊聊团队协同和协同工具》中,陈皓探讨了远程办公、协作工具等对管理模式的挑战,强调在新形势下提升协作效率、降低组织内耗是关键。虽然细节未列举,核心在于合适的工具和机制能显著提升团队效率。
案例与总结
虽然“技术领导力”一词在陈皓文章中不常显式出现,但贯穿始终的是一种以技术为先导并兼顾人文的管理观:领导者要掌握技术基础(“懂原理胜过盲目管理”),同时要倾听团队、有效沟通,不能只沉浸于代码。综上,技术领导力在他看来是以身作则的影响力与广泛的软技能结合:技术人需不断充实自己,不仅解决技术难题,还要塑造团队文化、培养人才和维护团队动力。
对常见问题的态度与方法
- 如何做职业选择:陈皓主张从长远和大局考虑,不被安逸或眼前利益束缚。例如,对于毕业生是否去大公司或创业公司,他认为更需关注能否开阔眼界和积累经验。他建议按照“特长→兴趣→方法→勤奋”的顺序来找到自己的职业定位:首先发挥天赋和爱好,其次培养高效的学习/工作方法,最后才靠勤奋(但勤奋的价值有限)。总的来说,做选择前要问自己真正热衷什么,并评估此选项是否能让自己成长。
- 如何持续成长:方法论上,他强调打牢基础、提升效率。无论技术如何迭代,原理和思路是恒久的,因此需要下苦功掌握底层原理。学习要“有效率”——不仅仅是快,而是有策略地学。例如应用知识图谱、多种角度学习、选对教材和信息源,以及学会总结归纳,形成自己的框架。他鼓励主动学习,主动实践,并不断寻找高质量的学习资源(如第一手英文资料)。
- 如何应对焦虑和内耗:陈皓坦言人生选择往往令人焦虑。他认为面对这种不安时,要聚焦于自身可控的方面。他本人应对技术焦虑的方法是把时间投入到技术原理和本质上,因为掌握了原理就不会被某个技术淘汰;也即通过学原理来消除对具体技术更迭的恐惧。此外,他建议定期反思:问自己“每天起床为何兴奋?现在的工作是否让我充满期待?”。通过这种内省,找到对工作意义的驱动力,而非被外界压力消耗。归根结底,他的策略是关注长远目标,专注内功修炼,避免盲目追逐热潮,从而化解焦虑。
通用人生指南
综合陈皓博客中的见解,可提炼出以下普适建议:
- 明确趋势,认识自己:了解行业和社会的大趋势,同时剖析自身兴趣与天赋。只有把握了外部环境和自我定位,才能找到合适的发展方向。勇于跳出舒适圈,不要被表面条件(例如户口、固定地点等)所束缚。
- 打牢基础,注重原理:把时间投入到基础理论和原理上,因为技术变化快,但本质相对稳定。掌握原理的人能更快速适应新事物,也更容易解决复杂问题。当技术演化时,关注原理的人不会被具体工具或语言限制。
- 高效主动学习:采用主动学习策略:动手实践、与人讨论、教别人等方式,建立自己的知识图谱。选用一手资料(英文原文或优质翻译),深度思考所学知识背后的原理。形成并遵循学习方法论(如定期阅读英文论文、练习算法、总结习题解法),提升学习效率。
- 自律规划与总结:制定清晰的目标和计划,并坚持执行。例如每年掌握新技术、每月巩固一项算法、每周撰写学习笔记等。完成后反思总结,将经验提炼为可复用的套路和流程。自律的人比天赋更能决定成就,只要坚持,就能超越多数不自律的人。
- 积累多样化的经历:珍惜并利用各种可能的机会:参加有意义的项目、海外历练、跨界学习等。这些经历能拓展视野和人脉,为未来增添竞争力。陈皓认为,在充满变化的时代“不经历就会后悔”,应抓住当下的技术浪潮和时代机遇。
- 与优秀的人共事:在选择工作或合作对象时,把“和有激情、能做事的人一起做有意义的事”放在首位。与志同道合、有追求的团队共事,会让个人成长更快,同时工作更富价值感。
- 平衡效率与投入:积极进取而非盲目加班。追求效率高于单纯的工作时间。利用工作中的限制和挑战逼迫自己采用创新方法,提高效率。偶尔冲刺可以,但持续的过度加班只会透支精力且成果平庸。
- 反思与批判:对常见的口号保持批判性,不盲从:如“努力必然成功”就是错误的思维。应定期问自己:是什么让我充满动力?目前的努力是不是朝着真正的目标前进?。努力要有方向、要与目标相符,否则再勤奋也可能徒劳。
- 投资自己的成长:学会投资时间和精力。除了投入学习,适时进行职业和财务投资也是重要方式。陈皓指出,实现物质自由往往需要懂得投资(不仅是金钱,还有时间和精力)。即使资源有限,投资于提高自身能力和拓展网络,从长远看会带来回报。
- 保持好奇与敬畏:对新事物保持好奇心,多问“为什么”。拥抱未知领域,终生学习。陈皓自身经历告诉我们,不要畏惧改变,也不要固守偏见,与时俱进才能走得更远。
综上,陈皓给技术人和职业发展者的“人生指南”可概括为:清晰自我定位、强化基础原理、保持高效学习、自律规划、广积经历,与优秀者同行、追求效率与创新。这些通用原则贯穿他博客的诸多文章,可作为读者制定个人发展路径的参考。
时间过得真快,一晃眼,皓叔已经离开我们两年了。在这期间,AI 大爆发、许多大厂核心开发者被无故裁员。如果皓叔还在,应该会发表很多独到见解,可惜我们再也看不到了,CoolShell 的更新时间永恒静止在了两年前的今天...
补充阅读:TypeScript 7
这便是 Ron Buckton 参与的开源项目,看完本部分内容,就知道该项目的份量有多重了(Buckton 虽不是项目主导者,但却是排名前几核心贡献者)!TypeScript 7 是下个版本的 TypeScript,也是 typescript-go 项目的正式版名称(A 10x Faster TypeScript[27])。
微软为何要选择 Go 重建 TypeScript 编译器,这将对开发领域产生哪些深远影响?
JavaScript 的性能瓶颈
TypeScript 编译器最初采用 TypeScript 语言自身编写(并因此被编译为 JavaScript 运行),这一方面体现了 TypeScript 语言的强大能力,另一方面也导致其在处理超大型代码库时面临性能瓶颈。这些性能问题具体表现为:
- 漫长的构建时间 (
tsc执行):在大型项目中,编译过程耗时良久,严重影响了开发者的生产力以及持续集成/持续部署(CI/CD)流水线的效率。 - 迟缓的编辑器操作:在诸如 Visual Studio Code 这样的集成开发环境中,语言服务(如自动补全、类型检查、代码重构)在大型项目中响应迟钝,极大地降低了开发体验。
- 高昂的内存消耗:JavaScript 引擎的固有开销,尤其是在进行复杂的类型推断和代码分析时,会导致显著的内存占用。
随着项目规模和复杂度的持续增长,这些问题日益突出,不仅阻碍了 TypeScript 在企业级大规模应用中的进一步普及,也削弱了其在这些场景下的开发效率。最初 TypeScript 选择自托管(编译器由 TypeScript 自身编写)是对其语言能力的有力证明。然而,这种自托管模式最终揭示了一个性能悖论:TypeScript 语言的成功及其在大型项目中的广泛应用,反而暴露了其基于 JavaScript 的运行时在执行编译器这类计算密集型任务时的局限性。TypeScript 的编译目标 JavaScript,虽然功能多样,但与原生语言相比,在执行 CPU 密集型任务时存在固有的性能开销。当 TypeScript 项目(如 VS Code 本身)变得异常庞大时,这些开销便成为关键的性能瓶颈。这并非 TypeScript 语言本身的失败,而是其运行时环境(Node.js/JavaScript 引擎)在被推向编译器工作负载的极端规模时所面临的自然结果。
移植至 Go 的战略决策
面对上述性能挑战,微软 TypeScript 团队经过审慎评估,最终决定采用 Go 语言来重写编译器。这一决策基于以下关键考量:
- 卓越性能:Go 语言能够编译成原生机器码,相较于解释执行或即时编译(JIT)的 JavaScript,具有显著的速度优势。这直接命中了性能瓶颈的核心问题。
- 高效并发:Go 语言内置的 Goroutines 和 Channels 为并发编程提供了出色的支持,这对于充分利用现代多核处理器、并行化编译任务(如并行解析多个源文件)至关重要。TypeScript 团队也注意到,其编译器原有的函数式编程基础和不可变抽象语法树(AST)特性,本身就易于实现并发处理。
- 精益的内存管理:Go 语言拥有专为低延迟设计的垃圾回收器,并且相比 JavaScript,能提供更精细的内存布局控制,有助于降低编译器的内存占用。
- 快速的自身编译速度:Go 语言自身的编译速度非常快,这加快了新 TypeScript 编译器本身的开发和迭代周期。
- “阻力最小的路径”:TypeScript 的首席架构师 Anders Hejlsberg 提到,选择 Go 是因为它为“这个特定的代码库实现 10 倍性能提升提供了阻力最小的路径”。这主要归因于 Go 语言在结构上与现有 TypeScript 编译器代码库的相似性,使得这次迁移更像是一次“移植(port)” 而非彻底的“重写(rewrite)”。这体现了在追求性能目标与控制开发工作量之间的一种务实平衡。
- 成熟的生态与工具链:Go 拥有成熟的生态系统和优秀的工具链,包括在 VS Code 中得到的良好支持。
在决策过程中,团队也曾考虑过其他语言,如 Rust 和 C#。然而,Go 语言凭借其在当前场景下的特定优势最终胜出。Rust 或许能提供更细致的控制,但学习曲线可能更陡峭,移植时间也可能更长。而 C# 对于追求原生性能的目标而言,可能显得过于“字节码导向”。选择 Go,并将其描述为“阻力最小的路径” ,突显了这是一项务实的工程决策。尽管其他语言(如 Rust)可能在理论上提供极致的峰值性能,但 Go 在实现“足够好”的巨大性能提升(目标 10 倍)与更易于管理的移植工作量之间取得了最佳平衡,这得益于其与现有代码库的架构相似性。这表明团队的关注点在于相对快速地为用户带来切实的利益。这种权衡在大型软件工程中屡见不鲜:在理想方案与实际执行之间寻求平衡。
性能问题不仅仅是微软内部的观察,也源于更广泛的 TypeScript 社区的反馈,特别是那些从事超大型企业级项目开发的开发者。因此,这次移植可以视为微软对其要求最苛刻的用户不断演变的需求所作出的积极响应。
重塑开发者版图
微软的 typescript-go 项目所带来的不仅仅是编译器层面的技术革新,它预示着对 TypeScript 开发者生态系统,乃至更广泛的软件开发实践的深远影响。
预期的性能收益:
- 数量级的提升:最引人注目的预期是构建时间和编辑器启动速度将获得高达 10 倍的改进。部分基准测试甚至显示,在特定代码库上(如 TypeORM),性能提升可达 13.5 倍。
- 内存使用降低:预计内存占用将降至当前实现的一半左右,并且未来还有进一步优化的空间。
- 语言服务加速:自动补全、快速信息提示、跳转到定义等语言服务功能将得到显著提速。
下表展示了 typescript-go 相对于当前 tsc 在若干知名大型开源 TypeScript 项目上的性能提升基准测试结果。
对 AI 的深远影响
typescript-go 项目的深远意义并不仅限于传统的软件开发领域,它对人工智能的发展,特别是 AI 辅助开发工具和 AI 应用的构建,也具有重要的推动作用。
- 为 AI 驱动的编码辅助奠定基础:这是最主要的影响。一个显著提速的编译器和语言服务能够以更低的延迟处理海量的语义信息。这对于那些需要深入、快速理解代码上下文以提供智能建议、执行高级重构甚至生成代码的 AI 工具而言至关重要。例如,GitHub Copilot 或未来更高级的 AI 编码助手,将能够实时提供更准确、更贴合上下文的补全和建议,因为底层的 TypeScript 引擎能够更快地分析代码。
- 实现更深层次的代码洞察:如果编译器服务足够快以提供必要的数据,AI 工具就能对代码库执行计算成本更高的分析(例如,识别复杂模式、潜在错误或优化机会)。
- 改进实时错误报告和诊断:AI 可以用于提供更具洞察力的错误消息或建议修复方案,而更快的编译器使得这些分析能够在整个项目中即时完成。
- 更快的语言服务协议 (LSP) 的角色:如前所述,更快的 LSP 是关键。AI 工具通常通过 LSP 集成,因此一个性能更强的 LSP 后端意味着 IDE 中的 AI 功能将变得响应更灵敏、功能更强大。
typescript-go 带来的性能提升不仅仅是为了微软自身的 AI 工具。通过使核心编译器更快,它使得更广泛的第三方开发者和公司生态系统能够为 TypeScript 构建更复杂的 AI 驱动的开发者辅助工具。这可能导致该领域创新活力的“寒武纪大爆发”。
References
Adam Argyle:https://nerdy.dev
[2]CSS Podcast:https://thecsspodcast.libsyn.com
[3]Carousel Gallery:https://chrome.dev/carousel
[4]G̶o̶o̶g̶l̶e̶r̶… ex-Googler.:https://nerdy.dev/ex-googler
[5]Ron Buckton:https://github.com/rbuckton
[6]TC39:https://tc39.es
[7]partial application:https://github.com/tc39/proposal-partial-application
[8]enums:https://github.com/tc39/proposal-enum
[9]RegExp features:https://github.com/rbuckton/proposal-regexp-features
[10]TSDoc:https://github.com/microsoft/tsdoc
[11]microsoft/TypeScript:https://github.com/microsoft/TypeScript
[12]Explicit Resource Management:https://github.com/tc39/proposal-explicit-resource-management
[13]typescript-go:https://github.com/microsoft/typescript-go
[14]为什么我不在微信公众号上写文章:https://coolshell.cn/articles/17391.html
[15]如何超过大多数人:https://coolshell.cn/articles/19464.html
[16]技术人员的发展之路:https://coolshell.cn/articles/17583.html
[17]程序员如何把控自己的职业:https://coolshell.cn/articles/20977.html
[18]三个事和三个问题:https://coolshell.cn/articles/6142.html
[19]来信,创业和移动互联网:https://coolshell.cn/articles/5815.html
[20]如何超过大多数人:https://coolshell.cn/articles/19464.html
[21]给程序员新手的一些建议:https://coolshell.cn/articles/4976.html
[22]谈谈我的“三观”:https://coolshell.cn/articles/19085.html
[23]程序算法与人生选择:https://coolshell.cn/articles/8790.html
[24]“努力就会成功”:https://coolshell.cn/articles/19271.html
[25]加班与效率:https://coolshell.cn/articles/10217.html
[26]聊聊团队协同和协同工具:https://coolshell.cn/articles/22298.html
[27]A 10x Faster TypeScript:https://devblogs.microsoft.com/typescript/typescript-native-port