来美三十年之我在美国做客座教授markyang博客

5/16/2026

1996年,从中国到美国读研究生,开始一段平澹而有趣的人生之旅,这三十年,我既是五子登科(妹子,孩子,房子,车子,票子),又是高低起伏(苦读,找工,经商,办学,房东,失业,再就业等等),而其中经历过的很多事情,估计是在国内很难体验的,突然有一种记录的欲望,就写一个系列,“来美三十年之我在美国”,平凡如我的普通人,在美国读过书,找过工,经营过小企业,做过传销,当过校长,做过客座教授,长期做义工,办过培训中心,长期儅房东,还有很多很多。

我在美国做客座教授,其实纯属误打误撞。很多人一听教授两个字,脑海里马上浮现出一个穿西装、打领带、夹着《算法导论》、站在讲台上侃侃而谈的人。现实中的我呢?白天在公司写代码、开会、修Bug,晚上六点半从公司一路堵车冲去学校,有时候连晚饭都是在车里啃一个热狗解决。

严格来说,我算是美国高校体系里的Adjunct Professor,中文通常翻译成客座教授或者兼职讲师。这种职位在美国大学非常普遍,尤其是计算机、商业、工程这些偏实战型专业。学校喜欢找行业里真正干活的人来教课,因为很多全职教授理论很强,但未必知道企业现在到底在用什么。而我,就属于那种白天和系统死磕,晚上去给学生讲架构设计的类型。

美国客座教授,到底是个什么系统?

美国大学里,教授其实分很多种。最正统的,是Tenure Track(终身教授轨道),搞科研、发论文、申请基金,压力巨大。而像我这种,则属于教学型雇佣兵。

学校缺老师了,就会通过各个渠道发佈信息,“谁会 Java?” “谁懂 Python?” “谁能下周就开课?”

于是,行业里的工程师们就被拉进来了,当然通常都还是有些关係或者熟人介绍的,我就是一个在大学做正教授的朋友介绍的。

客座教授最大的特点就是按课付钱,没有终身职位,没有办公室,没有科研压力,甚至教师停车位都不一定有,但自由度很高。很多人白天是工程师、律师、医生,晚上去大学教课,有点像大学圈子里面的Uber司机。

我第一次正式教课,是在一所州立大学,课程名字很霸气,Advanced Java Programming,一听像是要造 JVM,实际上学生最怕的是,“Professor,为什么 Eclipse 又报错了?”

这门课我连续教了两学期,每周两次次夜课,从晚上 6:30 到 9:30,其中两节课是上课,一节课是LAB。

这个时段的班通常是给兼职上课的学生,但是学生人数也不少,秋季班有22人,春季班有25人,这在美国州立大学已经算不小的班级。

因为是高阶编程课,学生大部分已经学过,Java 基础,数据结构,数据库,部分Web开发

课程内容包括,多线程,Socket 编程,JDBC,Servlet,简单系统设计,GUI,网络应用开发,现在看这些技术有点时代眼泪,但在当时已经算很实战。

最有意思的是学生,美国大学课堂,和亚洲差别非常大。中国学生习惯,老师讲,学生记。美国学生习惯,老师刚说一句,下面已经开始举手反驳。

有一次我讲线程同步,我刚写完 synchronized,一个学生马上问:“Professor,如果系统性能下降怎么办?”,我心想:你这问题,已经是 senior engineer level 了。结果后面另一个学生说:“我爸公司就因为lock设计有问题,网站崩过一次。” 好家伙,课堂直接变技术论坛了。

州立大学里的学生,大部分还是传统全职学生,但是我这个班算是专门为兼职的学生准备的,所以年龄一般偏大一点20 ~ 40岁。他们的特点是理论基础相对好,作业完成度较高,考试比较认真,有一定的社会经验少。

有几位学生让我印象特别深刻,其中一位特别认真的是印度裔学生,我一直记得那个消瘦的印度裔学生。

每天永远坐第一排,每次上课前十分钟就到,别人下课就跑,他一定留下来继续问问题。

后来我才知道他白天在加油站兼职,晚上上课,回家后凌晨继续写代码,最后期末项目,他一个人做了一个完整聊天室系统,包括用户登录,多线程消息处理,数据库存储,GUI 界面,代码不算完美,但完成度惊人,他最后拿了全班最高分。

后来他毕业进了一家金融公司做开发,多年以后还在 LinkedIn 上联系过我。

这种时刻,会让你觉得教书其实挺有意义,它可能会改变某个学生的一生。

还有一个学生,我一直印象特别深,他也很特别。

他属于那种,你一看就知道,不是普通学生。第一次见到他的时候,就立即记住了他,他个子很高,穿着运动服,背着一个旧书包,永远坐在教室靠后的位置,不怎么讲话。

一开始,我觉得他不过是个沉默寡言的普通学生,结果第一份作业交上来,我就发现不对劲了。这个学生水平比较高,当时有个 Java 多线程的小作业,大部分学生还在,synchronized 到处乱加,线程锁死,GUI 卡住,console 一片报错。

而他提交的代码,注释规范,类结构清晰,异常处理完整,连线程池都已经开始用了。

我当时看完第一反应,这不像普通本科生写的。后来课堂讨论时,我故意问了几个比较深入的问题。

比如:“为什么这里不用继承 Thread,而用 Runnable?” 他直接回答:“因为实际项目里,更需要解耦和线程池管理。” 教室瞬间安静。很多学生还没搞清楚 Thread 和 Runnable 区别,这哥们已经开始聊架构了。

后来我才知道,他是从PRINCETON转学过来的,美国大学里体育生很多,他就是棒球队特招的体育生,但是他的基础水平也是很高的,不过是因爲参加大学的联赛,包括训练后的确压力太大,无法继续在PRINCETON完成学业,转学到了比较轻鬆的州立大学。

有一次下课后,他留下来问我实习的问题。聊着聊着,我才知道他之前在 Princeton University,我当时差点没反应过来。

心想:“那你怎么跑我们州立大学来了?” 后来才知道,现实远比电视剧复杂。不是每个藤校学生,都家里有矿,很多人以为美国藤校学生全是富二代。其实并不完全是,他家境只能算普通,父母收入一般。虽然拿到部分体育奖学金,但生活压力依然很大。尤其美国大学体育训练,时间占用非常夸张。他说自己在 Princeton 时,每天训练,比赛旅行,上课,写作业,几乎全年无休。

而且 Ivy League 体育生有个特点不像职业体育体系那样只管打球,学业要求依然很高。他后来实在撑不住,经济压力 + 时间压力 + 学业压力,最后决定转学到州立大学。

他是真正的勤工俭学,最让我佩服的是,他完全不是那种精英优越感学生,相反,特别低调,后来熟了以后才知道,他除了上课和训练,还在校内外做兼职。他干过图书馆管理员,健身房前台,体育馆设备整理,有时候凌晨两点还在工作,第二天继续来上课。

但即使这样,他的水平依然明显高于班里其他学生,最经典的一次LAB,有一次我故意出了个比较难的 Socket 编程题。很多学生卡住,教室里一片:“connection refused”,“port already in use”,“why is this happening”,结果他半小时就写完了,然后居然开始帮旁边同学 debug。

我在教室后面看着,突然有种奇怪感觉,这已经不像学生了,更像 TA(助教)。

后来我甚至开玩笑说,“你是不是偷偷已经工作过了?” 他说 “没有,但我以前在 Princeton 时,竞争太激烈,不拼不行。” 这句话其实挺真实。很多顶尖学校学生,不一定更聪明。但他们往往更早接触,高标准,高强度,高竞争环境,久而久之,整个人的做事方式都会不一样。

最后他去了哪里?后来他毕业后进了一家金融科技公司,做后端开发,起薪据说相当不错。

有一次他还给我发邮件,“Professor,现在终于不用凌晨打工了。“,看到那句话,我感慨万分,因为美国大学里,真的有很多这种学生,表面看起来普通,实际上每天都在硬扛生活,也是从他身上,我第一次真正理解美国大学里面相对最厉害的学生,未必是最张扬的。

有些学生穿旧衣服,开二手车,白天训练,晚上打工,但脑子和执行力,是真的强,而且他们通常还有一个共同特点特别清楚自己为什么努力,这一点,比 GPA 还重要。

很多人以为美国大学考试特别水,其实不是,至少我在的州立大学不是,尤其计算机课,如果认真教,出题并不轻松。

我当时的考试结构,30% 平时作业,20% 小测验,20% 期中,30% Final Project,为什么项目占比高?因为程序员这行,背答桉没用,代码跑不起来,就是跑不起来。

有一次,一个学生 Final 写到凌晨三点,邮件给我:“Professor,我程序在我电脑上能跑,为什么学校机房跑不了?” 我回复欢迎来到软件工程的真实世界。

当然也有那种奇葩学生,平时不认真上课练习,考试时各种接口。

这个第一次的客座教授经历让我对于兼职教学有了一些认识和体验,后来的一次,更加离谱。

Scroll for more