周一晚上9点
计算机科学楼的实验室里弥漫着咖啡因和熬夜的气息。已经是晚上九点,但这里还有至少十几个人——有人戴着降噪耳机对着屏幕敲代码,有人在小声讨论算法,有人干脆趴在桌上小憩。
沈清辞坐在角落的一台电脑前,眉头紧锁。他面前是CS106B的期末项目:实现一个简单的文件压缩程序,要用到哈夫曼编码。概念他懂,但实现起来总有bug——他的程序能编码,但解码时会丢失部分数据。
他已经在这里坐了三个小时。桌上放着一个空的咖啡杯(图书馆休息室免费的劣质咖啡)和一个吃了一半的能量棒(打折时买的,口感像在嚼木屑)。
“哈夫曼树构建时的优先队列出问题了?”
一个声音在他身后响起。沈清辞回头,看到一个亚洲面孔的男生站在他身后,大约二十五六岁,穿着灰色的斯坦福连帽衫,头发有点乱,但眼睛很亮。
“你怎么知道?”沈清辞问。
男生指了指屏幕:“看这里,你用的默认比较函数是基于ASCII码的,但哈夫曼编码需要基于频率。所以你的优先队列排序错了。”
沈清辞看着代码。该死,他说得对。
“我应该用自定义比较函数,”他喃喃道。
“对,”男生拉过旁边的一把椅子坐下,“像这样——”
他接过键盘,手指在键盘上快速敲击。沈清辞注意到他的手——修长,干净,指甲剪得很整齐。典型的程序员手。
不到两分钟,男生改好了代码:“试试现在。”
沈清辞运行程序。这次,编码,解码,还原文件。完美。
“谢谢,”他说,松了口气,“你是……”
“Alex,计算机系博士四年级,”男生伸出手,“你呢?”
“沈清辞,大一。”
“大一?”Alex挑眉,“大一就能写出这样的哈夫曼编码,不错。很多大三学生还写不明白。”
“我在国内学过一些。”
“中国来的?”
“嗯。”
“我也是——美籍华裔,父母是从台湾来的。但我中文说得不好,只会基本的,”Alex用带点口音的中文说,“你好吗?”
沈清辞笑了:“你好。”
他们用英文继续交谈。Alex很健谈,从哈夫曼编码聊到信息论,再聊到最新的机器学习进展。沈清辞发现,Alex的知识面很广,而且能深入浅出地解释复杂概念。
“你在做什么研究方向?”沈清辞问。
“分布式系统中的容错机制,”Alex说,“具体点说,就是当系统的一部分出错时,如何让整个系统还能继续工作。”
“听起来很有用。”
“是啊,尤其是在云计算时代。对了,你下学期要选什么课?”
沈清辞说了几门课:数据结构进阶、算法分析、计算机系统基础。
“都是硬课,”Alex点头,“不过你看起来能handle。对了,我有个研究小组,每周四晚上开会,讨论一些前沿论文。如果你感兴趣,可以来听听。大一就能接触研究,对以后申请研究生或者找工作都有帮助。”
沈清辞心动了。研究小组。这听起来比洗盘子或者图书馆理书有意义多了。
“需要什么条件吗?”他问。
“不需要,就是感兴趣就行。不过我们小组现在有个小项目,需要人帮忙写一些测试代码。如果你愿意帮忙,我可以给你申请一点研究助理的津贴——虽然不多,但够买咖啡。”
津贴。钱。
沈清辞的眼睛亮了:“多少?”
“按小时算,15美元一小时,每周最多10小时。”
15美元。比图书馆的12美元高,比“福满楼”的8美元高很多。而且是研究相关工作——这对他的简历很有好处。
“我感兴趣,”他说。
“太好了,”Alex笑了,从口袋里掏出一张名片——纸质名片,在2014年已经很少见了,“上面有我的邮箱和电话。周四晚上7点, Gates楼302室。直接来就行。”
沈清辞接过名片。上面写着:“Alex Chen,计算机科学博士候选人,斯坦福大学。”
“谢谢,”他说。
“不客气,”Alex站起来,“我得走了,还有个会。周四见。”
“周四见。”
Alex离开后,沈清辞看着那张名片,心里涌起一种复杂的感觉。一方面,他得到了一个很好的机会。另一方面……Alex的眼神,有点太热情了。
也许是他想多了。
Gates楼302室
研究小组的规模比沈清辞想象的小:只有五个人,加上Alex是六个。除了Alex,其他都是研究生或博士生。沈清辞是唯一一个本科生。
Alex介绍他时,说:“这是沈清辞,大一,但编程能力很强。他会帮我们做测试代码。”
其他人点头致意,没有多问。学术圈子里,能力比年级重要。
会议的内容确实很前沿:讨论一篇刚发表在SOSP(操作系统原理研讨会)上的论文,关于新型的一致性协议。沈清辞能听懂大概,但很多细节需要Alex解释。
Alex解释得很耐心。每次沈清辞有问题,他都会详细解答,甚至画图说明。
会议持续了两个小时。结束后,其他人陆续离开,只剩下沈清辞和Alex。
“感觉怎么样?”Alex问,一边收拾白板笔。
“很有收获,”沈清辞说,“虽然有些地方没完全懂。”
“正常,那是博士级别的论文。你能跟上已经很不错了,”Alex把白板笔放回盒子,“对了,测试代码的需求我发你邮箱了。你有时间看看,下周我们可以讨论一下实现方案。”
“好。”
“现在要去喝杯咖啡吗?”Alex看了看表,“才九点,学校咖啡厅还开着。”
沈清辞犹豫了。他本来计划去图书馆工作两小时——李哲安已经推荐了他,他下周开始培训。但Alex是他的“老板”,拒绝可能不太合适。
“好,”他说。
咖啡厅里人不多,几对学生坐在角落里学习或聊天。Alex点了两杯拿铁,付了钱——沈清辞想AA,但Alex坚持请客。
“算是欢迎你加入小组的欢迎饮料,”Alex说。
他们找了个靠窗的位置坐下。窗外,校园的路灯在冬夜中散发出暖黄色的光。
“你来斯坦福半年了,适应了吗?”Alex问。
“在适应。”
“想家吗?”
沈清辞搅拌着咖啡:“有点。”
“我第一次来斯坦福时,也是大一,从东海岸来。当时觉得加州的一切都很陌生:天气太晴朗,人们太热情,连树都长得不一样,”Alex笑了笑,“但现在,我离不开加州了。回去东海岸反而觉得冷。”
“你博士毕业后打算留在这里?”
“嗯,大概率去硅谷的公司。有几个offer在谈了。”
“恭喜。”
“谢谢,”Alex喝了一口咖啡,看着沈清辞,“你知道吗,你很特别。”
沈清辞抬头:“什么意思?”
“不像其他中国留学生。”
“哪里不像?”
Alex思考了一下:“气质。大多数中国留学生,尤其是本科生,有两种极端:要么特别腼腆,躲在comfort zone里,只跟中国人玩;要么特别张扬,开跑车,买奢侈品,急于融入美国文化。但你……不一样。你看起来很平静,很专注。而且你的英语很好,没有那种刻意的口音。”
沈清辞不知道该怎么回应。这算是赞美吗?还是只是观察?
“谢谢,”他最终说。
“而且你很帅,”Alex补充道,语气自然得像在评论天气。
沈清辞的手停顿了一下。咖啡勺在杯子里发出轻微的碰撞声。
“什么?”他问。
“你很帅,”Alex重复,眼神直视他,“轮廓分明,眼睛很有神。在中国学生里,你很出众。”
沈清辞感到一种本能的警惕。这已经超出了学术或工作关系的范畴。
“Alex,”他尽量让声音保持平静,“我是来参加研究小组的。”
“我知道,”Alex笑了,“放松,我只是陈述事实。在美国,赞美别人的外貌很正常。不是所有赞美都有意图。”
话虽这么说,但他的眼神告诉沈清辞:有意图。
沈清辞决定转移话题:“测试代码,你希望我用什么语言写?Python还是C++?”
Alex接受了话题转移:“Python吧,快一点。不过有些性能关键的部分可能需要C++扩展。到时候我们可以一起做。”
“好。”
他们又聊了半小时的技术问题。Alex确实很专业,对分布式系统的理解很深。沈清辞学到了不少东西。
但在这个过程中,沈清辞注意到一些细节:
Alex说话时会微微向他倾斜。
Alex的眼神停留在他脸上的时间有点长。
Alex在解释一个概念时,手指无意间在白纸上画图,手肘碰到了沈清辞的手臂。
每次接触,沈清辞都会下意识地微微后撤。
不是厌恶。是……不适。
因为他知道这种接触背后的潜台词。因为他知道Alex的眼神意味着什么。
离开咖啡厅
“我送你回宿舍?”Alex问。
“不用了,我骑自行车。”
“这么冷的天骑自行车?”
“习惯了。”
“好吧,”Alex没有坚持,“那周四见。记得看邮件。”
“好。”
沈清辞骑上自行车,Alex站在原地挥手。骑出一段距离后,沈清辞回头看了一眼,Alex还在那里,看着他离开。
他加快了速度。
回到宿舍,Raj在看电影。
“今天这么晚?”Raj问。
“研究小组会议,然后喝了咖啡。”
“和谁?”
“小组的负责人,Alex。”