马克谈天下(609) 來美三十年之我在美國做客座教授

markyang (2026-05-15 08:56:56) 评论 (1)

1996年,從中國到美國讀研究生,開始一段平淡而有趣的人生之旅,這三十年,我既是五子登科(妹子,孩子,房子,車子,票子),又是高低起伏(苦讀,找工,經商,辦學,房東,失業,再就業等等),而其中經歷過的很多事情,估計是在國内很難體驗的,突然有一種記錄的欲望,就寫一個系列,“來美三十年之我在美國”,平凡如我的普通人,在美國讀過書,找過工,經營過小企業,做過傳銷,當過校長,做過客座教授,長期做義工,辦過培訓中心,長期儅房東,還有很多很多。

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

Adjunct Faculty: Straddling the Poverty Line

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

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

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

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

于是,行业里的工程师们就被拉进来了,當然通常都還是有些關係或者熟人介紹的,我就是一個在大學做正教授的朋友介紹的。

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

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

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

Advanced Java Programming: Uttam Kumar Roy: 9780199455508: Amazon.com: Books

這個時段的班通常是給兼職上課的學生,但是学生人数也不少,秋季班有22人,春季班有25人,这在美国州立大学已经算不小的班级。

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

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

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

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

州立大学里的学生,大部分还是传统全职学生,但是我這個班算是專門為兼職的學生準備的,所以年龄一般偏大一點20 ~ 40岁。他們的特点是理论基础相对好,作业完成度較高,考试比较认真,有一定的社会经验少。

有幾位學生讓我印象特別深刻,其中一位特别认真的是印度裔学生,我一直记得那個消瘦的印度裔学生。

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

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

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

这种时刻,会让你觉得教书其实挺有意义,它可能會改變某個學生的一生。

Prospective Student Athletes | Admission and Athletics | Providence College

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

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

一開始,我覺得他不過是個沉默寡言的普通学生,结果第一份作业交上来,我就发现不对劲了。这个学生水平比較高,当时有个 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,我程序在我电脑上能跑,为什么学校机房跑不了?” 我回复欢迎来到软件工程的真实世界。

當然也有那種奇葩學生,平時不認真上課練習,考試時各種接口。

Community College vs University Statistics: A Factual Look

這個第一次的客座教授經歷讓我對於兼職教學有了一些認識和體驗,后来的一次,更加离谱。

我家附近一个 Community College 临时缺老师,原来的 Python 老师突然因爲換公司不嫩來,他們的系主任通過我的朋友找到我,江湖救急。他的第一句話就是,“下周能来吗?” 我说 “这么急?” 主任说:“学生已经注册了。” 于是我就这么救火上任了。

如果说州立大学像比較标准的大学生活,那社区大学,简直像美国社会缩影。

学生年龄跨度巨大,18岁高中刚毕业,30岁準備转行,40岁失业再培训,50岁退休后学编程,甚至还有一位六十多岁的老爷子。

他说:“我孙子天天玩游戲,我想看看是否可以寫個小游戲給他玩” 全班直接笑翻。

社区大学学生,生活压力明显更大,这里很多学生都是半工半读。有人白天送 Uber,有人在 Walmart 上班,有人刚下工地,晚上再来学 Python。

有个学生让我印象特别深,他每次上课都特别困,我一开始以为他不认真,后来聊天才知道,他凌晨四点開始在面包厂上班,下午睡几个小时,晚上再来上课。

那一刻,你会突然意识到,有些学生不是不努力,而是真的太累了。

奇怪的是,社区大学学生虽然基础弱,但参与度反而更高。因为他们知道,自己是真要靠这个找工作。

州立大学有些学生,这课只是 degree requirement。

社区大学很多学生,这可能是我人生翻盘机会。

所以他们特别敢问,特别认真,甚至特别现实。

他们最常问,学完能找到工作吗?Python 哪个方向工资高?简历怎么写?,这些问题,比线程同步真实多了。

教完之后,從教師的角度,我对两类学校感受非常明显。

州立大学的优点是,学生基础较好,学术氛围强,课程体系完整,校园资源丰富,

缺点是* 有些学生目标感不强,理论多一點,现实少一點

社区大学的优点是,学生更拼命工作,更接地气,学习目的明确,课堂互动真实

缺点是基础参差不齐,辍学率较高,很多人时间精力有限

在這些短暫的教學實踐中,最搞笑的一次课堂事故是,有一次我在讲 Python 的循环,写了个无限循环,结果忘记停,电脑风扇突然开始狂转,教室一下安静。

后排一个学生默默说:“Professor,你的程序好像进入了死循環了” 全班爆笑,我才意識到,只能尴尬地按下 Ctrl+C,从那以后,我每次讲循环都特别谨慎。

通過的我的在美國做客座教授的體驗,深刻地認識到美国大学體系最重要的不是名校,而是你到底为什么学习。

州立大学里,有学生一路名校,却不知道自己想干嘛。社区大学里,也有人白天搬货、晚上写代码,最后成功转行进IT。

美国教育真正厉害的地方,其实不是藤校,而是它给了很多普通人重新开始的机会。

至于我自己,其实我一直觉得,自己不算真正意义上的教授。

我更像一个白天写代码、晚上分享经验的老工程师,但每次看到学生第一次程序跑成功,找到工作,写出完整项目,从不懂编程变成真正 developer,那种成就感,比公司 PPT 漂亮多了。

而且最关键的是当老师有一个巨大好处,你终于可以體驗到那種教書育人的感覺,也可以從學生的提高和轉行,找到新工作的分享中得到一種成就感,遠比自己完成一個新項目更加有意義,就是那種通過教育和練習改變了某些人的人生的意義感。

當然我也知道有一些人後來把做客座教授當作一種重要的收入來源,長期兼職,這個也無可厚非,而我並沒有繼續做客座教授,不過我通過這種體驗發現了自己的真實愛好,那就是教書育人,這個也給我後來的另外一個重要的行動埋下了種子,我在後面會繼續分享。