本次采访,我们有幸邀请到华夏计算机英才班的09级校友林晗学长,通过书面问答的形式,分享他在学术研究、职业发展以及人生感悟方面的宝贵经验。
林晗学长现任职于华为公司,深耕软硬协同设计、操作系统、编译器等基础软件领域。他曾担任科大超算鸿雁队队长,在2019年成为入选华为天才少年计划的八名2019届应届顶尖学生之一,该计划的“百万年薪”一时引起舆论广泛关注。从本科阶段开始,林晗一直在计算机系统结构领域潜心钻研,并取得了瞩目的成绩。此次采访中,他以诚恳的态度和翔实的内容,为英才班学弟学妹们答疑解惑,不仅展现了学术和职业的独到见解,也饱含对后辈们的殷切期望。
这篇书面采访的问题从华夏英才班的同学们的提问中收集提炼,它既是一次思想的碰撞,也是一场心灵的对话。希望通过这份文字记录,能够帮助每一位英才班的同学解答迷茫、汲取智慧,在成长的道路上坚定步伐。
采访时间:2024年12月
采访形式:书面采访
采访小组:郭东昊、金雨润、薄震宇
以下为采访稿全文
一、个人简介
Q:林学长您好!见字如面,和学弟学妹们打个招呼吧!可以简要介绍一下自己,包括自己的研究方向、从业方向,以及自己目前从事工作的具体内容。
A:感谢关照!非常荣幸有机会与大家展开这样一种交流。
我叫林晗,0911。2013年本科毕业后本校保研,师从安虹老师。从本科高年级开始进入实验室,一直从事计算机系统结构方向的学习和研究工作。博士毕业后进入华为公司,目前从事软硬协同设计、操作系统、编译器等基础软件方面的工作。
Q:我们很好奇,作为一个计算机行业的业界精英,学长的每一天如何度过?比如:在您的一天中,您更加会关注哪方面的资讯/信息?您的生活日常是否像我们对“码农”的刻板印象一样始终忙碌,甚至昼夜颠倒?在工作和生活中有哪些事最常让您感到幸福?
A:这个问题我就不详细回答了。
我身边大部分人都保持着基本正常的日常作息,昼夜颠倒几乎是不存在的。在某些特殊的时间节点,项目组会很忙,这时候难免需要加班,有时是深夜,有时是周末。通常情况下我会避免加班——人每天能全情投入一件事的有效时间是有限的,平均起来只有6个小时左右(年轻学生或许可以超过这个时间);超出这个时间,工作效率会急剧下降,对最终的产出帮助不大。与其干耗时间,不如重视效率。
二、科大篇
Q:回忆起在科大求学的点点滴滴,能否请您和我们分享一段您在科大学习生活最难忘的经历?
A:我最难忘的应该是2011年夏季小学期Yale Patt教授来科大讲授《计算机系统概论》课,那是我第一次近距离地感受到大师的风采(网上还能找到当年的视频)。
一位来自异国他乡的72岁老人,克服时差和酷暑的影响,每天给我们讲整整半天课,用两周时间讲授了一个学期的内容。每次课堂上总是座无虚席,课堂氛围相当热烈。老爷子讲课没有课本(他自己就是教材的作者),也不用胶片,只有写着关键词的一张纸。所有的概念、电路图、逻辑运算……都通过粉笔板书,每一个细节都分毫不差。老人讲起课来,声如洪钟,热情洋溢,娓娓道来,如数家珍。我看到了一个人把事情做到极致应该有的样子,也看到了一个人倾其一生奉献给一件事业并由衷热爱的样子。我们应当景仰这样的人,这是最好的榜样。
在科大,我们有不少机会接触这样的大师,聆听他们的讲座。我想说的是,请珍惜这样的机会——不要因为要多做几道题、准备某个考试而轻易错过这样的机会,因为说不定哪次讲座,就会给你今后带来长久的影响。
三、方向篇
Q:大二大三的同学们常常对方向的选择感到迷茫。学长是如何确定自己从事的研究和职业方向的?在确定自己方向的过程中,是否有过对不同方向的尝试和探索?这些尝试和探索的机会从哪儿获得?
A:其他的我有在后面的“确定科研选题”的问题中提到。我想提一提尝试探索的机会,本科期间至少有以下这些:直接参与实验室工作、大学生研究计划(通常需要主动地去了解一些实验室的研究方向,提前有所准备)、竞赛(鸿雁超算、ACM等)、假期实习,另外还有一些教研合作和联合培养。
一方面多给自己试错的机会,这些机会通常都有一些班级通知渠道、招聘软件、公众号等信息来源;另一方面一旦投入一件事情就全情投入,人的精力是有限的,不要贪多。
Q:不少同学在本科学习时“怕”硬件,觉得体系结构相关方向专业壁垒很高,在一些本科生看来,甚至“计算机体系结构”这个词本身就让他们望而却步,而学长却在这条道路上留下了坚实的足迹,取得了瞩目的成果。对于同学们在“硬”件面前服“软”这一现象,您有没有什么想对这些学弟学妹说的话?
A:我不太确定大家现在所用的教材是什么,我的观点是:第一,体系结构的基础不仅对研究硬件有帮助,对软件开发者也大有裨益(不信你去看看《量化研究方法》的推荐语,软件大牛们对它可是不吝溢美之词的);第二,读一本经典著作可能比死磕课本或教学胶片更有意思(如果现在的教材用的不是那几本经典的话)。再说句题外话:体系结构从RISC架构开始了解似乎更容易,现在的我依然对X86提不起太大兴趣。充分了解一种架构就足够了。
与其说我坚韧不拔,“咬定青山不放松”,倒不如说我这个人比较“懒”,懒得换方向。一开始在鸿雁队做超算比赛,不得不接触一些硬件架构和并行计算的知识,后来进入实验室工作,发现大家分享的论文,比如一些cache的研究、乱序流水线算法等等也蛮有意思。而当我随着工作的进行,渐渐读了《计算机体系结构:量化研究方法》、《程序员的自我修养》、《深入理解计算机系统》等书后,发现对系统的理解逐渐深入,系统底层的问题,对我而言不再是层层迷雾,而是渐渐有了清晰的脉络。
所以我的建议:你可以不从事这个方向,但读一本系统结构的经典著作,获得的裨益将不仅在体系结构的建树上。它可以帮助你在应用软件领域走得更顺。
每个人基于自身会有不同的定位,不可否认有的研究方向可以完全不考虑底层硬件,但如果要构建“全栈”的能力,硬件的知识是避不开的,与其总是逃避倒不如欣然接受。
特别欣赏本科时候杜宏伟老师的话,大意是:(当你要拷问自己“我学这个有什么用”的时候,要意识到,)每一门学科都是特别有用的,前提是你把它学好、学精,你会发现原来它有你完全没想到的妙用,你甚至会从中获得“不足为外人道也”的成就感或满足感。
显而易见,兴趣是最好的老师。如果你对系统结构或系统底层提不起足够的兴趣,建议去了解一些项目再做决定,比如国科大“一生一芯”计划、Linux From Scratch等,还有一些从0开始构建操作系统和编译器的书籍、开源项目,或许你会惊讶——原来学习系统底层原理,可以做这么酷的事情!
从硬件到OS、编译器、虚拟化中间件、上层应用的探索,值得每个人尝试,或与同学合作,科大英才班在这个方面提供了不错的机会,更别说还有很多课外实践、校级比赛等。
四、科研 & 就业篇
Q:如何确定科研选题?以及在做科研的过程中,是否会怀疑可行性而不敢继续做下去,这时候怎么办?
科研选题总是困难的,大家有这样的困惑再正常不过。所以伟人说“提出一个问题,比解决一个问题更重要”。而回顾求学生涯,我认为研究生开题的煎熬甚于研究过程受挫的煎熬。
确定科研选题没有固定套路,但有两点往往脱不开,一是导师的指导,二是文献调研。
导师是把握研究方向的掌舵人,导师的意义更多在于提供系统性视野,保证研究方向有价值、研究课题有意义。建议大家可以主动去寻求一些与各实验室老师、师兄师姐交流的机会,弄清楚某个研究领域的“根本问题是什么”,“解决这些问题会带来什么价值”——我们现在讲“第一性原理”,所谓工作方法的第一性原理,我的理解就是回归问题的本质,多问几个“为什么”。
了解一个新方向最便捷的方法之一,我认为一是找一篇介绍这个领域的综述文章,借以了解领域内的关键技术挑战和部分已有做法;二是找一篇近年发表的写得最好的顶会顶刊论文,细细读一遍,了解一个具体问题研究和解决的过程。这样从宽度和深度两个方面,我们都能有所体悟。至于阅读文献中可能遇到的坎坷,我们今天比历史上任何时候有更多可用的工具,比如AI助手。
本科阶段接触的研究方向,我想大多在导师的判断范围内是“可行”的、相对确定的问题,本科阶段更多地是借由参与实验室工作的经历,了解做研究、做工程的基本思路方法,锻炼动手能力、提升系统性视野。因此与其担忧做不出成果,倒不如思考这个项目是否给自己或将会给自己带来足够的提升。如果是能提升自我的事情,大可以抱着“但行好事,莫问前程”的心态尽自己所能去做,万一有一二成果,那更是皆大欢喜。
做技术,做到触类旁通的程度,你就可以“兵来将挡、水来土囤”了,我妄言一句:没有不可行的方案,只有不合适的方案。
Q:您对于做科研和就业之间区别的最突出的感受是什么?您建议计科的学生如何在就业或者科研两者中做出选择?
A:遵从内心——你是想成为明星程序员,有自己的开源作品,或者亲手打磨产品,还是想成为顶级研究者,成为某个学科方向的巨擘,发表无数文章,出版领域著作?
五、学习篇:
Q:结合您在大学期间的学习经历,您认为除了课内的学习内容外,作为一名学计算机的本科生,还有哪些技能和能力是可以培养、值得培养、必须培养的呢?
A:自学能力的培养。科大整体的氛围是自由宽松的,相信在科大的几年学习中大家都会主动或被动地培养出一定的自学能力。毫不夸张地说,自学能力的高低是在未来人生收获多寡的决定性因素之一。我认为在大学期间着重培养自学能力、建立终身学习的意志,是非常有意义和紧要的。
世界观和价值观的塑造。这可以为我们的人生方向建立指引,可以有意识地了解一些中西方古典哲学、社会学、历史等内容,或相关选修课。我始终认为中学语文课中的《论语》选章包含了《论语》中最精华的内容,值得成为我们学习工作和为人处事的准则之一。
养成阅读的习惯。可以从少量、定量的阅读开始,阅读的能力会随着阅读量的积累不断提升,比如一开始每个月读完一本书都很吃力,慢慢地会发现一个月两本书也可以轻松应对……读上瘾的时候,几天一本书总还意犹未尽。至于选书的范围,不必拘泥,我建议一方面本学科的经典著作要读,另一方面要尝试选取那些开拓视野、刷新价值观、引发思考的书。
Q:有一些英才班学生认为H课难度高,作业多,您学习H课时一定也遇到过一些挑战,是如何克服的?您是如何看待H课的,您觉得学生应当以怎样的态度学习H课?
A:我们当时还处在过渡阶段,没有区分H课。但回头来看,就如我前面提到国科大的“一生一芯”计划,求学之年获得这样的机会很难得,这样的课和课程实践对专业能力的提升无疑是帮助巨大的。我认识一位同学,他本科时自己写verilog实现32位处理器、手搓操作系统,还在上面跑起来了像素版的“超级马里奥”!他平时玩linux,喜欢开源项目,热爱技术。有这样的磨练,他在我们仍处在专业课挣扎阶段时,就对计算机科学的各方面融会贯通了。而离开学校步入社会后,虽然对专业的理解也能支撑自己做这样的事(迷之自信^_^),但却再难有时间和机会去着手做了。
首先希望大家更加自信——不逼自己一把,你都不知道自己有多优秀!
其次要知道:功不唐捐。经过高难度课程的折磨,你那多于常人的付出,都会在不经意间获得回报。尽最大的努力,但不追求最好的结果。
六、最后——
Q:感谢学长的耐心解答,如果还有想对大一、大二、大三、大四的英才班学弟学妹们说的话,请尽情附在最后吧!您的寄语会送达每一位华夏计算机英才班的学弟学妹们~
A:世界是你们的!科大是一座坚实而温馨的象牙塔,希望你们能享受在这里的美好时光。
祝愿你们在校期间能在这里构建扎实的专业基础,全方位丰富理论和实践经验,自由探索学科兴趣,养成广泛阅读的良好习惯,做好时间管理,追求世界的本真,独立思考。接受鲜花与掌声,也能承受失败与挫折。做终身学习者,拥有强大的内心世界。
最后,感谢同学们用心提出的问题,可以感受到长长的问题列表倾注了同学们的心血。因为精力所限,我没有逐一回复,但希望我的一家之言能够解大家心头的一二困惑。如此,则足矣。