来源:Gitee 封面人物 丨 2026-05-25
邹欣:大家好!我现在担任北京中关村学院 智能创新中心负责人。在此之前,我曾担任自动驾驶创业公司 Momenta 的高级架构师、CSDN 研发副总裁。更早之前,我在微软公司工作 24 年,先后任职于 Azure、Office、Visual Studio、Bing、Windows 等多个研发团队,并曾在微软亚洲研究院工作了 10 年时间,致力于技术创新工作。
2007 年,我与合作者出版《编程之美》,成为当年国内的 IT 图书销量第一名,后来销量就急剧下降,因为盗版太多了;2014 年,我出版了《构建之法——现代软件工程》,曾经被全国 40 多所高校采用为软件工程课程教材;2020 年,合作出版了《智能之门——神经网络与深度学习入门》。 2025 年,我还和其他老师一起翻译出版了 《深度学习:基础与概念》这本 AI 的理论基础名著。
在微软亚洲研究院工作的时候,我参加了一些高校的合作交流项目,然后从 2007 年起,就亲自参与一些学校的软件工程教学改革。 我曾在清华大学的姚班、北航计算机学院等学校开设“现代软件工程”课程,逐步形成了 “做中学”的教学方法。 我们在博客园和 CSDN 都建设了网上的教学社区,还和老师组织了几次《构建之法》软件工程教学研讨会。
AI 时代的软件工程应该怎么学,怎么实战?我会在 5 月份出版 《构建之法》的第四版,这本书的配套课件和资源,都会同步更新到 Gitee 仓库中( https://gitee.com/zouxin2025/ASE ),每一章的 readme.md 文件里都有详细的扩展内容和实战指导。

▲邹欣在很多运动中都是 “又菜又爱玩”
邹欣:这可以用 “做软件的目的是什么” 和 “要多努力才能打造出精品 - hard drive” 两个方面来总结,详情请看https://zhuanlan.zhihu.com/p/20003750 和 :https://www.douban.com/note/206395832/?_i=60066781Qnpdl8
Build to learn: 写软件是为了学习,例如,手搓一个 “图书馆管理系统”
Build to Show: 为了某个短期的演示
Build to Serve:为了让软件稳定而长期地工作
Build to Win: 以 “在市场上赢“ 为目标而构建软件。这也是种种学术发现,技术突破,流程创新,灵光闪现最好的试金石。
真正关键的是Build To Win。为什么?因为现实世界不跟你客气。市场份额就那么大,对手占了70%,你就只剩30%;对手占了99%,你就只剩1%。早年的必应搜索和 Windows Phone 就是例子。这时候你还说 “我的Demo很独特”、“某个VP喜欢我的想法”——那没有用。你要么正面打赢,要么承认自己不该存在,要破产。
要想赢,光有聪明点子不够,工程能力是底线。 我参与一个项目,演示非常不错,但是,压力测试7秒就崩溃,改了一个月才扛住真实流量。没有工程能力,Learn 学不到真东西,Show 撑不住场面,Serve 的时候,不能长期服务用户,更别提Win了。
如果你身处一个必须赢的市场,就别一直用 “我的演示也不错” 来骗自己。 要想赢,就要付出努力。最怕的是明明是Win的战场,你却用别的心态去应付,那最后输的一定是你。
Hard Drive 的精神:
所谓的“Hard Drive”,不是指硬盘,而是 “强力驱动”, 也可以说是一种“功在不舍”的驽马精神。我写第一本书《移山之道》花了将近三年,中间经历了换工作、搬家、装修。很多时候半夜坐在电脑前,乐观时觉得 “写了一半”,悲观时问自己“还有一半没写,这些道理大家都懂,有必要继续吗?” 但最后还是硬着头皮往下写——因为我相信自己能写出独特的东西,第一版不够好,但是能发布就是成功。
写《编程之美》时更有意思。2007年10月左右,我们进入了一个黑暗期——写了不少题目,但看不出“美”在哪里,一些人也建议干脆改成 “面试秘籍” 赚快钱算了。有人扛不住,负责美术的编辑也离开了。但我们没有散伙,而是喘了口气之后,增加人手,紧咬不放,从办公桌讨论到餐桌,砍掉不够“美”的题目。
我的“drive”在那段时间升级成了“hard drive”——以请吃午饭为名,和每一位作者逐句复审;如果邮件没有回复,就打电话敦促。 要坚持信念:我们要把程序中的“美”介绍给读者。这就是驽马的做法——一匹马蹦跶不出名堂,要大伙儿团结协作,长途跋涉,中途歇息几次,才能到达目的地。
软件开发中有一个阶段叫“death march”——就像攻城,一队队士兵冒着炮火出击,伤亡无数,但敌人的城堡岿然不动。你每天加班改bug,bug 似乎不见少。但有军事家说过,最后的胜利往往产生于 “再坚持一下” 的努力之中。微软和微软研究院的早期成功,来源有很多,但更重要的,是每个员工坚持不懈的努力,和“再坚持一下”的决心。世上骐骥罕见,驽马满大街,有些驽马能跑出好成绩,关键在于四个字:功在不舍。
邹欣:每一段的经历对我的职业选择都是有帮助的。我比较喜欢动手做出具体的产品,所以大学毕业时,我选择先工作,积累一定的经验后再选择研究生的方向,这让我晚了几年拿到硕士学位,值得么?要看自己如何利用好在现实社会中获得的经验。加入微软后,我一度也从管理者的职位转回为一线工程师,因为我还是喜欢具体的编程工作。 我觉得软件的价值在于落地,在于解决实际问题,这也塑造了我喜欢一线工作的风格。 这也在我的教学方法中有所体现, 在软件工程的教学上,我发现教育家的名言 “没有也不可能有抽象的学生” -- 对我很有启发。我发现很多老师在传授抽象的软件工程知识,希望学生们记住这些抽象的知识,以后在实践中拿出来用,就像从锦囊中掏出写满了妙计的纸条那样; 我认为效率更高的办法是,让学生通过具体的开发工作,真实体会到软件开发的诀窍和不遵守软件工程原则的痛苦,在实践中解决问题。 另一方面,大家在实践中认识到各自的能力强弱,兴趣所在,对以后的学术或职业路线都很有好处。
邹欣:从现在回头看当时的本科和研究生教育,我觉得大学可以更多地开拓学生的视野,把更多跨学科的,工业界的经验引入学校。
北大的本科教育注重理论基础,那个时候由于没有PPT和投影仪,老师都写板书,学生抄笔记,这种缓慢而原始的方式强迫学生理解推理的过程。尽管硬件水平差,但我们还是有不少实践的项目,这让我夯实了计算机科学的核心理论基础,也积累了实践的经验,这正是 “Build To Learn” 中探索客观真理的核心诉求。 我工作几年后前往美国韦恩州立大学读硕士,由于我有工作的经验和感悟,知道要学什么。 我在那里快速完成学分、撰写论文,也深刻体会到“理论与实践结合”的重要性。美国的大学教育总的来说更贴近工业界实际,注重实践落地和跨文化协作,把每个学生当作一个成年人来对待。
这两段经历让我后来做教学改革时,始终坚持“做中学”,既要让学生掌握扎实的理论基础,也要引入工业界的真实案例和实践方法,避免教学与实际脱节。
邹欣:此前,我在微软亚洲研究院工作期间,看到很多研究员有很好的想法,却因为团队(包括很多实习生)缺乏扎实的工程能力,导致想法无法快速转化为健壮的产品;也看到很多高校学生学了软件工程,却不知道如何应用到实际工作中,甚至陷入“Build To Show” 的误区,只做表面功夫、不注重核心能力,甚至有些学校把 PPT 拿来当作软件工程的交付物。我写作的初心,就是希望通过书籍和教学,把工业界的实践经验传递给更多人,让大家真正理解软件工程的本质,爱上编程、学好软件工程。
同时我也一直认为编程是一种特别有趣的工作,有很多有意思的技巧,能做出有趣的程序。软件工程这个专业也很有趣,有很多真实的案例和学问。不像一般人想象的那么艰深或者无趣。这也是我写这些书的原因 -- 让大家知道,这是非常有意思的专业,有它特别的魅力。
在Windows 10 开发的过程中, 我们发现安装程序中的提示 “sit back and relax” 被某幼稚的AI 工具翻译为 “坐和放宽”, 在快速修复的过程中,我和团队做了T恤,提醒自己要时时注意产品质量和用户,不能因为某件事情外包了,就不管不顾了。
这样不但不能 build to win,说不定是 build to shame。

邹欣:正如我上面说的, 编程和软件工程都很有意思, 不应该把这门课讲成 “枯燥乏味” 的课程。 在我开始讲课后,也吸引到了一些志同道合的老师和工程师,一起做事,这样就把这件事情坚持下来了。 我出版的书有一些版税,我就用来奖励一些助教和做出了成绩的学生,我们还定制了专门的 “领骑黄衫”。 请看一个例子:https://www.cnblogs.com/best202/p/14269235.html
我在微软亚洲研究院的时候,因为高校合作的关系,我走访了多所高校的计算机系和软件学院,发现很多学校的软件工程教学仍然脱离工业界实际,学生学完理论却不会动手做项目,甚至有些学生毕业前都没写过1000行代码,却能找到工作,这让我既惊讶又担忧。我希望通过自己的努力,把工业界的实践经验引入高校,推动教学改革,让学生真正学到有用的知识和技能,这也是我长期投入教学的核心契机。
现在,《构建之法》已经被40多所高校采用,还有很多有工业界经验的助教加入我们,一起完善教学体系,这也让我更有动力坚持下去。
邹欣:
“船舱、甲板、山巅”是我在《现代软件工程》教学中的核心设计,结合学生真实团队项目(历经各种风险最终成功发布)来落地,帮助学生从“写代码” 到 “交付价值”, 完整掌握软件工程核心能力。
三种视角贯穿始终,让学生在“做中学”“以终为始”的实践中,既借助AI工具提高效率,又牢牢抓住细节与核心,具备AI时代不可替代的韧性与全局视野。
邹欣:最大变化不在多会几行代码,而是心态和认知的转变。一是接受工程没有完美解,都是在约束条件下做取舍,不再为不完美的答案焦虑;二是明白软件工程不是书本道理,是亲身经历过的代价、经验和方法论;三是从被动听课,变成主动发现问题、探索问题、验证问题的人。AI 能解决已有标准答案的问题,但发现新问题、定义新需求、在不确定中做决策,这是课程要培养、也是 AI 替代不了的核心能力。 当然,这样的课程对老师和学生都有压力,也不是每个人都喜欢,大家要有清醒的认识。
邹欣:现在有了越来越强大的 AI,就不必太纠结了, 把你的情况告诉 AI,让它给你建议,然后你就去实践, 在实践中验证你的想法和 AI 的建议是否靠谱,不靠谱那就改进。 展开来讲,计算机科学更专注于发现和研究长期的、客观的真理,比如算法原理、计算机体系结构等,适合对科研感兴趣、想深耕技术底层的学生;软件工程更专注于将理论落地,解决实际问题,比如开发产品、管理项目等,适合想快速进入行业、专注于产品落地的学生。大家可以结合自己的兴趣,先通过小项目实践,比如在Gitee 上自己搞一个项目,把想做的软件都做出来,感受自己更适合哪种方向,再做出选择,不必过早给自己设限。

邹欣:仍然有必要学习。 学习开挖掘机的学生,还是要学一些基础的机械常识; 要成为高明的厨师,还是要学习不少营养学等学科。
AI 的确能取代很多人类的工作,但是人类仍然要学习,做那些 困难而正确的事, 从个人来说,攀登科学技术的高峰,在任何时代都值得去追求; 从国家和人类的角度看,我们仍然需要掌握核心数学,计算机,等技术的人才,还需要掌握各种 AI 应用能力,有跨学科知识的人才,这些都需要不断学习和实践。 计算器出现几十年了,我们在小学仍然要亲自学习和演算各种四则运算,对吧? 软件工程不仅是写代码,更是解决问题的能力、团队协作的能力,这些都是AI无法替代的。AI可以帮我们生成代码,但无法帮我们判断需求是否合理、无法帮我们应对市场竞争、无法帮我们坚持把一个项目做到底,这些都需要我们通过学习和实践来掌握。
我经常说一句话:“AI 确实能平替软件工程师 90% 的执行能力,但它会把工程师最核心那 10% 的能力,放大 1000 倍。”那被平替的 90% 是什么?是记忆语法、写重复的增删改查代码、做基础的调试。这部分工作 AI 做得比我们快得多。 但那剩下的 10% 是什么?是敏锐地观察并“定义真正的商业痛点”,是对复杂系统进行 “驾驭和架构决策(最近经常说的 Harness Engineering)”,是面对强敌时“Build to Win”的韧劲。当一个工程师具备了这 10% 的核心能力,AI 就不再是替代他的机器,而是听他指挥的千军万马。所以,软件工程不仅还要学,而且要聚焦那 10% 的核心去学。
有人说,”我发现除了语法和增删改查代码,我别的都不会 ..." ,那么,就要好好挖掘自己的 “10% 核心能力” 了。
邹欣:一句话:鼓励多用 AI。 要挑战学生们把有实际价值、能长期维护的软件做出来。 每个学生的学习路径不一样,AI 工具和 “古法编程,古法 debug" 的技能都要有,取决于每个学生自己的学习路径 --- 大学生都是成年人了,应该自己拿主意。
另外,我们会通过《构建之法》课程的项目,让学生明白,高质量的软件需要考虑代码规范、测试优化、CI/CD、可维护性等多个方面,这些都不是 AI 能自动直接完成的,需要学生具备扎实的底层能力和工程思维。我们还会组织学生对AI生成的代码进行评审,找出其中的问题和不足,培养他们的批判性思维,让他们学会合理利用AI工具,而不是过度依赖。课程也在 Gitee 上开源了: https://gitee.com/zgcai/vibecode-bootcamp/blob/master/README.md
邹欣:就是上面说的 Build to Win 的态度, 和 hard drive 的驱动力,其他的大部分能力,AI 都可以教你。 具体来说,“Build To Win” 的态度,让你能在竞争激烈的市场中,明确目标、直面挑战,不逃避、不敷衍,专注于做出能落地、能赢的产品;“hard drive”的驱动力,让你能在遇到困难时坚持不懈、精益求精,不轻易放弃,能把一个项目从想法变成现实。这两种能力,是AI无法替代的,也是未来软件工程师最核心的竞争力。除此之外,跨学科思维、问题解决能力和团队协作能力也很重要,这些能力需要通过长期的学习和实践来培养,也是AI难以复制的。
邹欣:培养体系上有很多大大小小的改进空间,也有各种专家和老师在讨论,从忧虑学生的上课抬头率,到论文的重复率,AI 内容占比,等等。 但我认为最核心的要务只有四个字:‘以终为始’。
我们培养学生,不仅是为了让他们能‘解释世界’,更重要的是能‘改造世界’。现在,AI 已经把解释世界的工作做得很好了,而且还在飞速进化。因此,我们的学生就要尽快从‘改造世界’入手——对于 AI 工具,要能用尽用,去直面真实的业务场景,看看能做出什么改进,如何 build to win。而在改造世界的真实实践中,学生必然会碰到各种工具失效、逻辑卡壳、用户不满的问题。到了这个时候怎么办?这就倒逼他们去死磕那些 AI 都搞不定的技术难点、底层核心原理,以及跨领域的综合技能 -- 他们碰到这些问题时,自然会抬头问老师,问专家,做各种探索。我们要问的是,老师能帮助学生改造世界么?或者他们也仅仅擅长于 ’用 PPT 解释世界’?
更重要的是,一旦抓住了‘改造世界,以终为始’这个核心,教学管理上那些让人焦头烂额的小问题也就迎刃而解了。例如,我们还需要强迫学生签到、打卡、点名、签退吗?毕业论文到底要规定什么字体、什么格式?和 AI 查重的重复率究竟要定在多少?我们不妨反问一句:在学生们 ‘改造世界’ 的征途中,这些规定究竟是必须要跨越的本质困难,还是纯粹消耗精力的 琐碎困难?当教育的终点直接对齐了真实的产出和价值,这些为了维持教育形式而设立的细节要求,自然就会被放到它们应得的优先级上。
邹欣:亮点: AI 带来强大效率工具,极大提升开发速度和原型能力。 软件工程仍是“有趣、有意义”的专业,能做出真实产品并面对市场竞争。 教育与产业结合更紧密,传统的教育中低效率和浪费时间的部分可以跳过。比如,现在很多高校都在引入工业界的实践项目和师资,Gitee等平台也为年轻人提供了很多开源项目和学习资源,让大家能更快地接触到行业实际,提升自己的能力。
痛点:很多产品还是流于 “赚快钱”, 没有深入解决用户的痛点,做 “正确而困难的事”。 比如,有些产品只追求表面的功能和流量,不注重用户体验和产品质量,最终难以在市场上长期立足;还有一些从业者过度依赖AI工具,忽视底层能力的培养,导致自身竞争力不足。
发展方向:软件会有写完的那一天么? 有可能啊,你看现在你自己还在手机上找 APP 么?什么是人类社会长久的需求呢? 我认为是能源和健康。 如何更高效地利用能源?如何让人的生活更健康? 这里面有无数的痛点和机会,软件 + AI 在这里大有可为。 除此之外,跨学科领域的创新,所谓 AI + Science,也是值得年轻人重点关注的。

邹欣:教学的改革:人才培养体系的效率应该能大大提高效率,推动 “以终为始” 、 learning by doing、半工半读的方式,既能学到理论知识,又能积累工业界的实践经验,提升就业竞争力 --- 也许工作和学位在半工半读中自然就有了! 此外,我还希望通过Gitee等平台,搭建高校与企业之间的桥梁,让企业的真实项目走进课堂,让学生的项目成果能对接市场需求。
企业技术研发:既然我们有了这么强大的 AI 工具,那么,我们为何不用 AI 来颠覆每一个研发环节,甚至取消一些环节,让 AI 更好地帮助企业找到解决方案,创造价值? 我希望推动 AI 与企业研发的深度融合,利用 AI 工具优化研发流程、提升研发效率,帮助企业降低研发成本、做出更有竞争力的产品。同时,我也希望通过自己的经验和资源,帮助企业培养更多研发人才,推动整个IT行业的高质量发展。