文章目录
  1. 1. 2015年前后
    1. 1.1. 与新生研讨课结缘
    2. 1.2. 网站开发过程
      1. 1.2.1. 开发团队与分工
      2. 1.2.2. 开发过程中遇到的问题
    3. 1.3. 正式发布
      1. 1.3.1. 和学校教务处沟通
      2. 1.3.2. 儿童节当天上线
    4. 1.4. 网站初期的宣传
      1. 1.4.1. 向科大老师群发邮件
      2. 1.4.2. 写点评送书活动
  2. 2. 2016~2021年
    1. 2.1. 人员各自的变动
  3. 3. 2022年
    1. 3.1. 新的公关事件
    2. 3.2. 时隔7年开发新功能

USTC 评课社区 是我和李博杰(boj)、常震,于2015年一起开发的针对中科大师生的课程评价网站。这是我大一的时候一门课《新生“科学与社会”研讨课》的课程项目。该网站创办的初衷就是促进校内课程信息公开,帮助学生找到更适合自己的课程。时至今日(2022年7月2日),该网站已经运行了2606天,有注册用户6851人,课程点评 17463条。如今,网站上有1120门课程至少有5条点评,有535门课程至少有10条课程点评。可以当之无愧的认为,如今的评课社区,已经成为科大学生选课时的重要信息来源。

这篇博客我想分享一下评课社区背后的故事。为什么会在物理学院凝聚态物理教授——赵瑾老师的《新生“科学与社会”研讨课》上做了 USTC 评课社区网站?而且还真的做出来这个像模像样的网站?下面且听我慢慢道来。

关于2015年前后的故事,主要参考我当时新生研讨课的一些记录。

2015年前后

与新生研讨课结缘

大一的时候,我对计算机技术感兴趣,认为它可以让我更好地改变生活、实现自己的想法。我当时特别想学习网站开发的技术,所以就趁着新生研讨课自由选题的机会,选择了”学习网站开发”的课程。因为就算没有新生研讨课我也会做这个,而且大一学生时间也很紧张,所以想利用新生研讨课的DDL来监督自己。

至于为什么会想做一个课程评价网站,那是因为作为一名大一学生选课是我的一大烦恼。因为选课之前我得不到足够的课程信息,我无法判断这是不是我想学的课程,我不知道这个老师是不是我喜欢的风格。我希望科大有一个课程评价网站,同学们在上面分享自己的课程经验,可以让我选课的时候有所参考,而不是只能根据课程名称猜测这门课大概会教什么…

另一个原因是受 MOOC 学习经历的影响。我在进入科大之前,学了好几门 MOOC课程,还是果壳网 MOOC 学院(该网站已下线)的活跃用户。MOOC 学院当时主打 MOOC 中文学习社区、交流平台,是用户分享课程笔记、课程点评的地方。我当初也在 MOOC 学院上面发表了很多课程笔记和点评,还受邀做过几门课的“课程评价员”,就是快速上完一门课,然后在平台上评价这门课程。

对我来说,MOOC 课程的选择是非常自由的。由于我当时学习 MOOC是自发的、主动的,因此我想要上一门课,主要考虑这几个方面,

  1. 课程内容本身是否是我想学习的内容
  2. 课程本身是否有趣
  3. 课程难度怎么样,我的水平是否合适
  4. 课程负担大不大,需要投入多少时间

MOOC学院在选择MOOC课程这方面给我提供了很大的帮助。所以,在我进入大学之后,我想做这么一个中科大的课程评价网站也就是自然而然的事情了。因为我认为学生应该在选课上面有更大的主动权,应该提前了解课程内容、教师风格、课程难度等等,才能更好基于自己的兴趣、偏好、需求来选课。而只有掌握选课的自主性,才能在课程学习上有最大的主动性,而不是被动学习。

以上就是为什么我会在大一的新生研讨课上做 USTC 评课社区这个网站的答案。

网站开发过程

开发团队与分工

我的新生研讨课课题是“学习网站开发”,所以我一开始是打算自己一个人来开发这个网站的。于是,我在选题报告中列出来自己需要学习的内容有

学习网页开发涉及前端和后端,前端我需要学习:HTML&CSS,JavaScript,jQuery,前端框架(我选择Bootstrap);后端我需要学习:数据库,后端语言(我选择Python),Web 框架(我选择Flask),HTTP 服务器(我选择Nginx)。这些是我需要学习的主要技能树,有偏重,具体看实现的需求。(感觉很可能学不会全部这些)

我在高中的时候已经学过了Python,但我对网站开发还一窍不通。我从大一上学期期末(2015年1月22日)开始学习 HTML 和 CSS,大一寒假都在家抱着电脑学习前端开发。后来我意识到了,自己一个人没办法短时间内学会前、后端所需的所有技术。所以就找了两个队友,我负责产品设计和前端开发,两个队友负责后端开发。关于这个团队是怎么组建的,我在结题报告中写道:

有些人好奇我们这个团队是怎么组建的,是因为兴趣而聚集到一起的吗?其实不完全是的。做这个项目是我的想法, boj 是我当时的男朋友,再加上他本科也想过做这样的网站就加入了。而常震是 boj 的舍友,经常问他技术问题。我也不知道为什么常震会对这个项目感兴趣,当初是他听说我们要做这个,主动加入的。这就是为什么我们的团队里,会有一个物院大一的学生和两个计算机学院研一的学生。不过由于项目初期的时候,我和 boj 都不懂 Flask,而常震有过 Flask 开发的经验,所以最早的时候他帮了不少的忙。郑子涵是我们的朋友,他也对这个项目本身感兴趣,但由于他当时不会Python也不会前端,所以在项目进展了一半的时候,他才加进来,主要是负责帮忙找找网站的漏洞。

还记得大一的时候,我曾混进研究生男生宿舍,在 boj 宿舍里和他舍友三个人一起开发网站。此外,我和 boj 也经常在 USTC LUG 活动室开发网站,甚至到凌晨1-2点。我在大学的时候,很少因为作业熬夜,开发评课社区应该是我为数不多的会因此熬夜的事情。

开发过程中遇到的问题

做USTC评课社区这个项目,前后经历了快三个月,我们从3月8日开始,到5月25日发布内测,期间其实断断续续停过一段时间,真正每天都在开发的时间大概只有一个多月。我在中期报告中提到了项目推进过程中遇到的几个问题:

  1. 没人干活
  2. 合作混乱
  3. 对工具不熟悉

没人干活的问题原因很简单,因为大家都是科大学生,我当时是物理学院大一的学生,另外两个队友是计算机学院研一的学生,大家都有繁重的课业负担,能抽出时间开发这个网站实属难得。拿我自己来说,大一下学期,我已经打算从物理学院转去计算机学院了,所以那个学期我是跟着计算机学院的同学一起上课了,我上了以下10门课:

程序设计II (黄章进)、代数结构(韩文廷)、线性代数 B1(陈发来)、多变量微积分(李娟)、数字媒体技术 (谢栋)、大学英语听说III (方晶)、大学英语读写中级 (陈静)、国际体育舞蹈(女步) (徐雄杰)、马克思主义基本原理 (张顺铃)、新生“科学与社会”研讨课 (赵瑾)

其中硬核的课有3门数学课(代数结构、线性代数、多变量微积分),还有1门计算机学院的C++课程。我可以说被这几门课虐得焦头烂额。大一上学期我的GPA 还有3.4,大一下学期结束的时候,我GPA只剩下 2.46 了,可见当年惨状。以至于我后来产生了弃理从文,产生了再也不学数学的想法。我也身体力行了自己的想法,于是大二上学期开始我转到科技传播系去了(这是后话)。总之,我在那样黑暗的一个学期,我和男朋友及其室友一起开发了评课社区这个网站,可见兴趣真的是最好的老师。

合作混乱的问题,具体包括干活时间不同步、分工混乱、没有文档、经常吵架等等,都很好理解。我在中期报告中还提到了这次项目开发给我带来的几点经验

  1. 兴趣,再忙也能投入时间
  2. 合作,需要规则和利益约束
  3. 学习,实战与边做边学冲突

关于第一点我在上面已经解释过了,如果不是兴趣,我是不可能在大一下学期有时间做这个项目的。第二点和第三点实际上解释了项目推进过程中遇到的一些问题。一方面我之前没有网站开发的经验,所以是边学边做的,这必然会导致项目进展比较慢,但我认为这是学东西最快的方式。而合作的问题,我在结题报告里提到

在项目开发的过程中经常有程序员不干活,大概是因为我们的项目没有激励机制。就经常出现十几天没人干活的情况,所以我们经常因为干活这件事吵架。想想我们的项目最后能发布出来也是挺不容易的,新生研讨课的几次报告起到了不错的督促作用。所以,感谢赵老师没有限制我们的选题。

正式发布

和学校教务处沟通

在评课社区网站正式发布之前,我还给当时科大教务处的领导发过邮件,主要是想提前和学校有关部门沟通好,让他们知道我们创建这平台的初衷是什么,平台的开发者都是谁,希望能够得到教务处的支持(至少不要反对我们)。毕竟我们的网站课程信息都是从教务系统抓取的,而且一开始服务器就在东区图书馆。后来教务处的负责人真的回了我邮件,和我约了一个时间在东区老图书馆当面交流。基本上得到的回复是,教务处不会干预我们的网站,不支持也不反对,让我们自己发展。现在想想,这次主动的和教务处沟通,也许得到了不错的效果。在后来7年时间,我们收到了若干次来自学校老师的投诉,但中科大从来没有以校方的身份干涉我们,让我们删除课程的负面评价。

儿童节当天上线

评课社区正式发布应该是 2015年6月1日,当时发布的 slides 写着下一步的计划包括

  • 多平台运营(微信、微博、BBS、海报…)
  • 通知系统(@功能)
  • 重新美化首页
  • 显示同班同学
  • 课程作业黑板报

以上计划,除了通知系统实现了,其他的功能直到现在都没有实现。

网站初期的宣传

正式发布之后,我在新生研讨课、科技传播系,做过两次项目的演讲。一开始想的多平台运营,实际上我们并没有花时间去做。所以评课社区现在能火起来,完全靠科大同学们口口相传。

向科大老师群发邮件

我们在2015年7月,给科大所有的老师群发过一次邮件,标题是“用USTC评课社区推广您的课程”,主要目的除了宣传推广以外,是希望老师们能给我们发送他们的课程简介。当时那封邮件的部分内容:

目前我们正打算开发一个新功能,给每一门课加上课程简介的功能。作为一个学生,我特别希望在下学期选课之前,能够了解一门课到底教什么内容,作业和考核的方式是什么样,这是我选课时需要考虑的因素。如果老师您下学期有课的话,可不可以写一份课程简介并发邮件给我们,我们会手动加到网站上。有了课程简介,会有更多学生选择您的课程,学生在上课时也会做好更充分的准备。

关于课程简介的建议
USTC评课社区启发自果壳MOOC学院,MOOC把课程信息、材料、互动都放在网站方便人们自主学习。优秀的课程简介可以具有以下信息(只是作为启发,不需要全都有):

  1. 课程概述(这是一门什么样的课程,有什么样的学习目标)
  2. 课程主页(如果有现成的课程主页的话,没有就不用了)
  3. 教学大纲(课时安排等等)
  4. 教材与参考资料
  5. 授课形式(讲授为主?习题课、讨论课?采用多媒体?如何互动?)
  6. 考核方式(作业、考试所占比例?有无期中考、大作业、答辩演讲?)
  7. 先修要求(面向什么样的学生,有哪些先修课程的要求)
  8. 常见问题解答(如之前课程情况、对学生的期待、是否有助教)
    ….

我查了查我的科大邮箱,发现有超过20位教师回复了这封邮件,大部分老师表示了对这个网站的支持,也有一些老师真的给我们发来了课程简介,我们就加到了网站上。

写点评送书活动

评课社区开发初期,遇到的主要问题就是点评太少。如果一门课程底下点评太少,则不太有参考价值。2015年9月我搞过一次写点评送书的活动,以下是活动详情,是的我甚至设计了 banner 放在网站首页。

活动规则:在USTC评课社区,点评任一门课程,获得至少10个赞,免费赠送一本书!共25本,送完为止!

领取方式:320楼的女生可以到401宿舍挑选,其他同学可以联系张静宁,联系暗号:写点评送书

书籍:主要有数学专业和托福考试方面的书籍,数学类书籍大部分是全新的

书籍捐赠:如果你希望USTC评课社区有更多的点评,也欢迎给我们捐书,所有捐赠书籍都将作为用户写点评的奖品。

联系邮箱:service@icourse.club

印象中这次活动很失败,我没有送出去一本书,被 cuihao 嘲笑“你那些书谁要呀?”。但我觉得不是书本的问题,而是当时就的确很少很少人写点评,更不要说10个赞了。现在翻历史数据,2015年9月新增点评17个,10月新增5个,11月新增2个,12月新增4个,一直到2016年1月份才新增了234个。现在我们通过网站统计数据知道,点评新增是非常有季节性的,一般学期末(7月,1月)新增点评比较多。

2016~2021年

2015年我在评课社区最后一次 commit 是在 2015年9月22日,在那之后,长达5、6年时间我再也没有给评课社区 commit 过代码,一直是 boj 在默默维护着评课社区(表示感谢)。那么2016年以后发生了什么呢?

人员各自的变动

经过大一下学期好几门数学课的毒打,我决定不转到计算机学院了(2022年的我无比后悔这个决定),本着再也不想学数学课的心态,我打算转到科技传播系去。所以我2015年秋季学期在科技传播系上课,但2015年11月我认识了吴明卫教授,在他的影响(洗脑)下我又打算留在物理学院了(关于这部分详情请见我的 转专业系列文章)。所以我从2015年12月开始加入了吴教授的实验室,接受数理基础再教育,至此我彻底放下了网站开发的大业,开始刷机米多维奇。后来我在吴老师实验室呆了3个月,又被Fire了,只好自己硬着头皮继续在物理学院读下去。

提到吴老师,这里还有一个趣事,吴老师向来对学生管的很多很严,当他得知我有这么一个评课社区网站,让科大学生评价老师的课程时,他专门给我打了个电话。在电话里,他建议我把评课社区网站关掉,理由是他觉得学生不知道什么样的课程是好的课程,用他的话来说就是“学生没有资格评价教授们的课程”。当然我没有听他的建议,而是拒绝了他的这一要求。

2015年秋季学期, boj 去北京了,因为他的博士项目是中科大和微软亚洲研究院联合培养项目。印象里,他去了北京之后科研上就变得非常忙,远不像他研究生第一年在合肥的时候,把很多时间花在了和科研不相关的事情上。常震应该是在评课社区发布之后,就没有怎么参与网站开发和维护的事情了。

2016年夏天,我和 boj 分手了,当时分手的唯一一个约定就是他得继续维护评课社区(否则这个网站要下线了)。后来, boj 有了新女友,一度联系我,表示他不能再参与评课社区的开发和维护了,要把网站全都交给我,也是那个时候起 icourse.club 的域名到了我的手里。好在过了几个月, boj 又开始默默的维护网站了。

所以,从2016~2021年,评课社区实际上没有新增很多功能,基本上是 boj 一个人在定期导入课程。每个学期初,他从教务处网站抓课程,再导入到评课社区数据库。偶尔,有用户给我们发邮件,反馈一些网站的 bug, boj 也都很及时的修 bug 回邮件。我和他的沟通仅限于邮件沟通评课社区相关业务。

2022年

时间很快来到了2022年。boj 已经博士毕业入职了华为,我也硕士毕业成为了一名普通的打工人。

新的公关事件

评课社区成立7年以来,我们其实只收到屈指可数的投诉,屏蔽的课程点评也是屈指可数。过去几次投诉事件中,课程教师往往只投诉1条点评,并且那些点评明显是存在问题的,因此我们很快屏蔽了。还有一次,被投诉的点评在我们看来完全没问题,就回复了不会删除,对方也没有继续纠缠下去。

2022年3月我们收到了某位教师要求删除课程点评的邮件,这次投诉涉及了将近10条评论,并且很多评论在我们看起来并不属于明显的人身攻击。该老师先后给我们发了十几封邮件,一开始态度还比较好,后来见我们没有快速回应他的诉求,就开始发送威胁、谩骂的邮件,并且开始通过各种方式联系网站管理员。尽管我们一开始回复了他的邮件,并且告诉他我们都是利用业余时间开发网站,所以需要时间处理他的请求。这次公关事件,让开发团队重新建立起来联系,我们发现2015年撰写的《社区规范》已经无法适应当前网站的情况了。除了讨论如何处理该老师投诉,我们还讨论了该如何完善评课社区的社区规范、增加与修改哪些功能、未来如何应对类似事件。最终我们发布了新的《社区规范》(主要由 cuihao 撰写)和 《投诉点评的流程》(主要由我撰写)。

也是由于这次公关事件,我们意识到之前评课社区的维护过于依赖 boj 一个人。因此,2022年3月 cuihao 开始加入评课社区的开发团队,参与公关事件的处理和网站数据库的备份工作。而我在2021年再次学习了网站开发(主要是后端和数据库),我在开发 PI Review 网站的过程中,重新读了评课社区的很多代码。至此评课社区可以不再依赖 boj 一个人,可以说如果哪天 boj 不能够继续维护评课社区,我和 cuihao 两个人也可以扛起这面大旗,继续把这个网站做下去。

时隔7年开发新功能

2022年这次公关事件给评课社区带来了更多的是积极的影响,一方面让我们开发团队重新建立起了联系,另一方面我们意识到现在的评课社区和2015年已经很不一样了,主要是课程点评的数量大大增加了。因此,很多当年没有考虑到的功能,现在成了刚需,比如一门课程可以有100多条点评,这时候课程点评的排序就非常重要了。

重新审视现在的评课社区后,我们开发了一系列新功能

  • 课程列表页面,可以筛选课程类别、按照课程评分和点评数量排序
  • 课程页面,点评支持多种排序方式、可以按照学期和评分进行筛选,同时展示点评学期和评分的分布
  • 关注页面,分成关注的人的动态和关注的课程的动态
  • 通知系统,修改了通知系统的逻辑,如点评点赞只通知作者本人,并且作者本人可见哪些人点赞
  • 新增了网站站点统计页面,显示课程评分分布、课程点评数量分布、新增点评/用户曲线等数据
  • 新增评课社区排行榜,显示最受欢迎的老师、课程、点评等排行榜
  • 新增保护用户隐私的功能,匿名点评、仅登录学生可见、隐藏个人主页、隐藏点评等(即将上线)
  • 导入培养方案信息(还在开发中)

这些功能,有些是我自己实现的(前后端),有些是我和 boj 一起实现的(我提的需求、实现了前端、他负责后端,和2015年的开发一样),还有一些就完全是 boj 实现的(我只负责产品设计和提修改意见)。很高兴时隔7年,评课社区开发团队原班人马还能继续合作,继续开发这个网站,并且推出这些让我觉得很不错的新功能。

之前和赵老师沟通,感谢赵老师当年没有限制我这个和物理毫不相关的选题,如果没有赵老师当年自由的课堂氛围,也许就没有评课社区的诞生了。赵老师表示,她以为这个网站早就不是我们在维护了,想不到还是原班人马。是啊,其实在我毕业的时候,我们一度考虑过把评课社区交给 USTC LUG 同学 维护,但后来也没有后续,也许是因为 LUG 的同学们对网站开发不感兴趣。但现在我们认为这个网站由我和 boj 继续维护不是坏事,因为如果交给在校生维护,他们可能会面临来自学校、学院、老师的压力,让他们删除点评、甚至网站下线。另一方面我们有技术、有能力,而且有坚定的信念继续把这个网站做下去。

拿我自己来说吧,我2019年从科大物理学院毕业后,来到了美国,入学了 UCSD NanoEngineering 系的博士项目。后来因为各种原因,选择了博士退学,拿了硕士学位毕业,开始找 Data Engineer 和 Software Engineer 相关的工作。过去多年的经历让我意识到,我其实对于网站开发是很感兴趣的,尤其是开发一些自己觉得很有意义的项目。去年,我曾花了3个月,一个人开发了 PI Review 网站(也是边学边做,很像2015年开发评课社区的感觉),那段时间我几乎就是把所有的办公时间都用来开发网站,后来 cuihao 加入,一起做这个网站。(所以,事情就是我和前男友开发了 USTC 评课社区,我又和我现在的老公一起开发维护 PI Review 网站,这两个网站就像我的两个孩子,但我可以很自豪的说 PI Review 目前大部分代码还是我写的。)

而我在科大的几年2016-2019,其实大多数时候都比较自卑,由于科大一切都唯绩点论的氛围,我这个学渣其实过得挺艰难的(比如没有获得任何优秀学生的奖学金、没有加入任何英才班、延毕1年导致比较离群)。很长的时间里,我很怀疑自己,我没有再关注 USTC 评课社区,甚至很多认识我的朋友可能都不知道这个网站是我参与做的。直到最近两年,我才意识到这个网站对我的重要性,对我来说它是我最自豪的项目。它让我觉得,我结合自己的兴趣和能力能够创造有价值的东西,自己可以做出很不错的产品。

不仅如此,我还能感受到自己在这方面的热情。开发这两个网站的时候,我是很快乐的,哪怕由于打工人的身份,我只能用每天下班后的时间干活。哪怕牺牲睡眠、牺牲运动、牺牲做饭的时间。我常常在睡觉前,在洗澡的时候,在开车的时候思考,我能给这两个网站加什么新功能,而我会为自己想到的好主意兴奋很久,并且马不停蹄的去实现它。加上之前高中的时候做的字幕组、MOOC进中学的项目经历,让我意识到我的兴趣就是通过计算机、互联网技术来改变传统的教育行业。于是我把这个当成了我目前的理想、我长远的事业目标(career goal)。我希望可以把评课社区和 PI Review 这两个网站做大,覆盖更多的大学,帮助更多的大学生选择课程、帮助更多的研究生选择导师。这是我的目前最大的理想,而我将为它一直努力下去。

文章目录
  1. 1. 2015年前后
    1. 1.1. 与新生研讨课结缘
    2. 1.2. 网站开发过程
      1. 1.2.1. 开发团队与分工
      2. 1.2.2. 开发过程中遇到的问题
    3. 1.3. 正式发布
      1. 1.3.1. 和学校教务处沟通
      2. 1.3.2. 儿童节当天上线
    4. 1.4. 网站初期的宣传
      1. 1.4.1. 向科大老师群发邮件
      2. 1.4.2. 写点评送书活动
  2. 2. 2016~2021年
    1. 2.1. 人员各自的变动
  3. 3. 2022年
    1. 3.1. 新的公关事件
    2. 3.2. 时隔7年开发新功能