从苏宁电器到卡巴斯基--我当高校教师的这几年

引言

本文转载了学校的网络安全老师撰写的亲身经历,讲述了他从一个营业员转变成一个病毒分析师的故事。本章节讲述的是老师在学校的见闻。

物联网应用

我在X高校接手的第一门课是《物联网应用》,这是一门纯理论的课程,面向的对象是15级电子系的同学,侧重于物联网原理及其应用等诸方面的介绍,在学院的培养计划里面并没有用于实验的课时安排。这就要求我必须多多了解相关的知识,这样才有利于本门课程的开展。

这门课从第1周开始,一直到第17周结束。每周二的5、6节授课,而单周的周四上午1、2节也会有课,这样一学期就是52个课时。X高校每门课的教学起止周基本上每学期都是这样的安排,只有某些学段课才会在期中就结束。然后第18、19周则是考试周。在X高校的三年时间里面,我也仅仅经历过一次学段课的班级,其余都是1-17周授课的。而我也一般是1-16周进行理论与实训的课程内容,第17周则是给大家自由提问的复习周。这样的安排倒也简单,使得我每学期可以采用同样的模式。

有件比较巧合的事情是,这个班的一位同学,在正式开学的前几天,看到了课程表,发现是我来讲授这门课的,于是找到了我的QQ和微信,把我加为了好友,一聊天才知道,他竟然知道我写的第一部小说,也看过,觉得我挺厉害的,让我突然有了一种被认可的感觉。而更加巧合的是,三年以后,我来到了一所新的高校,在我工作的第二个学期伊始,我们学院引进了一批博士老师,这位同学竟然也以博士的身份顺利加入了我们这个大家庭,成为了我的同事。不过由于他还没有毕业,只是刚刚上博一,因此还不是正式编制的教师,但我觉得这也仅仅是时间问题而已。他也确实非常地厉害,主攻人工智能的图像处理领域,未来有时间的话,真该多多交流一下。而我也渐渐有了读博的打算,想提升一下自己的学历,然后真实地做一些前沿技术的研究。

来学校的第一天

再把时间拨回到三年前,尽管我是周二才开始上课,但是新学期是从周一就开始了。开学前,学院负责我们人事工作的老师让我周一早上就来校报道,找我新部门的一位负责老师。根据本系列故事的字母表排序,我这里称其为Y老师吧,由于以后Y老师就是我的直属上司,因此Y老师会在本系列的故事中多次出现。

周一的早上我按时到校,但是我并不知道自己应该去哪里,于是就在教学楼一楼的中心露天广场找了个长凳坐下,打开教务管理系统,查了一下Y老师的上课地点,然后趁第一节课的下课时间,赶紧到教室去找Y老师。说明了来意,Y老师就把我带到了同一个教学楼的办公室里面,这间办公室离门口最近的一个工位没有人,于是就让我坐在了这里。倒也没特别吩咐我做些什么,于是Y老师就匆匆忙忙地赶回去上课了。

这间办公室还是挺大的,很有特点。因为整间办公室右手边靠墙的区域大概有五个工位,是我们这间办公室老师的位置,而余下的大概四分之三的空间,则是一张张的大桌子,大约有五、六张的样子,然后学生们带着自己的笔记本电脑,或者是用学校的电脑,围着桌子坐一圈进行开发。也就是说,我们这间办公室是学生和老师混合式的办公室,这样的设置也是便于老师和学生的交流,非常有利于项目的开发。

我当时带着自己的笔记本,坐在了自己的位置上,主要是准备一下第一周的7节课。我觉得第一周的课程还好一些,主要是做一些本学期的课程介绍,但是越到后面,课程任务肯定就是越繁重的,因为涉及到新知识的讲解以及作业批改等,因此我需要提前做好筹划,免得到时候措手不及。

前端开发

X高校的每次课都是两节连上的,由于Y老师这学期需要教软件专业的1班和2班,而受限于硬件设施,因此这两个班的同一门课程是分开上的。1、2节课,是1班先上,3、4节课,则是2班上,相同的内容Y老师需要讲两遍。上午的课程结束之后,Y老师回来,给了我一些资料,说是以后让我学习研究一下Web前端方面的知识,我以后在授课之余,也需要进行前端开发。

说实话,当时我完全不知道什么是前端,感觉无比的陌生。如果说是让我做C或者Python开发倒也还好,因为以前的学习和工作中多多少少还是使用过一些的,因此上手还是蛮快的,但是前端则完全触碰到了我的知识盲区,我也对自己是否真的能够学好这一崭新的技术有所怀疑。毕竟现在网上都流传说35岁就是程序员的一道坎了,这个年龄如果不能晋升为管理层,那么确实就需要考虑一下自己的未来了。毕竟作为一家软件企业,每年都会补充新鲜血液,新人的薪水肯定是比老员工低的,而且同样的工作,新人肯定也是能完成的,于是就会使得大龄程序员的地位岌岌可危了。从另一个方面来讲,35岁肯定已经过了一个人的黄金学习期,专注力以及记忆力肯定不如20出头的人的。刚加入X高校时,我已经32岁了,尽管距离那道坎还有3年,但心理和身体状态也都和35岁差不多了,也确实是会怀疑自己是否能够把新知识学明白,一开始就埋下了不自信的种子。

Y老师给了我一些学习资料,说是每一批学生开发团队的成员都是通过学这些上手的,只要完成其中的四个任务,那么就可以上手开发了。既来之,则安之吧,于是我当时还专门买了两本前端开发的书籍,打算好好研究一下了。但是至于自己什么时候可以真的上手,我的内心还是充满着未知的。

而我后来也算是比较争气,不敢说自己的水平有多高吧,至少后来还是承担了一定量的开发任务的,但这些也都是后话了,我在未来的故事中会给大家分享。我也总会把这段经历分享给我的学生们,希望大家能从我身上看到程序员的精神,活到老学到老,不断地对技术抱有好奇心,不断地督促自己去学习,毕竟我们这一行就是这样的。以前端为例,我一开始除了要掌握基础的Html5+CSS的知识以外,还自学了JavaScript。后来我们项目中的很多代码又使用了JQuery进行重写,我又学了点JQuery的知识。再后来,Vue.js横空出世,我们的项目又需要用Vue改写。尽管到了Vue的时候,我更多地是指导学生进行开发,自己基本已经退居开发的二线了,但这也说明我们如果想保持住自身的竞争力,那么就需要不断地吸收学习最新的知识,因为我们的项目是需要这些的,需要新的技术新的方法来进行完善。我也觉得我的学生们,确实会对我的这段经历有所感悟。

着手备第一节课

当初刚刚签约的时候,负责人事的老师就专门提醒我,一定要在第一节课和学生把本学期的要求等内容说明白,特别是考核方式,这个是学生特别在意的。而我这学期的两门课,我也想有所突破和创新,为此我专门做了PPT,预计分别要花一节课的时间来为大家进行全学期的课程说明。

话说我当时做的课程简介PPT,没想到也是延续使用了8个学期,因为直到今天,我这学期的课程依旧在使用这份PPT进行介绍。

这份PPT一开始的环节是自我介绍部分,我从本科时代开始讲起,说自己毕业于长春理工大学的市场营销专业,后来在苏宁卖手机,相信讲到这里就会让大家顿时对我很感兴趣,想知道我这样的一个出身,后来是怎样走上计算机的道路的,特别是如何走进大学的课堂的。我和大家说,在苏宁卖手机的一年时间里面,我发现自己还是对计算机比较感兴趣,因为我发现苹果商城丰富的应用,绝对是未来的发展趋势,于是我就毅然决然地辞职考研,到了北工大,再后来又是机缘巧合接触到了计算机安全,加入了卡巴斯基实验室,最后回到珠海,来到了X高校。从实际的效果来看,我至今已经教了7届的学生(15级-21级),大家都很喜欢听,所以我的自我介绍部分就是我每门新课雷打不动的内容了。

接下来我还会举个例子,也就是我和《恶意代码分析实战》这本书的故事。我说当我研一结束后的那个暑假,我回到了珠海,但是那个时候的我也是非常的迷茫,尽管已经掌握了一些逆向的知识,但并不知道具体哪个职位适合我。于是就在某一天,一个阴雨绵绵的下午,闲暇无事,去了拱北地下的文华书城,并来到了规模日渐缩减的计算机图书专区。在寻觅有哪些有意思的书的时候,突然眼角的余光发现书柜的右下角有一本红色的非常扎眼的书,好奇心驱使我蹲下来,把那本书拿了出来。看到封面是一个待解剖的小外星人,我的兴趣就更浓了。接下来我随手翻了翻,而也正是我的这随手一翻,就彻底改变了我未来的人生走向。因为我发现这本书的内容真的是非常地充实,写得非常详细,而且配有丰富的实验例子,我一看就爱不释手,我还从来没有过对一本书产生如此浓厚兴趣的情况。但看了看价格,一百多对于当时还没有收入的我来说,确实还是有点困难的,特别是当时的书店基本是不打折的,顶多在活动期间会打个九折,毕竟书店的运营成本也是很高,大家看纸质书的热情也是在逐年减退,因此现在能够依旧支撑下来的书店真的是非常难得的了。时至今日,我时不时依旧会去逛逛书店,就是为了那一份情怀,也会在书店买几本感兴趣的纸质书,为实体书店贡献自己微薄的力量。而·几年以后,由于拱北整体改造,位于地下的文化书城也就搬走了,本来我的新房子附近也就一家文化书城,但由于合约没有谈妥,也搬走了,这就突然让我感受到了空虚,但更多的是一种无奈。毕竟书店和书籍,对于我的人生,确实是有着非常重要的地位的。

回到在文华书城的那天,尽管这本书是我看过的最贵的计算机图书了,但我实在是喜欢,于是我还是咬咬牙,把它给买下来了。回到家之后,我认认真真地把书上的习题做了一遍,这也是我唯一的一本,学得如此认真的计算机图书,至此,我在病毒分析领域才算是真正走上了正轨。后来当我上班以后,手头宽裕了一些,专门通过海外淘的形式,花了五、六百块钱,买了一本英文原版,作为永久珍藏。至今,这两本书依旧在我的书架上,因为它俩见证了我的成长,见证了我的岁月。而回头想想,假如我当时没有去书店,没有看到这本书,也就没有买它的话,那么我之后的人生轨迹确实是不可知的了,也许,此刻站在讲台上的就不是我,而是另外一位老师了。

我对每一届的学生都会讲这个故事,因为我觉得大家未来的人生中,也许正是某一本书,某一节课或者某一个人,使得人生出现了重大的转机,于是我也就希望大家,做生活中的有心人,每一件小事都可以成为蝴蝶效应的开端,从而改变你自己乃至更多人的人生。

接下来我就会开始讲讲本学期的考核方式了,这里就不再赘述。每年我都会把我的这第一节课进行改良,使其越来越完善,但上述我所说的这两件事,则是永恒不变的,我也会对我未来的学生继续讲述。

平时作业X大作业X期末考试

正如我之前所提到过的负责人事的老师要求我在第一节课就需要把课程的考核方式告诉大家让同学们心中有数免得期末出现争议的情况。一开始就约法三章也算是让大家对这门课、对这学期也能有个规划。那么说到成绩的考核我在X高校的三年时间里面对于必修课我都是采取“平时成绩大作业期末考试”这样的形式来进行分数的评定的三项分别占总成绩的30%、10%和60%。而如果是选修课则会降低一些要求把“大作业”取消变成“平时成绩期末考试”这样的形式占比分别为40%和60%。

平时成绩主要由我给大家布置的作业构成需要大家提交实验报告或者小论文然后由我来进行打分。以《计算机网络安全》这门课为例由于实践性比较强因此我基本上每周都会布置作业的给同学们一周的时间完成并提交报告而《物联网应用》这门课并没有安排实践的内容因此我在全学期的不同时段给大家布置了三个题目同学们根据题目完成三篇小论文就好。

大作业占据10%的成绩那么也就说明是否提交大作业也就决定了这个同学期末成绩是否在90以上。因此可以认为大作业就是一道关卡因为按照要求90分以上的同学数量只能占全班同学的15%根据实际的实践效果来看大作业确实是区分90分以上和以下同学的一个很好的手段。我在第一个学期对《计算机网络安全》这门课大作业的要求是同学们可以自行组队从安全领域的前沿选题中任选题目然后上台为大家做个汇报。我会根据汇报的内容、技术难度等方面进行打分也会针对于汇报内容进行提问有点类似于毕业汇报的形式。而那学期《物联网应用》的大作业也是这样安排的。

这两门课的期末考试也都是采取了笔试的形式。其实我也知道大家的情况我在期末考试内容的设置以及难度等方面也不会难为同学们。基本上我也都会为大家划定范围其实这些考试内容都是平时讲过也是重点强调过的。这一原则也是一直延续了下去但每次的效果却都会有所差别。比如《物联网应用》的期末考试我提前给了大家题库其中包含有两三百道题。结果那届同学的背题热情空前高涨绝大部分同学不到半小时就交卷了这其实也是不允许的因为这就说明题目的难度或者数量是不恰当的。但也就是这一届同学是这样的情况后来我又讲授了《计算机网络》这门课也是有题库但结果几个班的同学就不太复习直接导致我后来教的所有网络课的班级平均分基本都是六十几分差点就不及格了。过低的平均分也是不行的。因此这几年我思考着如何平衡这些问题也是很头疼的一件事。

难以杜绝的抄作业现象

我对于同学们提交的报告或者论文的要求还是挺严格的最重要的一点就是必须原创不可以抄袭如果让我发现雷同那么抄袭和被抄袭全都是零分。对于这一点我发现在我三年的本科执教里面每一届每一个班都会有抄作业的情况。大家可能会觉得我每周要看那么多的作业真的可以很轻易地找到谁抄了谁的吗?其实这个并不难我一般会从一些蛛丝马迹的线索中进行定位。当然在我看来抄作业的技术也是分为三六九等的下面我会从初、中、高三个等级进行划分。

初级

由于我们现在的作业已经不需要手写了因此作为初级的抄作业可以认为就是直接把别人的word文档交上来。由于这样的抄袭方式在排版、格式、截图方面是完全一致的而我基本上改完一个班的作业也就在一两个小时内所以我肯定会对之前看过的作业有印象的。最离谱的一次某个同学直接把别人的word文档连学号和名字都不改直接原封不动地交给我于是我就直接判了零分。第二次作业他似乎发现了第一次的问题依旧是把别人的作业拿过来这次这个同学修改了学号和名字但由于内容和另一个同学完全一致所以又被我发现又被判了零分。但这次我有点忍不了了直接在第三次课堂上说了这件事当然我并没有透露名字我说在我们班抄作业现象还是存在的有的同学连名字都不改直接把别人的作业交上来了我打了零分第二次改了名字但又被我发现了我又打了零分。其实我说这些的本意是想让大家引以为戒不要抄作业要独立完成结果我这么说了之后反而启发了一些同学第三次作业史无前例地出现了好几例抄袭的情况当然这些抄袭也都是改了名字的。这就让我特别无奈我也都打了零分。

为了让大家心服口服我在打零分的时候会在打分系统中备注上你和哪个同学的作业出现了雷同的情况所以我要打零分如果对这个结果有异议可以当面和我说。当然了尽管我说抄袭被抄袭都是零分但是我一般并不会给被抄袭的同学打零分因为我知道很多时候他们也有难处比如有的同学就是不想做也不会做开口向自己的好哥们要作业你说难道还能不给吗?也就只能千叮咛万嘱咐一定不要全抄万一被我发现就不好了。可现实情况就是全抄很容易就被我发现了。特别是有一次被抄袭的同学也不知道自己为什么会被抄和我反映了这件事后来觉得应该是自己提交作业的平台的账号密码被那个抄作业的同学知道了于是每次提交的作业就直接被那个同学下载下来抄了。没办法我就只能让那个同学修改密码了。

中级

来到了中级就说明抄作业的同学会进行有选择性地抄袭了与初级相比就不会那么容易地被我发现。这些同学一般只会抄其中的一部分但由于抄袭部分的整体排版格式依旧很相似因此还是会被我轻易发现。这里也会遇到不服从判决的同学说仅仅是把别人的作业拿过来看一下怕自己的分析内容有所遗漏因此才参考的并没有抄袭。总之还会有五花八门的理由但抄了就是抄了就是零分。

其实我之所以这么看重抄作业的问题还是想在诚信方面对大家有所考核。全学期坚持独立完成的同学理应得到高分全学期多次抄袭的同学就应该零分。也就是说在我的课堂我既要考察计算机知识更要看大家的品德因为这是大家以后走上社会安身立命的根本。我也不知道经过我这样的严抓是否真的会改变他们但我如果不抓我肯定是会内疚的。

还有一种情况我觉得也属于中级就是那种程序语言类的课程平时作业我只要求大家提交代码也就是把书上的例题代码敲一遍交给我就可以了。每周大家会有专门的上机时间来做这件事因此对每个同学来说并不存在没有时间敲代码的情况每周在课堂上肯定是能够完成的。但即便如此依旧有直接把别的同学的代码复制过来交给我的情况。其实找哪几个同学的代码雷同是一件比较困难的事情但我这里依旧把它归类到中级是因为这里面还是会有一些判断技巧的。

比如代码中某个同学打错了一个单词而另一个同学也打错了这个单词那么八九不离十肯定就是抄袭的了。或者有的同学喜欢拼音不喜欢英语因此在函数和变量的命名方面就全都用拼音而另一个同学在相同的函数和变量命名方面也用了这个拼音那自然也是抄的了。还有就是我发现一个班级里面会有好几种代码的缩进风格有的完全不缩进有的只缩进一格有的缩进很多那么这也是我判定的依据。总之通过这些细节我在编程语言类的课程里面抓了很多人毕竟这是最容易抄袭的一门课了。可惜的是尽管我这么抓但全学期依旧有很多同学从头抄到尾属实让我也不由得佩服这样的同学了。

高级

在积累了整整四个学期的抓抄作业的经验之后我本以为自己的技术已经炉火纯青已经练就火眼金睛而且我心里面也会有预感第五个学习的教学肯定也会出现抄作业的情况。但当时间真的来到了第五个学期我却惊讶地发现有一个班还真的就没有抄作业的现象。其实我觉得这是好事因为我的本意也并不是为难大家可是我依旧没有放松每次作业依旧采用“零信任”的心态去批改对待。直到这个班的第四次作业才让我发现一丝端倪我感到自己遇到了高手所以我将其归类到高级这部分。

在批改第四次作业的时候我发现有个同学自己上网找了一些背景知识写在了实验报告里面。其实能够自己去找一些资料写在报告里这件事我是非常赞同的说明这个同学非常勤奋好学一般这种情况我都会给高分。但奇怪的是这个同学找的这些资料和我们这次的实验任务是没有任何关联的期初我也没有多想就是觉得也许这个同学理解不到位也许有必要在课堂上再和大家强调一下这些基础知识。然后我就继续改下一位同学的报告了。但是改着改着我发现还有一个同学在报告里面写了同样的知识这就不由得激起了我的怀疑。也许在座的各位看官会觉得我想多了同学们写报告想到一块儿去了选用了同样的案例、背景知识似乎是一件正常的事情。但是根据我这么多年抓抄作业的经验不同的同学就算仅仅是记录下楼去食堂吃饭这样的一件日常小事一百个同学肯定也会有一百种写法出现雷同情况的概率肯定是微乎其微的(除非交的是白卷),更何况错都错一样呢?

基于这点我把刚才看到的另一位同学的作业找了出来认真对比了一下这两份的内容我惊讶地发现这两份作业的内容可以说是完全一样的。而我之所以没能及早发觉是因为这两份作业的排版有着极大的不同。比如一份用的是五号字体一份是小四号字体,一份全文黑体一份全文宋体,一份1.5倍行间距一份1倍行间距,一份每一章节的标题就是普通字体一份采用了黑体加粗还用黄底来突出显示,一份对于重点内容的表述会加下划线但另一份则是采用不同颜色进行重点标记……甚至有些章节的编排顺序和一些语序都有所修改但从内容上来看两份作业就是完全一样的。也就是说抄作业的同学为了不让我看出来还是花了一些心思的这样一来两份作业如果仅仅是从第一眼看上去外在的表现形式是完全不一样的。发现了这一点真的让我大为震撼如果不是由于一个内容上的错误我完全不可能发现这件事。

既然发现了抄袭的情况那么既然是要判零分的。但是第六感告诉我这两个同学应该并不是只有这次才是这样的很可能前几次也是这样。于是我就把这两个同学前几次的作业也都找出来了一对比情况果然和第四次是完全一样的难怪我最初没有发现竟然采用了这么隐蔽的手段。证据确凿我把抄作业的那个同学这几次的作业全都判了零分。也就是从这次开始我除了会更加仔细地比对大家的作业以外我还会重新审查这些同学之前的作业完成情况如果也是抄袭那么同样直接判定为零分了。

因此我觉得每次批改作业真的是斗智斗勇的过程。

伯乐与千里马

作为唐代知名的文学家、哲学家、思想家韩愈所创作的《马说》有这样一段话让我感触很深——

世有伯乐然后有千里马。千里马常有而伯乐不常有。故虽有名马祗辱于奴隶人之手骈死于槽枥之间不以千里称也。

我自认为也是经历了不少的挫折与坎坷这点大家从我的故事中也可以看出。回首过往自己每迈过一道坎既有自己坚忍不拔的努力因素在里面也有机缘巧合之下的贵人相助。我不敢说自己就是一匹千里马但在我成长的路径中确实每当遇到极大的困惑或险阻似乎总会有伯乐及时出现挽狂澜于既倒扶大厦之将倾。

比如就在我刚上初一的时候班主任在第一节课就宣布了正班长的人选但还留下了副班长的空缺。于是我就鼓起了勇气课下和班主任说我想当副班长。要知道这可是我鼓起了极大的勇气才这么说的因为在读小学的六年时光里面我从来没有主动举手发过言都是被动地被老师叫起来才回答的问题。而且每次站起来也都是很不好意思很不情愿。因此我其实也是为了想改变这样的一种内向的性格才下定决心要当班长的。没想到班主任竟然很爽快地答应了。也正是班主任的认可尽管初中三年我这个班长当得并不完美但于我个人来讲我确实是得到了极大的锻炼机会。正是凭借着一次一次地主持班会联欢会上表演相声每周的升旗仪式当护旗手……让我的自信心不断地建立并夯实直接为我日后的大学乃至今天的性格奠定了重要的基础。回想起来假如当时我自己没有鼓起勇气毛遂自荐假如我的初中班主任没有答应我的请求那么今天的一切一切尚未可知很可能我根本就没有勇气站上讲台为同学们传道受业解惑。

随着时间的推移又来到了我研究生即将毕业的时候。当时尽管也在四处投递简历、面试但无奈求职依旧屡屡受挫。好在 Rocky 在机缘巧合之下于看雪发现了我的简历联系到了我一开始就对我无比的信任相信我肯定能够胜任这份工作让我建立了自信之后便一直兢兢业业发光发热也可以说是在报答Rocky对我的赏识。而能够入职这样优秀的企业也是极大地拓宽了我的眼界并且对我之后的一系列工作产生了连锁反应因为正是这样的企业经历才让我丰富了自己的课程内容同时还受到了之后工作单位的青睐。否则如果仅仅是个硕士学历而没有业界经验相信我之后的求职之路还会再多几分坎坷的。

回到了珠海又来到了艰辛的求职状态出现了半年的职场空窗期。幸好X高校正在招聘老师于是我便投递了简历。事实上在整个面试的环节老师们是并不看好我的就是因为我本科学的是市场营销并不是计算机出身更不是理工出身这一点就打了很大的折扣。加上我的学历还是硕士在当今高校学历至上的年代硕士基本没可能去本科任教的现在都是博士起步了(高职也有这一趋势),当然也可以“曲线救国”从实验员开始一点一点提高学历与职称成为正式的老师。好在院长当时力排众议坚信我可以在学院发挥自己的能力于是就将我录取。可以说我在X高校的三年也是一直兢兢业业就是想报答院长的知遇之恩。毕竟当时能够入职X高校对我之后的一系列发展确实是起到了至关重要的作用三年本科院校的积累可以让我更好更快地融入现在新的工作单位也是我非常宝贵的财富。

半路接手 C

在X高校任教的第一个月一切可以说是非常地平稳每周的《物联网应用》和《计算机网络安全》这两门课也在我的能力范围之内并没有出现不胜任的情况因此每周的授课我也都是自信满满工作相对来说并不繁复。

就在我执教第一个月的月底主管教学的副院长找到我说之前讲授 C++ 的老师由于个人原因离职了问我是否可以马上接班。我听了之后有些诧异怎么才一个月就不教了呢了解到之前这位老师其实也是从兄弟院校找来的兼课教师也许兄弟院校突然工作繁忙使得这位老师分身乏术不得不放弃这里的教学工作吧。正值学院用人之际我觉得自己不应推脱而且我也有 C++ 的基础毕竟之前写程序用的基本上也都是 C++,于是就毫不犹豫地答应下来了。但是也是由于时间过于紧迫没几天就要上课了我就赶紧买来了教材和习题册找到了配套 PPT,开启了备课工作。

这门课的授课对象是软件专业大三第二学期的同学我感觉这个时候才学 C++ 确实是有些晚了因为按道理这个阶段的同学应当只学习专业课的类似于C++这么基础的课程是应当放到大一学习的。软件专业当时一共有两个班分别是94和77人我觉得人数还真是蛮多的。上课时由于没办法安排这么大的教室因此两个班是分开上的。每个班每周是2节理论2节实验2个班的理论课时间是连起来的也就是1班在5、6节上然后紧接着就是2班在7、8节上对于我来说也就相当于是连上4节课。这对我的体力绝对是很大的考验。因为理论课不同于实验课就是要讲授的。我记得很清楚有一次是在第7节课上我讲着讲着突然感觉体力透支有点失去意识身体已经往前倾了幸好反应够快马上用手支撑了一下讲台定了定神又继续讲课了。事后想想都有些后怕但那也应该是我从教几年以来唯一的一次“危险”情况了。

理论课部分只能依据之前那位老师的思路讲解没有离开指定教材这就几乎没有给我自主发挥的空间了。而实验课部分也是受限于机房大小两个班分成了三批同学在机房实验因此实验课的时候对我自己来说是从第1节课到第6节课都需要坚守在机房。而同学们无非是把书上的例题习题敲一遍就行也是延续着之前那位老师的方法。毕竟是半路接手我已经没办法贯彻自己的教育方法了。不过也是为了丰富课程内容我也是找了一些算法题放在每周的实验作业里面。除此之外我还改革了期末考核内容特意拿出总评 10% 的分数当做大作业要求大家用C++写一个程序让用户来决定 Windows 任务管理器的 CPU 占用率。比如可以让 CPU 的占用率稳定在 50%呈一条直线的情况或者占用率状态是一条正弦曲线等。其实这道大作业题目的来源是《编程之美——微软技术面试心得》中的第一个案例我在布置这个大作业的时候也说了来源意思是大家可以找这本书或者上网找一些参考否则如果是纯粹自己去想的话确实是有些复杂。我说大作业并不是需要每个同学都去完成只是为了区分大家的程度不能人人都 90 分以上。提交时需要把分析报告、源代码以及录屏演示提交给我。

其实我要求提交这三样东西也是受了研究生时期一门课作业的启发那门课也是让我们提交这几样内容我觉得是一个好的方法可以较全面地考察学生的综合能力。而从最后的结果上来看一共有 29 位同学提交了大作业占全班总人数的 17%那么其余同学的期末总评也就是 90 分以下了也是比较符合学院对于分数把控的要求。尽管交大作业的同学不少但是我真正满意的只有一位同学这个同学自己研究了一下界面设计为这款工具制作了一个不错的界面出来可由用户自定义波形的显示效果:

这个作品在 29 个同学中脱颖而出给我眼前一亮的感觉于是我就毫不犹豫地妥妥地给了这位同学满分。而这位同学后来也是继续读研深造研究生毕业后拿到了心仪的 offer,也看出在计算机领域确实是一分耕耘一分收获。

除了大作业平时成绩我基本都是依据同学们每周的实验情况打分。由于之前那位老师每周只要求大家提交实验源代码于是我也就延续了这一要求。但也正如我之前所讲的那样不少同学会直接复制别人的代码即便如此也都被我发现了。我对于抄袭的同学会直接判零分其中不少同学会给我发信息道歉说以后不会这样了保证独立完成也是体现了良好的态度。另外学院每年会举办IT节其中会有 ACM 比赛而这项比赛的成绩也会纳入到同学们的期中成绩里面。其实这项比赛对于大家编程思想编程能力的提高还是非常有帮助的因此我觉得我们学院在一些活动的编排上确确实实是依据行业所需为了让大家有更多的锻炼机会而设置的非常科学。

C++ 这门课的期末考试采用的是纯笔试的形式题目都来自书本和习题册。有同学就复习得很好卷面书写非常美观我找不出一点问题。卷面90分以上的同学还是非常多的但也有基本交白卷的这样总评就肯定不及格了。我记得很清楚其中一个不及格的在第二学期刚开学的时候这个同学的妈妈还来找我了知道快要补考了就来和我聊聊说她自己是80年代学计算机的大学生她那个年代觉得学计算机还是挺简单的但不知道怎么了到了孩子这一代学计算机就这么吃力她孩子说期末考试的题目从来没见过所以就没及格。我心想如果这个同学是没看过书而且平时实验也不做的话那确实是没见过这些考试题目的我当时为了降低要求书上的题目是直接拿过来考的没有改动一个文字。可即便如此现在似乎又要把锅推到我身上了。我也没有多说什么后来这个同学也确实是进行了不错的复习补考顺利通过了不像期末考时候直接交的白卷相信这个同学的家长也能松一口气了。

其实讲授 C++ 这门课除了锻炼了我的体力同时也让我自己复习了一遍 C++ 以外还使我的收入获得了不小的增长。我曾经介绍过我在卡巴的待遇税前 15K,税后每月实际到手 11K 多一些后来涨了工资也就勉强 12K。可是自从我接了 C++这门课每周多了 10 个课时我的到手工资就直接飙升到了14K,直接高于卡巴的待遇了。

计算机网络安全

之前也提到过,我来到X高校任教之后,被安排的第一门课是《计算机网络安全》,估计也是由于院长知道我有这方面的底子,才点名让我上这门课的。说来也巧,这门课在我刚来的时候,是大三第二学期安全方向同学的专业课,于是就安排给我上了。但是后来有所调整,这门课被改到了大三的第一学期。因此很多时候我也是在感叹,假如我稍微来早点,或者来晚点,那么这门课也许就不是我教了,毕竟隔了一个学期才上这门课,也许领导就忘记我是安全出身,就照旧给过往的老师上了。这里我也把我任教的第一个学期的课表贴出来:

《计算机网络安全》这门课每周一共4个学时,分别安排在周三和周四下午,一共是17周的课,这样一共就是68个课时。这里有一点不合理,那就是一般来说,第一节课应该是讲讲这门课程的全学期安排等内容,也就是完全理论化的东西,可是这里的第一节课却给我安排在实验室上实验课,这就很是难为我了,第一节课大家还啥都不会呢,怎么做实验呢?没办法,尽管是在实验室上的这门课,但我还是为同学们讲了课程内容、课程安排,考核标准等内容,而第二次课,我才正式讲解第一章节的内容,第二周才为大家布置第一个实验。在X高校,教室资源还是比较紧张的,讲解理论的教室,只能用来讲理论,它就是那种传统的教室形式,类似于我们中学的教室。而只有上实验课,才会安排机房。但是尽管机房有电脑,但我也会要求同学们尽量自带电脑做实验并撰写实验报告,因为经过一个学期的观察,我发现学校的电脑偶尔会出现蓝屏死机的情况,就有同学写着写着,所有内容全都没有了。也是吸取了这样的经验教训,我至今依然要求大家上课最好带着自己的笔记本电脑,我认为学计算机的同学,就应该随身携带笔记本电脑的,这样一来,有什么好的想法就可以打开电脑马上记录并实现,这样才是一个良好的学习与研究的状态。

从之前讲授这门课程的老师手上接过《计算机网络安全》的时候,那位老师也是给了我很多的资料,这门课之前使用的教材是由诸葛建伟博士编写的《网络攻防技术与实践》2011年6月第1版:

买回来以后,我翻了翻这本书,觉得写得还是比较充实的,但最大的问题是,我们要求不能使用出版了5年以上的书作为教科书,因此我当时就没有要求学生们购买,而是以自编讲义的形式为同学们提供我所收集来的学习资料,毕竟我也是积累了几年的线上授课经验,像是逆向、病毒分析、二进制漏洞分析、网络流量分析等内容,我还是有着不少的积累的,而这些内容也成为了我这学期课程的重点,所以在备课方面,并没有什么难的。但客观来讲,尽管我没有使用这本书,但是其中的一些内容对我还是产生了不少启发的效果的,对于我未来课程的改进,起到了重要的作用,这些我都会在未来的故事中为大家分享。感觉比较可惜的是,十几年过去了,诸葛建伟博士这些年并没有撰写新版的教材,而当今市面上可以与这本书相媲美,可以作为安全类教材的书籍也基本处于空白的情况,我也希望自己以后能出版几本安全类的书籍,来填补上这个空白。

除了教材以外,学院之前还购买过一个实验系统,里面有很多的安全类实验供同学们完成,所以之前的要求,都是让大家每周从这个系统里面完成实验作为作业的。我当时也看了一下这个实验库,尽管里面的内容非常丰富,但是我觉得整体偏难,不太适合作为入门来进行讲解实验,所以在实验的部分,我也是把自己讲过的过往的课程实验拿出来,比如简单的Crackme分析,简单的病毒分析,登录数据包分析,简单的缓冲区溢出漏洞分析等,我相信这些实验是可以让同学们快速入门的,之后再依据自己的喜好选择一个或者多个方向深入研究就可以了。

第一次评教

对于每一个高校教师来说,不论你是属于全职在本校任职的教师还是外聘教师,在每个学期的期末考试之前,学校教务处都会举行评教活动,由学生登录教务系统的网站,对本学期所有的授课教师进行评价,以作为教师工作情况的考核依据。我觉得这是一项很好的举措,一位老师的授课水平如何,同学们是最有发言权的,大家的眼睛都是雪亮的,好就是好,不好就是不好。而把同学们的评教时间放在期末考试之前,可以在一定程度上有效地避免恶意评分情况的出现,也就是说,可能有些同学会由于期末挂科而迁怒于任课教师,从而出现打低分的情况,因此,这项评教主要是针对于十几周的授课,而不针对于期末考试的情况。但即便如此,我在后来依然遭到了一次恶意评教的情况,我个人认为,那次主要是由于教务处的工作失误造成的,我会在未来为大家详细说说。

话说在我第一部小说的故事中,作为学生的我,尽管每学期也有评教的任务,但是我并未提及这件事,主要还是因为这件事有点小,似乎没啥值得展开讲的,毕竟当时的自己还属于评教的主体地位。那个时候,我确实深刻地体会到了老师们的授课水平参差不齐,比如有的专业课老师,每次上课就是把教科书从头背到尾。当时也是由于条件比较落后,还没有大规模使用PPT,所以尽管课程内容很是无聊,但我也蛮佩服能把教科书背下来的这种能力的。但有些老师就不一样了,尽管也没有PPT,但毕竟有企业的实战经验,总能够在课程中穿插着讲解一些有趣的故事,我们都很爱听,教室也是座无虚席,甚至还有本不需要上这门课的其它专业的同学过来旁听,那么这样的老师的评教分数肯定就会很高了,同学们也是打心底里喜欢。但不管是什么样的老师,我基本上是不会为难他们的,不会因为教得不好而拼命打低分。当时的我,完全没想过自己未来会成为一名高校教师,十年之后,评教的客体竟然变成了我。

我在X高校任教的第一个学期一共上了三门课——计算机网络安全、物联网应用、C++程序设计。其实在教务处公布评分之前 ,我还是非常他忐忑的,毕竟是第一次任教,完全不知道自己的教学风格是否能够被同学们所接受。在打开教务系统之前,我就和还在念大学查看自己期末考试成绩的时候,是一样的心情。按照顺序,评教分数分别是4.77、4.756和4.657,所有课程的加权综合评分为4.728分。其中评教分数最高的,正是我最拿手的《计算机网络安全》,评分细则如下:

首先由分数的分布来看,我觉得同学们还是比较客观的,就是不太理解第3、6、7、10这4项,为啥有同学给我打了最低分,第12项最低分可以理解,毕竟我没有选用教材,而是完全依靠我自己收集的材料进行授课的,如果有同学就是喜欢课本而不喜欢这些零零散散的材料而给我打了低分,那我倒也理解。接下来,也是我最喜欢了解的,就是同学们对我这门课程的评语。感觉大家对于我这样的一种轻松的授课模式,并且时不时穿插讲一些我的个人经历、企业方面的知识这样的内容,还是比较认可的。也是我未来继续改进完善的方向。但是第2点我就有点不太理解,这位同学觉得我在知识方面讲解的有点少,但我觉得我的整学期课程也是基本上把安全领域的重要方向的内容都讲解了一遍,虽然比较粗浅,但是这门课的定位就是这样的,同学们需要在我讲解的内容中,选择自己喜欢的方向并进行深入研究就好。不过从总体上来看,同学们还是非常满意我的授课的,我自我感觉也是得到了极大的认可。

下面是《物联网应用》这门课程的评教情况:

可以看到,这门课程尽管我也是第一次接触,但是同学们依然很是认可我的风格,评分为E的项甚至还比《计算机网络安全》还少,只有1位同学觉得我的语言表达不够清晰、准确、生动。但我觉得这正是我的强项,不知为啥这个同学对我自认为的强项会有这样的看法。在评语里面,只有一位同学发表了意见,也是非常认可我的授课风格。看了这两门课程的同学评语,我就有种感觉,大家似乎对过往不少的课程是存在着不满的,而不满的原因就在于课程乏味无聊,不像我的课程这样自由,我觉得这也是当今大学课程的一个通病,我希望自己的课程能够避免出现这些问题,继续让大家喜欢,从而培养出更多优秀的工程师。

下面是 《C++程序设计》的情况:

这门课程由于是我半路接手的,所以也会加上对上一位老师的评价,这门课程给我评价为E的就特别多了,尽管总分还可以,但让我有种 “毁誉参半”的感觉,其中有同学说我的课程有点听不清,这个我也承认,我上课不喜欢用话筒,其实时至今日,我上课依然完全靠自己的嗓音的,小教室还行,大教室的话,坐在后排的同学也许就真的听不清了。但是奇怪的是,这些听不清的同学,在课堂上并没有提出这个问题,反倒是在评教环节说了这件事,我就觉得大家如果对课程有问题,还是应该早点说出来比较好的。

猎头又来了

在我的第一部小说中,我曾经提到过在我的职场生涯中,曾经遇到过两个猎头。其中第一个是当我还在苏宁卖苹果的时候,一个猎头想为苹果在长春苏宁招聘一个专门的苹果产品销售,尽管不是直接和苹果签约,而是和第三方人力资源派遣公司签署协议,但是这个职位也是能够代表苹果,也是能够直接和苹果中国的区域管理层接触的一个职位,而且薪资肯定也会上涨不少(当时说的是5000元起步,而我当时在苏宁薪资是3000多)。第二个猎头是当我已经收到了卡巴斯基的Offer之后,一个猎头想为广东的某个知名电器厂家寻找一位Web安全工程师,于是就联系上我了。由于当时我心意已决,就直接拒绝了猎头。但是后来从卡巴离职,一直到我入职X高校期间,就再也没有遇到过猎头了。可能那段时间我也没有过多地在网上宣传自己,因此猎头也就不知道我的存在了吧。事实上,尽管今天的我已经来到了体制内,拥有了一份非常稳定的工作,但竟然也接到过几次猎头的电话。特别是其中有一个,我已经说了自己不需要跳槽,已经获得了编制,但是TA却还在试图劝说我,加入某个国有企业做安全培训。我听了还是挺无奈的,因为我觉得现在的单位就是我职场的终结,什么样的好待遇都不会让我动心的了,我也不会再回归企业,不论是国企还是私企,毕竟当时我拼了命参加统一招聘考试的目的就是为了能够得到今天的生活。特别是有的猎头还能够在一些招聘网站上找到我陈年的一些简历,我就很是佩服这些猎头的精神,尽管受到疫情影响,整体大大的就业环境受到了很大的影响,可没想到猎头的工作倒还是挺忙的。

言归正传,回到2018年6月末。当时我基本上结束了我在X高校任教第一个学期的授课工作,接下来只要出考题进行期末考试就好。某一天我收到了一封邮件,内容如下:

看到这封邮件,给我的第一感觉是,尽管我已经有大半年没登录招聘网站了,但是猎头们依然会上这些网站,估计是采用付费购买的方式来获取候选人的信息,看来我还没有被安全圈子所遗忘,还是有猎头觉得我以前的简历是可以的。第二感觉则是这里面红彤彤的大字——“20-35万”。我目前在X高校属于编外人员的状态,合同内容只有可怜的一页纸,而且还是单面,每月工资的多寡完全取决于我的课时数量,如果能够一直保持第一个学期近乎于爆满的课时数,那么我全年估计能够到手18万左右。而这个猎头直接开出了20万的起步价,因此还是让我很心动的。不过,这个20万应该是税前,按照企业一般的招聘逻辑,尽管薪资是一个区间范围,但基本上也就是会给个最低标准。因此税前的20万,肯定是不如我在X高校的收入多的,但我觉得这个可以谈,也许企业觉得我不错,从而给我了35万的薪水呢。最后,其中的岗位描述也是比较符合我的技术领域,因此整体上我还是比较心动的。唯一不那么好的是,工作地点在深圳,要我离开珠海,我其实还是挺不愿意的,但不管怎么样,我觉得也是可以和猎头谈谈的。而这个猎头估计是怕我没看见这个邮件,尽然还给我发了两遍,最大的区别是第二封邮件加了“紧急”二字,两封邮件的时间间隔为1个小时:

很快,猎头的电话就打过来了。TA和我聊了蛮久,主要是了解一下我的工作经历,我所擅长的技术方向。这里我重点突出了我之前所做的高级研究,也就是启发查杀的情况,这个猎头对于技术多多少少还是懂一些的,因此我们在专业领域的交流上,还是没啥问题的,感觉双方谈得都很尽兴,不过TA却始终没有向我介绍公司的情况。最后,猎头加了我的微信,并且让我写一份最新的简历,让我突出一下启发式查杀的工作经历,也许能够成为我的加分项。于是我就连夜把简历改好,给TA发了过去,但没想到竟然也石沉大海,后来TA就没再联系我,按照我的性格,我也就没有多问,因为当时的我其实还是比较随缘的,也许是对方觉得我的条件也还是不太符合他们的招聘要求,因此就把我给否了吧。而我也觉得没关系,之前积累了丰富的失败经验的我,已经不在乎这一两次的职业机会了。自我安慰道:现在的X高校也不错,收入比较稳定,也还有寒暑假,重点是家也在这里,无需付房租,因此也还是挺好的。后来那个猎头偶尔还会在我的朋友圈里留言,又过了一段时间,我发现TA已经是把我给删掉了,也许是觉得我已经没有了利用价值吧。说到这里我想起来,还是在2018年更早些,也就是4月份的时候,我还收到过一个猎头为某国外银行的中国分行招聘安全工程师的邮件,在要走了我的最新简历之后,连电话都没有打过,便杳无音讯。网上有一种说法,说有的猎头会大量地去获取候选人的简历,至于用来做什么,那就不得而知了。

游戏安全工程师

也许是故事中的猎头为我开了个好头,接下来我的职场桃花运来了。2018年的7月初,当时正处在学期的收尾阶段。某一天下午,我刚打算下班开车回家,一个外地的号码打给我,TA自我介绍是国内某顶尖游戏公司的面试官,说我之前投递过他们公司的游戏安全工程师的岗位,问我有没有时间,想进行一次面试。

我听了之后先是有点诧异,拼命回想才回忆起那是2017年8月末,当我走投无路时曾经在R银行待了几天,由于实在是不喜欢这里的氛围,因此投递了Q公司的主机安全岗位,似乎也投递了游戏安全,由于已经是近一年前的事情了,记忆已经是非常模糊,我以为早就把我给否了,没想到现在竟然想起我来了。但不管怎么说,接到了这么大公司的电话,我已心花怒放,打算好好表现一下。

面试官问我的具体的问题,我现在已经想不起来了,就记得我对于每个问题回答得都不错,没有卡壳的情况,因为这个面试官的风格是将主动权交到我手里,也就是更多地是问我所了解的技术是怎么样的,由这个技术可以引申出什么技术之类,问题都是比较开放,既可以考察我的基础知识,更可以了解到我的拓展思维情况。其中有一个问题我印象很深,我说我之前在网上录制过很多安全方面的课程,面试官就问我,假如让我开发一款录屏软件,那么设计思路是什么。这个问题我之前还真是没遇到过类似的,但我感觉视频无非是一帧一帧静态图像的集合,因此我说我会采用截屏的方式,然后根据要求的帧率播放出来就好了,面试官未置可否,也许觉得我的回答也是一种思路吧。

在面试官问完我之后,也允许我向TA提问。当时我说我曾经看过你们部门出版的一本游戏安全的书籍,我问TA有没有参与写作。TA似乎没听说过这本书,说可能是别的部门编写的,TA自己的部门没有参与。后来我就没问什么了。最后,TA给我布置了一道题,说一会给我发一封邮件,让我在周末之前完成邮件中的附件问题,应该也是想看看我实际的分析功力究竟怎样吧,之后便挂断了电话。

由于我也是到了下班时间,因此我也就直接开车回家了。晚上7:50,终于收到了TA的邮件:

这是一道典型的逆向分析问题,crackme的题目以前做过一些入门的作为练手,但后来我就没有太接触了,因为我转为了病毒分析。而病毒分析和crackme尽管在分析的思路上类似,但crackme的破解更加注重的是各种逆向技术的掌握,就如同奥数的题目一样,而病毒分析则类似于高考数学,方法上还是存在差异的。我收到这封邮件是在周一,TA让我周五下班前把答案发过去,也就是说我的时间还是比较充裕的,正好那天也没啥事,于是打开IDA,载入这个程序开始分析。

给我最大的感触是,不愧是顶尖游戏公司的面试题目,这道题的难度还是不小的,融合了不少的混淆手段,结构乱七八糟的很具有迷惑性,难以短时间内找到突破口:

这个时候我就在想,这道题大概率不是这个面试官的原创,应该也是在网上找的,或者即便是这家公司的原创,那么可能之前会有做过的人写过解题思路,那么我能不能搜索一下,看看网上有没有前辈也做过这道题呢?可是我不能直接搜索crackme这个关键字,因为这个字符串太常见了,应当从这个程序内部一些有特色的字符、代码入手。利用IDA的字符分析功能,还真让我找到了一串疑似用于加密的字符:

接着我就利用这串字符,再加上一些其它的关键字,果然找到了一位前辈写的解题思路以及注册机代码。我对代码做了一些修改,使其可以在我的Visual C++上运行出来,然后马上给面试官回复了一封邮件,距离TA给我发的邮件仅仅过了2小时11分钟:

可是,这封邮件竟然又石沉大海了,本以为这家公司的风格就是这样,也就是流程比就慢,毕竟我投简历到面试竟然过了将近一年之久,那么我的一面和二面之间,难道也得至少这么久吗?那个面试官后来没有再和我联系,我曾试过给TA在QQ上留言来询问进度,但也没有回音,直至今天也没回音,看来,自从我离开卡巴斯基之后,我和安全企业也就渐行渐远了,直到很后的后来,才因为业务需要而再度产生了联系,这些我都会在未来的故事中跟大家细说。

不过,这次的面试也并不是毫无收获,我在后来的《计算机网络安全》课程中,对大作业进行了改革,我找了一些选题供大家挑选完成,其中的逆向选题就是这道crackme面试题目。其实按道理来说,同学们仅仅学会我在课堂上所介绍的逆向知识,技能储备是不足以解决这个问题的,但是我允许大家上网搜索资料,整理汇总并提交,因此每一届同学里面都会有同学写了非常不错的分析报告、录制了演示视频以及完善的注册机代码:

我也看到了这些同学的潜质,还是非常棒的。

我的课程与游戏安全

其实我一直很看好游戏安全方向,曾经也很想入职游戏安全公司,因为这些公司在招聘时往往会写上一条“有病毒分析经验者优先”。可惜的是这些岗位比较稀少,另外也集中在大城市,珠海没听说有,因此也就只能作罢了,只能够将我的游戏安全技术和课程相结合了。尽管我第一个学期的安全课程里面没有过多地包含关于游戏安全的内容,仅仅讲了一些简单的宏观方面的内容,但是我的期末考题中却有一道考题和这方面相关,而这道题我也是从2018年从教的第一学期,沿用到了现在的安全课的考试中。这道题是这样的——

请从本课程的主要内容中(或者你感兴趣的安全领域里面)选择一个方向,谈谈你为什么选择该方向,这个方向里面常见的安全攻防技术有哪些,各有哪些优缺点,最后再谈谈这个方向的前景,比如你觉得该方向未来会有哪些攻击手段?会有哪些手段来防御这些威胁等。

每学期的考试之前,我都会给大家复习一下相关的重点,我也会分析这道题,从而希望打开大家的思路,想看到百花齐放的答案,看看大家经过一个学期的学习,对安全领域是否有一些理解。而我给大家的参考答案则是这样的:

答:(仅供参考)我比较喜欢游戏安全方向。因为这个方向是一个新兴的方向,加上目前电脑(手机)游戏也正处于一个蓬勃发展的阶段,因此在未来的很长一段时间内,游戏安全都会是安全领域的一个热点方向。毕竟当今社会喜欢游戏的人群也是越来越多,那么就会有很多不法分子利用自己的技术来窃取或者攻击游戏账户,那么这就势必会对游戏公司乃至玩家造成很大的损害。而且在利益的驱使下,黑客也会不断地更新自己所掌握的技术来应对游戏安全工程师所设计出来的安全机制,因此游戏的攻防,是一个永恒的话题。而且在游戏安全领域,其基本的安全技术也是基于我所研究过的病毒分析以及漏洞利用等知识,因此我之前所积累的知识也是可以运用到游戏安全上的。如同一些恶意程序,游戏辅助类程序(外挂)很多时候也会采用恶意程序的一些技术,比如Windows钩子和一些自我隐藏技术,这就需要我们加深对于内核之类知识的研究与理解,需要赶在黑客前面,将安全隐患消除。综上所述,我喜欢游戏安全领域。

结果很多同学就直接照搬我给大家的参考答案,只有很少同学会选择课程中学习过的诸如Web安全、病毒分析这些内容。还有的同学是这么回答的:

个人最感兴趣的是第一节课,感觉经过姜老师的介绍还挺有意思的,但是后面太难了,并没有学懂。但是个人还是很看好这个东西,感觉大有潜力。

我首先应该感谢这个同学前半句对我的认可,但是后半句说我的课程太难,也是我教了这么多届里面唯一一个觉得课程难的同学。可惜的是,这个同学并没有按照要求进行回答,所以我只能给0分了。

后来,我的课程也是做了一些改革,结合一些资料和我的实践经验,增加了游戏辅助的实现原理等内容,也算是较好地充实了这一章的知识和技能。

X高校的毕业流程

我在高校任教已经有几年的时间了,给我的感觉,教师的工作真的正应了“铁打的营盘流水的兵”这句话,以年为单位,每年其实都在重复着相同的工作,甚至可以精确到月、日,都已经是给我们安排好了的。比如几月开学,几月期中考试,几月期末考试,几月排课,几月交学期材料等等。而每年的工作除了正常的教学以外,不论是本科还是高职,教师还需要指导同学们的毕业设计,这项工作在同学们大学的学习过程中非常重要,关乎到大家是否可以如期毕业,是否可以为大学生活画上一个圆满的句号。

回想我在读本科的时候,由于我学的是市场营销,因此毕业设计相对于计算机专业来说会稍微轻松一些,只要写一篇论文就好。但是计算机专业就很不一样了,除了需要写论文来论述你的项目的开发流程、特色、亮点、创新等以外,原则上还要在毕业答辩的时候向老师们展示你的作品,这对同学们大学的学习是一次很好的总结与历练,基本可以杜绝浑水摸鱼情况的出现。另外,时至今日我依然觉得,X高校的毕设流程是非常科学的,远远胜于我的本科时期,甚至比我读研阶段还要科学,这点从整个毕设的流程设计上就可以看到端倪。

首先,学院要求老师们在大三同学第二学期刚一开学的时候(大概每年三月初),就上报论文选题的方向。我在刚入职X高校的时候,由于自己也没有项目,因此主要是帮着学院项目组为学院自己的开发项目招揽同学,主要涉及运维、测试、前端开发和后端开发。结合自己的专业方向,我还申报了几个和病毒查杀相关方向的选题。由于选题就是真实的项目相,所以加入我们项目组进行毕业设计的同学,一方面可以获得真实项目的实习经验,另一方面其实只要不是每天都在摸鱼,那么只要记录下自己所负责模块的整个开发过程,那么基本上一篇论文也就写出来了,可以说是一举两得的好事。当然了,由于我们学院很多的老师都有项目,在近三年的教学过程中肯定也会在自己所教的学生里面发现一些苗子,因此每一届这些勤奋且在开发方面比较有天赋的同学都会早早地被导师们给“预定”了,没有硝烟的“抢人大战”年年都会上演。竞争会促使进步,学院在人才培养方面确实取得了优异的成绩,这点是必须承认的。

在每位毕设指导教师上报论文选题,交由各个系主任审核通过以后,就来到了“双选”阶段。我在读本科的时候,学院执行的还是单项选择制,记得在选择毕设的那天,全班同学找了个教室开班会,班长拿着一张A4纸,上面写满了各个老师的选题,我们可以直接把自己的名字写在对应选题的后面,就算是确定了自己毕业设计的研究方向。我在读研究生的时候,我们学校执行的是“双选”制度,也就是仅仅你想选某个导师还不行,这个导师也得认可你才行,因此当时在选导师的时候可以说也是一次简单的面试过程。X高校也是采用这样的模式,直接对标研究生的培养方式,很是科学。

在导师确定了自己需要指导的学生以后,原则上在没有课的时候,大家都要去到导师的实验室去做项目的,这一点和研究生的培养模式非常相似,而且还需要定期开项目总结会,对于在项目组表现优异的同学,还可以申报学院的星级工程师奖励。这有点像是想让大家提前体验研究生的学习生活的意味。经过近一个学期的培养,在这一学期的期末(大约是六月份)还会举行开题答辩。一般是两个老师一组,依据学院开题要求,同学们挨个上台讲讲自己目前的进展以及未来打算如何进行研究。我们学院的开题答辩,不是简简单单的走个过场,而是有一定的刷人比例的,这个比例一般是50%,没有通过的同学,需要在暑假进行整改,然后在大四第一学期开学返校之后(九月初),导师会再次进行开题。这种措施有效地端正了大家做毕业设计的态度,但也给我提了一个难题,就是该如何安慰第一轮落选的同学,好在我带的这几届学生心态都不错,无论是否落选第一轮,都会坦然接受。

大四第二学期临近期末,是学院针对于毕业设计的中期审查阶段,这个阶段要求大家的毕业论文至少完成70%的内容,然后需要开展第一轮的查重工作。我们一般会使用知网的查重功能,要求重复的比率不可以超过30%,否则需要导师写报告来说明情况。

最后,大四的第二学期会开展毕设答辩(一般是在四月中下旬),X高校在这一环节也是从严把关。毕设答辩每年都会举行两轮,第一轮是各个导师内部进行把关,每位同学也是需要制作PPT进行演示说明,然后由导师来打分。分数在90以上的,进入到第二轮的优秀组进行答辩,以争夺优秀毕业设计的荣誉。第一轮的分数在69及以下的,则必须进入第二轮的普通组进行再次答辩。分数在70~89这个区间的同学,也会进入到第二轮的普通组,但会以抽查的方式来决定是否还需要参加第二次答辩,因此也是不能放松的。

回顾这整个流程,我感觉比我读研时候的要求还要高,但我觉得尽管这是对同学们的考核,但我在指导和答辩评审的过程中也是学到了不少东西,这些我都会在未来的故事中为大家讲述。

组团X无奈拒绝X第一次当毕设指导教师

下面为大家讲讲我第一次当毕设指导教师所发生的一些故事。

我在X高校第一学期任教的时候,就需要担任毕设指导教师。想想自己以前都是由别的导师来审核并指导我的论文,但当今天轮到我来带同学们做毕业设计的时候,确实还是有些激动的。一开始,我按照系主任的要求,申报了10个选题,计算机的系主任看在我是安全出身,特意让我多加点和安全相关的选题,毕竟学院也是有网络安全这个专业。其实想选题是一件比较费脑筋的事情,要有创新,也要让同学和同学之间存在有差异化。由于是刚来X高校任教,我对自己教的计算机专业以及电子专业两个班的同学并不是很熟,因此基本上只要选了我的,我也都同意了。可能是大家比较喜欢我的上课风格吧,一开始的10个选题很快就被这两个专业的同学选完了,但是依旧有不少同学想选我做导师。特别是电子系的同学,也就是我教物联网这门课的班级,有大约10个同学专门来找到我,想让我多多增加一些名额,他们也想加进来。我见大家都很热情,竟然还组团来找我,于是我专门去找了负责这件事的系主任询问。系主任说可以再让我加5个名额,但还是希望我多招几个计算机系的同学,因此当时我心里面对这10个电子系的同学还是有点愧疚的。

最后,我指导的第一届毕业设计的15位同学里面,计算机系的同学有8个,电子系6个,软件系1个。软件的那位同学和我之前并没有交集,就是因为他在系统里看到我报了一个关于漏洞的选题,顿时来了兴趣,就选了我作为毕设指导教师。我也是后来才知道,其实这位同学很早以前就在学院项目组做后台开发了,项目组的老师对他的技术水平很是认可,也是希望能够把他招募至麾下,但结果却选了我的安全方向。据说他是对开发的工作有些倦怠,才想转型的。我们项目组的几位老师也尊重他的意见,也就没有再要求他做开发,而是帮忙写点教程做点培训工作,培养一些新人加入我们项目组,他在这一点上完成得很好,为项目组输送了很多新鲜的血液。一开始,我借了这个同学一本书,是关于路由器漏洞挖掘的,看了一段时间之后,他觉得有点难,而且他之前学的知识完全用不上,于是后来就变更了选题,变成了SQL注入类漏洞的研究,也算是和他之前所做的后台开发技术有些关系。此外,这位同学还想要考研,这也是他退居开发二线的一个很重要的原因。天道酬勤,这个同学后来也是顺利上岸,在研究生阶段继续深造。

余下的14位同学都是上过我的课的,也是全都要加入项目组来做项目。我们的项目组也是考虑到了每个同学的不同情况,专门有三个领域方向供大家选择,分别是:前端开发、后端开发、运维。其中负责运维的同学还需兼任软件测试的工作。由于我们的项目组隶属于软件系,因此其实整个项目组九成以上都是软件系的同学,历年基本上没有其它专业的同学加进来,只有我来的上一届有一个例外,一位电子系的同学进来,还承担了主力的开发任务,关于这位同学,我会在未来的故事中详细说说。之所以会以软件系的同学为主,主要也是因为我们学院软件系有很多开发类的课程,比如围绕着Java就有诸如《Java 程序设计》、《Java高级编程》、《Java企业级应用开发》以及《Java开发框架》等课程,学完这些再经过我们项目组的简单培训,基本都能够很快上手后端开发的工作了。前端、运维、测试也是同理。原则上我们这边是大三才借由毕设的机会招人的,但每年也会有一些同学想早点接触实际的项目,在大二甚至大一第二学期就加进来,而这些早早就来实习的同学,后来无一例外都成为了各个项目的负责人,毕业后也都成为了香饽饽,成为了名副其实的offer收割机。说明对于计算机类专业的同学来说,抓住机会早点获得参与项目的机会还是很重要的。

由于软件系的同学基本都具备基础,因此来到我们项目组后,对开发非常熟悉的同学,基本会选择后端开发的技术方向,技术稍微薄弱一些的,选择前端开发居多。而我这次带来的14位计算机和电子的同学,由于之前没太接触过这些专业课程,于是就被分配到了运维组,工作包括服务器软硬件方面的日常维护、系统测试等。而每一届负责项目运维的同学,都会涌现出几个拔尖的,深受领导赏识,也算是我为项目组做的一个小小的贡献吧。但比较遗憾的是,每一年很少有同学会坚持到最后,基本上都是大三第二学期的出勤还可以,但是从大四开始就基本就不来了,就想着去考研、考编、外出实习之类的。当然,我们是尊重大家的选择的,可是这就会造成项目组青黄不接的情况,一些业务难以开展,项目进度远远落后于预期。好不容易培养出一个能上手的,但还没干多少活就走了,他们一开始都说得很好,愿意一直干下去,我也是因为这些保证才选择的这些同学加入项目组。每年都是我这边的同学流失量最大,让我总是不知道怎么面对项目组的领导。

这里还有一位同学是需要我在这里好好讲讲的,我在他的身上看到了不少的闪光点,在后来的教学中,我每年都会提到这个同学的故事,也希望大家能够有所启发。

他学的是计算机网络安全方向,一开始在选导师的时候,就直接来到我办公室找到我,说想选择安全方向,至于每天来项目组做运维的工作,他是接受的。可惜的是,当时我的10个名额已经满了,我就直接拒绝他的,可让我没想到的是,一般别的同学遇到这种情况都会直接回去了,抓紧时间找别的老师,但他却一直在我这里,苦口婆心地劝我再增加一个名额,把他给选上。我拗不过他,没办法,后来我不是又加了5个名额嘛,首先就把他给招进来了。

他一直都对网络安全技术感兴趣,所有的安全知识基本都是自学的。来到我们这边之后,一开始,完全凭着手工检测,就帮我们找到了十多个XSS以及SQL注入类的漏洞,每个漏洞还都写出了详细的复现与分析报告。甚至后来我帮助学校的一个项目系统做测试,我也把他拉了进来,他也发现了那个系统的几个漏洞。特别是在后来的一个端午节,大家都在放假呢,可这个时候我们的一些用户反馈说自己的账号出现了异常,账号中的一些资源被篡改了,而这些用户自己并没有印象修改过自己账号的内容,怀疑账号被黑客入侵利用了。项目组领导找到了那个同学,让他帮忙查一下看看到底是什么原因。于是他就放弃了休息的机会,调取我们的系统日志开始了分析。要知道,我们的日志有N多个G的数据,而且我们当时并没有使用自动化的日志分析工具。于是那个同学面对着拥有庞大数据的txt文档,自己利用Python写了一个筛选分析脚本,最后发现这些被盗号的用户有一个共通点,那就是密码非常简单,也就是说,黑客通过是通过密码字典的爆破手段,登录了这些账号。亡羊补牢,我们赶紧通知这些用户修改密码。能够发现这个问题,都是那位同学的功劳,特别难能可贵的是,他主动放弃休息来帮助我们解决问题,这个精神弥足珍贵。

还有一件事,就是在他找实习的时候,他投了一个初创、主要从事网络安全领域的情报分析的公司。第一轮的部门主管面试,他很轻松就通过了,第二轮就直接来到了CTO的面试。他和我说,这个CTO以前是某个大厂的工程师,曾经取得过世界黑客大赛的冠军,因此问的问题都非常有深度。几个问题下来,我的这个学生感觉发挥得很不好,觉得应该是被淘汰掉了。后来公司的HR也面了一下,他还把我的联系方式给了HR,HR加了我的微信想了解一下这个同学的情况。由于这个同学的表现确实很好,因此我当然也就是实话实说,我还特别提到了他帮我们项目组分析日志这件事。说完之后,HR并没有特别明显的表示,也不知道我说的这些是否能够起到加分的作用,只是没想到,以前都是我自己面对HR求职,现在竟然出现了我为了自己学生的就业,和HR交流以帮助学生就业的情况。我的这个学生应该也是很看重这家公司,时不时联系HR以及自己一面的考官询问情况,使出了当初来找我,希望我作为他的毕设指导老师的劲头。再后来我听这个学生说,那个一面考官说,以后你是在我手底下干活,因此我看好你就足够了。那么这位同学也是顺利入职,开始了实习的工作,直到后来毕业就正式加入了那家公司。现在我和他之间时不时还会有些联系,有比他小几届的同学,也想做关于网络安全毕业设计的,我也会推荐给那个同学结合自己日常工作来指导一下。

由此我也会教导之后的同学,说希望他们能够在平时的学习、实训的过程中好好表现,好好发挥,让导师发现自己的闪光点,未来在求职就业的过程中,导师肯定会发自内心的去帮助你的。这些都是最简单、最易实现的初始人脉的积累,是在大学期间就应该明白的道理。

必须要开始做前端

我一开始与X高校签约,签的是《任务工作岗位劳动合同》,合同期限是一年,具体内容是“学院网络安全维护及信息化开发”工作。但由于学校人手不足,因此我也是需要承担授课以及带毕业设计的任务的。可不管怎么说,我的主要工作还是应当以合同中约定的内容为主,特别是“信息化开发”这一部分的内容。

学院依托优势的教育资源,也是一直在开发运营自己的项目。这个项目主要面向全国的中小学,分为PC端和移动端。其功能主要是辅助教师在授课的时候,能够及时评价每个学生的表现,并通过一个学期的数据积累,在期末就可以自动生成每个学生的全学期表现,极大地减轻了教师的工作量。如果类比我以前还在上小学的时候,就如同老师给每个同学的小红花。期初,我们每个同学都有一个小本本,如果作业完成得好,或者课堂表现得好,课后就可以拿着小本本找老师去盖一朵小红花,到期末看谁的红花多,会有诸如“红花少年”之类的奖状。后来估计也是为了让全班都参与竞争,就在我们教室后面黑板的旁边贴上了一张很大的表格,纵列是我们班每个同学的名字,横向则是每个同学的红花,老师直接在这个大表格上面盖红花,这样我们就能够知道全班哪位同学表现得好了,也算是公开透明,同时也促进了竞争。

可当今毕竟是信息化的社会,再使用这样原始的盖红花的方式确实有些不合时宜了。于是我们就开发了这样的一套信息化系统,教师可以随时随地地从各个角度对学生开展实时的点评工作。特别有意思的一个功能是,系统的还会为每个学生建立一个“果园”系统,学生表现得好的话,就能够赢得一些积分,有了这些积分就可以买很多的种子,可以在果园中播种,让果树结出漂亮的果子。果树在成长的过程中,如果遇到虫害,学生可以用积分购买杀虫剂。此外,学生也可以用养料来让果树成长得更好。漂亮的果树还能够吸引来很多蜜蜂和蝴蝶,这就增添了更多的趣味性。表现越好的同学,积分也就越多,就越能够经营出一个漂亮的果园出来。

这确实是一个有趣的系统,而且当时已经有不少学校开始使用了。其实我一开始去到X高校工作的时候,我们部门的主任就给了我一套学习资料,想让我尽快上手这方面的工作。这个系统不论是基于哪个端,都是网页版的。网页版的优势就在于,不论用户使用的是什么系统,Windows也好,Linux也好,苹果也好,只要有浏览器,那么都是可以直接打开这个网页来使用这个系统的,这也是网页版的优势。系统的前端使用的是HTML+CSS+JavaScript,后台使用的是SSM框架。主任一开始是把过往用于培训学生的资料发给我,让我去学习一下SSM框架的开发方法。这对于我来讲完全是一个全新的领域,毕竟这种开发是系统化的工程,和我之前在安全领域所使用的碎片化的开发是不一样的。过往为了实现对恶意软件的查杀,基本都是结合目标的特点来编写查杀程序,代码量不多,而且模式也是比较固定。但是我现在面对的这类系统,则需要学习这个框架那个框架,技术更新也很快,需要不断地学习才能够不被时代所淘汰。当时我简单看了一下那份培训资料,更多地是以上网看视频的方式,然后通过几个小任务,如果能够完成,那就说明过关了,就可以参与到真实的项目开发中了。但是我在X高校的第一个学期,由于授课任务繁重,也没有过多的时间去学习这些,因此我其实一直都没有去系统地进行学习,整个第一个学期,因为这件事我还是比较内疚的,没有为项目组贡献更多的力量,而这也不是学院把我招聘过来的初衷。

但是到了第二个学期,课时量就没有那么多了,我觉得就很有必要认真对待一下这件事。思量再三,也是为了能够尽快上手,我选择了做前端开发这一块。HTML中基本的标签都很好理解,但由于我们的系统要能够适配不同的浏览器,因此很多时候为了把各个控件的位置调整好,往往就需要花费很多的时间,因此我觉得这部分还是挺难的。而JavaScript语言虽然我以前没接触过,但是我毕竟有高级语言的基础,因此上手也是很快,更多的是去调用后台提供给我们的接口,将后台查询出来的数据反馈到页面上就可以了。与此同时,也是为了与时俱进的需要,我们还利用jQuery改写了很多的代码,其实这也是开发领域的一个特点,只要有新技术新框架出来,那么往往就需要利用这些新的东西去改写旧有的代码。前端是这样,后端也同样如此。比如当SpringBoot出来之后,我们所有负责后端开发的同学就需要学习SpringBoot,并改写之前的代码。而前端的Vue出来之后,又需要对前端进行重写,所以程序员确实是活到老学到老的一个职业。

在我做前端开发的这段时间,有件事是必须要提一下的,今天都说程序员996是常态,但其实在高校里面,我们做这种开发工作,有时为了赶进度,其实也是会加班的。印象最深的一次就是,当时我刚学jQuery没多久,项目组有个模块需要尽快上线,而之前负责这部分工作的学生临时有事没办法完成开发,于是主任就让我接手,务必今天内完成。于是我就只能一点一点去尝试,网上的代码基本上没办法用,一运行就一堆报错,只能自己从零开始,一点一点去学去调试,一直到晚上十一点多才完成这个模块,那次我到家都已经是凌晨了。而这件事也是让我萌生了退意,觉得自己可能真的不是做这类开发的料,自己也确实接受不了这样的加班。

但不管怎样,在X高校难得的前端开发经历,也是让我学到了很多东西,这对我以后的教学工作还是起到了很大的帮助的。在X高校,在项目方面,我后来更多地是从事管理的工作,让学生去负责各个模块的开发,基本也不需要我动手了。

我感觉,三本学生并不比985硕士研究生差

我是2005年在广东参加的高考,我们当时是考前填报志愿,因此还是有很大的运气成分的,往往只能够通过模拟考试的成绩作为参考,从而进行志愿的填报。而根据我的模拟考成绩,大概率是专科或者三本的水平,因此当时其实重点就在这两类高校中择优选择。当时的一本,毫无疑问是那些双一流的重点大学,而二本分为A类和B类。A类表示普通的双非高校,B类则主要以民办为主,特点是学费相对贵一些,一年估计两三万。不过我们当时也会把二本B类院校称为三本。有些考生,尽管分数是够了二本B类院校,但考虑到高昂的学费,最终还是选择了放弃,于是就去了一所不错的大专院校,想通过专升本的方式再努力一把,以实现曲线救国的目的。而X高校其实就是这样的一所三本学校。

我们学院自己的项目,其实教师在其中更多的是顶层设计,项目管理的作用,更多的基础性的开发工作,还是靠着一届又一届的学生来完成的。学生加入到我们的项目组,可以接触真实的项目,这对他们以后步入社会从事真实的开发工作,能够打下良好的基础。而且这些学生还可以把自己的开发内容进行总结汇编,运用于自己的毕业设计中,正可谓加入项目组就能够达到一箭双雕的作用。而一届又一届的学生中,也是涌现出了不少精于开发的学生,这些学生临近毕业时都会化身成为offer收割机,到了并不是企业选择他,而是他来选择企业的情况。

我们学院招收的都是本科生,但是我们有些老师是具备指导硕士、博士研究生的资格的,因此校本部那边每年也都会分配一些研究生过来培养,这些研究生自然也是要做项目的。但我发现,如果单论开发水平,那么我们的本科生是要远远优于本部过来的研究生的。学院的本科生(特别是各个开发模块的组长)干起活来往往是又快又好,但是一些本部来的研究生,就很喜欢拖拖拉拉,而且工作也很不严谨。举个例子来说,有一次我和一个做后端的研究生对接工作,我前端需要调用他的一个接口。他写好之后,我发现我不管怎么调用都会一直报错,我自身排查了很久都没找到原因,让我确定肯定不是我前端的问题。后来反馈回去才发现,就是后端的接口没有写好,而后端在把接口提供给我之前,竟然连最基本的接口测试工作都没做,这在我和本科生对接的时候是完全不一样的。因为如果我和某个负责后端开发的本科生对接,调用某个接口,假设报错的话,十有八九是我的问题,但和研究生对接,报错十有八九那就是他们的问题了。这就让我看到了差距,也确实让我感受到,在我们计算机领域,学历真的并不那么重要,关键还是看技术积累以及工作态度。X高校的本科生还是非常棒的。

我的评教排名竟然这么高

在每个学期结束的时候,学校教务处都会进行评教活动,而正如前文所说,我第一学期教的这几门课的综合评教分数是4.728,我自我感觉还是挺高的,可是并没有和其他老师对比过,学院也不会特意对所有老师的评教分数进行排名,因此我也就不清楚自己的分数处于学院的什么位置。

不过,X高校在每个教学年度(一般为上一年的9月1日至本年的8月31日)会对每位老师(不论在编与否)进行考核评价,主要是考察一下之前订立的任务是否完成,完成得怎么样等。而教学评价分数也是其中很重要的一个考核指标。每位老师都需要完成一份考核表,将自己的业绩填写进去,供考核小组评判审查。而为了公开透明,学院会将审查后的所有老师的考核表进行公示,这样一来,我就可以看到每位老师的业绩以及他们的评教分数了。

但比较可惜的是,我刚去的那个学期,不知道为什么,每位老师的评教分数并没有公开,没有体现在各自的考核表里面,因此我也就没办法得知自己的评教分数处在什么位置。但是第二年度则完善了很多,考核表中的信息更加地全面。而第二年度考核,我的评教分是 4.83,于是我就可以进行对比了。

由于我们学院的老师不是很多(约46名),因此我当时是把所有老师的考核表看了一遍,主要是看他们的评教分数是多少。最后发现,全学院只有一位老师的分数是比我高的,是 4.865 分,还有一位老师和我同分。他俩也是有着非常丰富的教学经验了,听说课程内容丰富且有趣,评教得到高分也说明这两位老师的课程深得同学们的喜欢。于是我也就知道,自己的评教分数在全学院是并列第二名。

我自己对于这样的一个排名还是比较满意的,说明自己经过之前很长一段时间网络课程的备课与授课,加上自己在卡巴斯基的技术积累,然后将这些知识转化为课堂授课内容之后,还是得到了大家的认可的。因此,尽管学院没有对我们的评教分进行排名,但是通过这样的“隐性比较”,其实还是让我获得了极大的满足感,让我更加有动力将自己对于计算机知识的理解,更好地投入到课堂的教学中去。

合约结束X无法转正X原来都没有编

我与X高校签订的《任务工作岗位劳动合同》的期限是2018年3月5日到2019年3月4日,这一年其实过得很快,不知不觉就来到了合同自然结束的日子。我等了两天,没见学院主动和我提出续约,可是本学期的教学工作已经开展了,我也是有任务的,我也知道也许是学院忘记这回事了,而不是真的不想和我续约。于是我就给学院办公室主任发了信息,询问了关于我续约的事情,主任说要去了解一下,然后大约过了一周吧,主任来和我说接下来只能和我签订《兼职教师聘用合同》,内容依旧只有是一张纸。我也明白,对于一所本科高校而言,也就只有博士才有可能直接入编,我作为硕士如果不是来校工作比较早的话,是没有机会成为正式编制教师的,因此,学历也就决定了我的命运,但不管怎么说,能签一份合同,也比什么都没有强,我已经不敢裸辞去重新找工作了,对于找工作这件事,感觉自己心里都出现阴影了,而且学院对我也不错,教学也是我喜欢的事情,所以我就直接签字了。

这份合同的聘期是2019年3月1日到2022年2月28日。待遇方面仅仅写了课时费是 15 0块钱,这一点和之前是一样的。所不同的是,之前是由学校来承担我的五险一金,但这次则是由学院来承担了,毕竟我是属于学院自己聘请的教师,因此一切支出都是学院承担。

在我内心,我其实还是非常羡慕学院那些有编制的教师的,因为他们是妥妥的铁饭碗,不用担心自己会被“优化”,高校教师又是人人都羡慕的职业,平时上上课,其余时间可以做做科研,并且还有寒暑假,简直是完美的工作了。虽然我这种“临时工”也还算是稳定,可万一哪一天风云突变可就糟糕了,无奈自己不是博士,来校时间又晚,于是也就只能走一步看一步了。特别是在我入职那年的9月,学校为近一年入职的所有新老师开展了一次岗前培训,看着和我一起培训的老师们开开心心地入编,我心里面除了羡慕,甚至还涌现出了自卑感。尽管他们不会歧视我(他们也不知道我是合同制),尽管学院的老师也不会歧视我,可我的内心依旧不是滋味的。我只能劝自己不要多想,好好工作,也许未来还是有机会的。

几年以后,我离职来到了现在的单位。我们单位也是有从X高校离职,通过人才引进的形式来到我们单位工作的老师的。我当时就问其中的一位老师,想了解一下当初我心心念的X高校的编制到底是怎么样的。可那位老师却说,X高校虽然是事业单位,但是老师们并不是传统意义上的事业编制,其实也是需要与X高校签订合同的,从某种意义上来说,这应该属于是X高校自己的编制。合同结束之后,X高校也是可以选择不续约,让你走人的。听到这里,我有些释怀了,相比较而言,还是现在的单位更加稳定,更加有保障。当然了,这些都是后话,我能够来到现在的单位,也是在机缘巧合之下,也是付出了极大的努力的,其中的故事,其中的曲折,我都会在未来的小说中与大家分享。

寻求出路

尽管已经与X高校(准确来讲应该是学院)续约了三年,可我依旧想努力一下,让自己未来能够更加有保障。而我也习惯了高校的生活和工作,所以想试试其它高校,看看是否有工作的机会,成为正式编制的老师或者职员。这个时候,我发现紧邻X高校的另一所院校的某个部门在招聘工作人员,岗位职责主要是招投标及校园信息化建设工作,待遇写的是6K-8K,而且还说可以承担一定的课时任务(每周4学时)。我觉得不错,就直接用邮件将自己的应聘材料发过去了,很快,我就收到了对方的面试通知。准备好简历等材料,按时来到了面试地点。

尽管两所院校距离很近,可这也是我第一次来这里。我发现,这样的一个岗位算上我在内一共有四个人竞争,我是第三个面试的,我前面的那位应聘者,是医学类专业出身。因为想多了解一些后续的面试情况,我们还相互加了微信。很快就轮到我面试了,其实那天具体问了我什么,我现在有些记不清了,总之并没有特别强调和我自身专业相关的内容,因为学校属于甲方,因此只要做好自己的管理工作也就可以了,具体技术细节由乙方去做就可以了。面试官重点问了我想要的薪资待遇,我说招聘信息上说的是 6K-8K,那么我的期望就是 8K。对方似乎有些为难,我后来才明白,其实很多时候招聘信息说的某个区间范围,一般只能按照最低的标准给,也就是说,对方只能出 6K。但是我觉得 6K 也太少了点,和我在X高校的收入差距有点大(我只要课时多,一个月到手 1W 没问题),因此我当时才会咬定 8K。

面试很快就结束了,面试官让我回去等消息。由于时间还早,于是我就继续回X高校上班。过了一段时间,当时医学类出身的那位应聘者给我发信息说通过了面试,要准备上班了。听到这个消息我感觉很是惊讶,自己没通过面试,估计还是因为要价过高,另一方面我也发现,这个岗位确实完全不看出身,什么专业的人都可以做的。后来在闲聊中我还了解到,对于这样的岗位,根本就不会安排授课任务(不知道是不是由于医学专业不对口的原因),而且加班非常严重,也是合同制的员工。工资每月到手五千多,公积金一千多,这么看来的话,从待遇、工作内容等各方面考量,确实不如X高校。但我当时还不死心,过了两个月,那间学校终于招聘老师了,硕士学位就可以,于是我赶紧又投了简历,可结果最终也是石沉大海。至此,我与那所学校可以说就彻底没有缘分了。从之后发生的很多事情来看,由于一些动荡,我没去(主要是没机会)也许是一件好事。很多时候,一个政策的出台,就足以将无数人从安逸的环境中拽出来,置身于残酷的现实世界中了。

无论到哪里都摆脱不了当司机的命运

我从北京辞职回到珠海之后,利用三个月的时间考下了驾照。由于我家距离单位还是有点远的,而家里那台车又没有人开,一直闲置着。尽管刚拿驾照不久,但现实所迫,于是我就壮着胆子天天开家里的车上下班了。但很快也就上手了,说明开车真的是一件熟能生巧的活儿。

也正是因为我有车有驾照,加上我这个人又比较好说话,包括在现在的单位也是,只要有老师临时需要车来接送,那么一般都会想起我来,都会让我当司机。比如在X高校的时候,一次我们要把自己的软件进行推广,领导就让我开车,带着一位主任和两名学生去东莞的一所学校开展宣传活动。有时领导下班没有车不方便回去,还会搭乘我的顺风车,包括现在也是这样。而我开得时间最久的一次是在现在这个单位,那天我正在深圳参加一个会议,被要求去东莞接两位参加比赛的老师和学生回珠海,送他们回到珠海后,我休息了一会,就又开车去深圳继续参加会议了。从好的方面来看,当“司机”确实锻炼了我的车技,让刚拿驾照没多久的我很快就能熟练地驾驭车辆,但从不好的方面来看,我觉得当司机也确实是一件体力活儿,特别是开长途,一定要保持良好的精神状态。但不管怎么说,拿了驾照并且有了车之后,确确实实让我的世界更加广阔了,我可以随时来一次说走就走的旅行。因此我也和我教的每一届学生说,一定要在大学期间拿下驾照,一方面这是一项很重要的技能,另一方面,你们现在有时间,驾校对你们也有优惠,等你拿到驾照并且在未来体会到有驾照的好处的时候,肯定是会在内心感激我的。而我的建议还是很有成效的,我班上不少同学在毕业前就考下了驾照,相信这会让他们未来的道路,平坦很多的。

送走第一批毕业生

时间过得很快,我在X高校所指导的第一批本科生(2019届)就快要毕业了。其实在整个指导的过程中,我感触最深的一件事情就是,作为一个本科是市场营销,研究生才跨专业学习软件工程的人来说,以前都是为自己的毕业论文而通宵达旦、疲于奔命,没想到自己竟然也会有一天成为了大学老师来指导学生的毕业论文。沧海桑田,三十年河东,三十年河西,人生就是充满着如此这般的戏剧性。

在指导的过程中,我也发现了大家的一些不足。因为我自己的两次毕业论文都是在我惊人的理解能力之下,在“放养”的情况下完成的,所以我就总觉得,一个人也是可以独立完成毕业论文的,导师只要从宏观上进行把握就可以的了。但是我发现我指导的学生所出现的问题,主要体现在基础知识、沟通交流以及细心程度等基础方面,看到了这些问题,也是让我为以后的指导工作积累了很多的经验。

比如最为常见的问题就是格式了。尽管学校早早地就发布了毕业论文的规范格式,但是大家往往视而不见,或者就是特别粗心,往往不按照规定的字体、字号、排版形式来进行写作,同学们对于格式往往会有自己的理解,天马行空,充满着瑰丽的想象。因此我每次指导毕业论文的大部分时间都用在了帮助大家修改格式方面,而对内容的修改、指导时间就少得可怜了。也正是因为这个原因,我觉得有必要让大家早早养成良好的习惯,于是我的每次作业,就会规定一些基本的格式,如对字体字号排版等都做出了基本的要求,从而希望大家能够在最后的毕业论文的写作过程中,不要让老师花太多的时间在格式的调整方面。我也是希望大家能够珍惜这次的机会,在毕业论文的写作中学习到更多的知识和技巧。后来我也是和每一届的学生讲,希望大家要好好地对待毕业论文,因为如果你以后不打算继续升学,那么这就是你这辈子唯一的一次写毕业论文的机会。

而在内容方面,我记得非常清楚,其中一个学生在交上来第一稿之后,我发现满篇都是错字和病句,我给 TA 改了一稿又一稿,每次改完又会出现新的错字和病句。最终,在修改了十几稿以后,我终于没办法再改了,因为已经到了截止期限,也就只能这样了。我发现给TA修改论文,就如同是在程序中修改BUG一样,每次修改了一个,又会触发更多的 BUG,BUG 的子子孙孙无穷匮了。我当时也是比较认真,经常给 TA 修改到后半夜。后来在第一轮由各个导师自行组织的组内答辩的时候,综合考虑到TA的论文各方面确实存在诸多的问题,特别是在技术含量方面,因此我没给他通过,直接进入了第二轮的再次答辩流程,第二轮现场会由多个老师作为评审进行审查。那一轮我也是评委之一,尽管TA的论文依旧没能打动我,但我觉得没有必要再抓着TA不过了,仅仅希望TA以后能认真认真再认真点吧,把语文的基础知识学好。

还有些同学,我觉得是在和我的交流过程中出现了理解上的偏差。比如有个同学,TA的论文中的编号是以 1)、2)、3)……7) 这样的形式编写的。因为当时我们的一位博士老师说这样的写法不规范,应当补上正括号。于是我就发信息和那个学生说,你这样的写法不规范,应当改为 (1)、(2)、(3)……结果TA仅仅补了前三个序号的正括号,第 4 个开始还只是半边的括号。还有一位同学不知道该怎么在正文中将参考文献进行引用标记。我就说你可以把论文后面参考文献的编号标记在你正文中引用位置的右上角。结果TA把整一条参考文献都放在了引用位置的右上角。这类的理解问题真的让我特别无奈,因为我觉得,就算你不知道格式应该怎么编排,好歹可以看看我们的标准模版,而不是自己去发明创造一套格式出来。

还有一个同学,由于X高校在提交初稿的时候是需要查重的,我们学校已经买了查重的服务,要求大家的重复率不得高于 30%。但是一个平时表现不错的同学,查重率竟然到了 40%+。原则上,如果再次查重的结果依旧这么高的话,那就需要延毕了。我就赶紧看了一下TA的查重结果,发现TA之所以重复率高,是因为他所提交的那个论文里面,把独创性声明、答辩记录表等这些内容一并提交上去查重了,而这部分的重复率就是 100%,和正文内容一综合,于是导致查重率明显飙升。于是我就赶紧给学院写了一份说明,详细分析了查重率高的原因,学院也是接受了我的说法,在进行第二轮查重的时候,TA的重复率才终于降下去了。

在带的第一届学生里面,其实我最接受不了的就是对我的欺骗。比如有的同学根本就没有做论文中的项目,但在我提问的时候却一口咬定自己做了,但当我问了TA论文中的代码的意思的时候,TA却一问三不知。还有一个同学,我原以为TA很有实力,因为TA早早地就去企业实习了,在企业的表现似乎也还不错。而TA的毕设也是和安全相关的,我就说你的项目能不能演示给我看一下,结果TA却以各种理由推脱,不是自己的电脑坏了,就是自己的文件没拿过来。出现这种情况,我可就不惯着了,第一轮答辩就判定不过,直接让TA去了第二轮。我觉得一个人的技术水平可以不行,但是道德水平不过关,那就是万万不可以的了。

不管怎么说吧,尽管在一年的指导过程中,这十几个同学出现了各种各样的情况,但他们最终也都顺利地毕业了。在毕业典礼上,看到她们每个人都穿着帅气的学位服,我心里面也是满满的成就感。很是羡慕他们,能在优美的X高校度过最美好的本科四年时光,毕业时还能人手一套学位服,在优美的校园中尽情留下美好的瞬间。而有点遗憾的是,我毕竟不是博士,否则我还是有机会穿上导师服上台去给学生们拨穗的。而也就是从这一届开始,一直到我离开X高校,我指导的每一届学生,我都会依照毕业论文提交版的要求,自己去打印店把所有人的论文打印装订一份出来,作为永久的珍藏。毕竟在我看来,这些论文的定稿也有我的功劳,如同我的作品一样,未来闲暇时是可以拿出来,坐在摇椅上慢慢回味的。

校区转型

在我指导的第一届毕业生毕业之前,X高校还发生了一件大事,那就是校区的转型升级。这件事说得通俗一些,那就是X高校尽管校区的本体还在,但是从2021年开始,就会停止招生,2024年就彻底终止办学了。但是这所学校并不会因此而“荒废”掉,而是会在2019年开始重新规划,以校本部即985高校的身份继续招生。

乍一看上去,校区的转型升级似乎是一件好事,但是却让学校的很多老师感受到了危机。因为作为一所二本B类高校,起初被招聘进来就是以这个标准招聘的,但突然要指导985的学生,那么对于教师的资质就提出了更高的要求。如果是名校海归并拥有诸多成果那倒还好,可如果毕业于一所普通高校,排名远远不及X高校本部的位次,那么这些学生的家长是不是会有意见呢?尽管客观上来说,你的教学水平能够满足这些学生日常学习的需要,但也是不行的。而对于各个学院的领导来说,转型升级之后,自己是否还能继续担任学院的领导职务也是一个未知数。对此,校区也是提出了一些解决方案,比如岗位的统筹分流,将一些教师分配到行政岗去,不再担任教学工作。但即便如此,对于想从事教学工作的老师来说,肯定还是想继续当老师的。于是这就导致了教师流失情况的出现,也就是很多老师为了延续自己的教师梦想,不得不离职去其它高校谋求出路了。好在本地同等级别的高校还是有几所的,因此理论上还是有继续当老师的希望。或者,去高职院校当老师也是一个很不错的选择。

其次,很多学生也出现了对校区转型升级不认可的情况。有的学生会觉得自己毕业以后,母校就没有了,虽然X高校承诺,毕业生可以统一划归到校本部的校友会进行管理,各项待遇只会更好不会更差,但是让同学们信服的工作依旧遇到了重重的阻力。所以无论是对老师还是对学生,校区都有很多的思想工作要做的。

但对于我来说,校区的转型升级可以说是坚定了我离开的想法。起初我们院长还说让我在职期间争取多写一些论文,多做一些项目,让自己多点积累,这样也许以后就有转正的机会。但现在出现了转型升级的情况,连那些有编的老师都觉得自身难保了,我这种情况的边缘人员那就更是没有机会的了。此时我的内心也是非常地纠结,一方面自己年纪确实大了,33周岁的自己,在程序员界都是濒临淘汰的年纪,也是很难在技术上再有所创新有所突破的了。如果拼一拼考编,也仅仅剩下了可怜的两年时光,而且自己之前也是考过一次公务员,感觉自己完全不是那块料,从做题上来看,完全拼不过那些学霸、卷王。突然感觉到很迷茫,尽管暂时来说,自己的月收入还行,还能够满足日常生活所需,可转型后怎么办呢?我现在的工资是直接和课时挂钩的,不上课了,难道全职为学院从事开发的工作吗?那我岂不是得精通前后端才可以,自己还学得动这些技术吗?一切的一切都是未知数,觉得自己又来到了人生的十字路口。

回想自己这一路走过来,似乎每过两三年就会遇到一道坎。从大学毕业卖书卖手机开始,觉得要做出改变,不想再继续卖货了,于是花了3年时间才来到北工大读研。3年的硕士时光很快就过去了,我也是才决定以后要从事网络安全相关的工作,机缘巧合之下才进入的卡巴斯基。但由于种种原因吧,我在卡巴斯基也没有工作多久,就决定离职回珠海了,找工作屡屡碰壁,后来又是转换思路机缘巧合,才当上一名编外的大学老师。结果现在环境所迫,我又要计划离开了。半生飘零不定,很多时候让我感觉心灰意冷。

其实我内心是很喜欢X高校的,想着就算是编外也无所谓,在这里待一辈子挺好的,但却事与愿违。可是我依旧要做好一名老师应该做的事情,同时,我也必须要考虑下家了。教学和求职,就是我在X高校未来最为重要的两件事情了。

第二次当毕设指导老师

你们是八九点钟的太阳

合作执教

写书

线上教学

天降噩耗X四千元工资

两次面试

万能的JavaScript

线上期末考试

史无前例的差评

线上答辩

第三次当毕设指导教师

小屋模型

健身

回归久违的线下教学

也许,我打开了潘多拉的魔盒

人工智能查杀,解决了我多年的困惑

考公X考编

好好学习,天天向上

一败涂地

背水一战

上岸X无缝衔接X新的开始

最后一个学期

校内实习与校外实习

竟都知道我要离开了

青山绿水,江湖再见