姗姗来迟的一个总结

除了善良,我不承认世界上还有其他高人一等的标志。 ——路德维希·凡·贝多芬

天地一声惊雷,本笔者又回来了。都说,没能毁灭一个人的,都只会使之更强大,越大的灾难越是如此。我呢现在就感觉身上有使不完的力气,这辈子都没这么亢奋过,不来展示展示再顺便填个坑那就太遗憾了,憋了这么久了总得找个地方放掉用不完的力气,遂有此文。而且另一方面,过了这么久了,很多事情也都渐渐地随着时间淡了,不过这对于一个总结,或者说对于一个一地鸡毛结局的总结来说,大概是件好事,能让人更冷静,能让人站得更高,也对人和事看得更清楚。

还有就是,这次我会写的更加直接,前无古人后也不会有来者的那种。而至于为什么要突然这样,看到最后你们就知道了,我有我自己的思想、判断和坚守,我永远都知道自己在做什么、该做什么,唯独这一事实,世上没有任何人有资格怀疑。总之肯定不只是心血来潮,废话不多说,开始。

完整的流水账

序章——前世与今生

经过了一番颇有波澜的沟通和确定后,于是这学期我接下来了北航本科敏捷软工助教头子的担子。其实吧,开场心里挺平静的,毕竟之前那样的风雨飘摇都见过,也曾经无限接近于众叛亲离,心想着,没啥大不了的。恩,然后就这么开始了。

由于笔者自己,本科就是北航计算机学院的,自己曾经也就是这里的学生,因此整体上还不算特别陌生;不过要说多熟悉那也谈不上,我自己上软工课那会正全力在OO课大改革上输出呢,自己当时名义上是team leader但实际上也就是一个垂帘听政的主,具体事务接触的也并不多。总而言之,自己之前对这门课的了解就是这样的一个情况。而对于网上一直蠢蠢欲动的“吐槽”,我个人不想评价,毕竟那大多是些没有灵魂的文字,评价也白评价,索性明有所不见听有所不闻。

在一开始,对这门课我一直持观望态度,其实原因很多。我个人觉得最为关键的一点在于,我自己并没有对这门课形成足够的思维闭环——不说别的,我对OO课内部的主要次要矛盾是有过深入的思考和分析的(上面的知乎回答里面有我当年写过的分析博客链接),而对于软工,其理解也就那么些,形不成任何成体系的思考。站在上帝视角来看,在这样的一个环境下直接接手,把握性是存疑的。当然,还有一些外部原因,此处不作过多描述,也并不重要。

总而言之事实就是,这个学期是我带的,就这样。

开篇——筹备与阅读博客

在第一次全体会议以一个令人满意的姿态结束后,这届班子算是正式形成了——有来自北航本科2017级的5位助教(刘取齐、韩滏婧、刘阳、刘紫涵、赵博名),有周筠老师从外面请来的三位外援助教(前福大本科生兼北航研究生胡绪佩、微软员工吴科桥以及郑蕊老师),资深助教刘干学长,以及百忙之中抽出时间来为信念尽一份力的周雨飞同学,也是OO那会一个战壕里的兄弟。今年就是这样一个虽然算不上完美但是算得上是现有状况下最高配置的团队了

刚开始那会,由于很快就就有最开始的几次博客阅读作业,而且用不了多久就会有结对项目和案例分析作业,于是前期的工作按照两线进行——一线是博客作业的筹备,另一线是今年要新上的结对项目的题目与系统的筹备。然而这第一步就出了一个在局中不易察觉,但是却影响深远的一个错误——厚此薄彼。具体来说的话,今年有计划上一套新的结对项目模式,出一套新的题目,以及更重要的是,上一套面向CI的自动评测系统来支持这些新鲜玩意。最早的筹备工作大概在开学前大半个月就在紧锣密鼓的进行了,在当时作为在课程改革方面“技术制胜论”信奉者的笔者看来,系统和实操这部分是绝对的重中之重,没了这个其他的都没有大的意义,纸上谈兵罢了。这样的思维造成的一个直接后果就是——整个大半个月,精力基本都放在了结对项目这块,或者更准确的来说,是系统开发这块;而对于博客作业的筹备这块,却没怎么上心,一直拖到了最后,然后负责的助教拿出了一个可以用简陋来形容的作业文稿,才发现问题,然后开始猛干,才勉强挽回了一下第二次作业

在开篇阶段大概就是这些,这里只是一个开始。虽然如此,但是体现出来的问题,却可以说是自己在整个学期里面工作问题的缩影,后面都会有所提及。

初期——结对项目与案例分析

没过多久,结对项目就开始了。这次系统算是很成功的上线了,并且全过程运行稳定,三周多的时间内没出过问题。从这个角度来看,挺成功的,多谢组里一次又一次帮我争取到的时间,真的,每争取来的一天都在那个时候弥足珍贵。那会有很多个晚上都没时间睡觉,甚至有过顶着一口气肝到后天的情况,自己的生理已经处于极限状态。只是这次比起OO那次彻底没有退路的前进,心理上还是更加有依靠的,因为有你们在同我一同奋战

然而,结对项目依然有显而易见的问题。首当其冲的就是出题出了问题,选了一个看上去很稳当但实际上坑很多的主题——文件系统。具体来说,这个题目如果粗略地想的话,看上去确实很简单明确,无非就是斜杠分割出来的一个一个片段,然后将其组合、合并、各类加减法运算;然而实际情况却并非如此,因为涉及到很多元素(例如链接、映射)等,而且在出题时为了避免细节上的说不清,因而标明了与ubuntu系统的一致性,因此被各位内卷家们探索出了无止境的细节,再一次在客观上造成了边界性的模糊。第一阶段,整体还算稳定推进;第二阶段,勉强也算过去了,但是对学生方面和助教方面都造成了非常大的压力,训练的高标准本身是一个原因,但是这次的忙碌里面,其实有相当比例是题目本身的问题,这些压力客观上是并不必要的;最终结对阶段在在吴际老师的建议下,平稳结束。

本次结对项目,有不少可圈可点之处,比如:

  • 系统的成功建设与上线,全新的CI化评测,在提交代码的同时学习持续继承的使用
  • 在项目模式上的全新尝试,多阶段、官方包的成熟模式被运用了起来

不仅如此,在这次攻坚战中,出题组多位助教的持续讨论与输出(当时我看到了他们的讨论稿,挺震撼,也挺内疚的),数据和标称组的连夜爆肝(尤其是吴科桥同学,一个通宵一个通宵的加班),大家真的辛苦了,很不容易也很棒;但是同样也有问题——最大的问题出在在题目的选择上,这一点我自己背头锅,刚开始那会忙着肝系统甚至连这部分都没有做像以前OO出题时那样的深度论证;以及组员在出题这件事上没有做比较到位的培训,专业程度依然不够,走了不少的弯路。这些事情都比较值得反思,光出题与运营一次面相题目的教学活动这一件事就有很多值得说的,因此后续我应该会专门写一篇讲如何出题的稿子,以一个略知一二的过来着来说道说道出题这件事。

在另外一条战线上,也就是博客阅读作业与案例分析作业部分,整体上没有抓的那么紧,不过还算是不温不火的推进着,每一篇博客作业笔者也都进行了通篇的修改与完善,将内容变得更加完善,也在尽可能提高引导性,内容以及细则等都在一定程度上的扩展。

在这期间,也看到了不少有见地的博客,也有一些比较长,但是内容却乏善可陈的博客,进行了一些思考和讨论。并且基于这些博客,以及一些同博客作者们的交流,我本人也开始了解到一些事实:

  • 博客在现在这大部分学生眼里依然是一个作业,因此他们对待博客的态度和高中的时候完成一章《五三》的课后练习没什么不同。
  • 基于上一条,他们都会为了分数去老老实实堆字数,也会饶有风韵地抛出问题,但是这些字的营养成分如何,抛出的问题是真的在思考,还是摘取一些字眼去升华一下就挂出来当问题,是需要助教们好好判断的

这个阶段大概也就是这样的。

中期——选题与Alpha阶段

再接下来即将进入Alpha阶段,也是本学期的正戏部分了。

这个在一开始出了一个大的状况,那就是之前刚助教团队集体肝完结对项目准备和博客作业(前者居多),包括我自己在内的整个团队都处在偏散漫的状态下。可是按照开学初预定的时间线,团队项目的选题已经越来越近,甚至已经到了选题截止时间了,却依然这样拖着。最后幸得周老师进行了提醒,我们才抓紧时间加班加点准备起来,勉勉强强完成了这次选题的答辩与活动组织。

这个问题上,我认为我有不可推卸的责任,我身为助教头子却想不起来这么关键的事情,本身就不应该,究其原因,根本上还是自己在那会,没有真正从思想上重视起后边的工作,总有一种与逻辑格格不入的解脱感与成就感在作怪。不过另一方面,我认为这件事罗老师负有首要的责任,毕竟说到底,课程的第一责任人还是罗老师,不是我吐槽,在课程整体节奏这样的事情上需要指望着助教头子代替任课老师来想起来,本身就是一件离谱的事情,然后助教头子还忘了,等着并非直接责任人的周老师来紧急提醒,更是离天下之大谱。可事实是这样的超级离谱事就是这么离谱的方式发生了,所以一个离谱的结局也是必然的了,各种意义上的。

说到这个阶段的离谱,我也得展开说说。具体来说,因为准备的时间极短,为了不打乱预定的时间线,于是火急火燎上线了,导致学生视角下,前前后后的准备时间只有几天,学生需要在这几天时间内,完成紧急选题+商议,然后准备现场答辩,这必然会导致一些本该正常进行的事情变得更加仓促,以至于发育不良。原计划今年会深度在需求上做挖掘,可是经过这么一搞,有些组直接着急忙慌搞了一个题目出来,然后助教们看得也着急忙慌,也给后续的一些风波埋下了伏笔

在接下来就是正经的Alpha阶段了,在那个时候的视角下,一切看上去都是那么的正常。直到挺迟了,甚至已经木已成舟,才发现出了问题。这里主要说我视角下的三点吧:

  • 在助教团队协作部分,由于我本人对整体的工作节奏有一定的理解,所以定制了一个模板,让助教们按照这个模板来严格进行跟组记录。但是在实际的工作中,却发现这样的模板并没有想象的那样好用,多少还是繁琐了。以及另一方面,我总是在试图向他们解释为什么要按照这样的思路去记录,尝试去讲解思路,但是却没有考虑到实际上并没有那么多的人真的在乎做事情的思路,因此更合适的做法是,直接给出一个简单暴力而又明确的路线,让他们按图索骥即可,在我们的教育环境现状下更是如此。而对于真正比较有自己思考的助教,也欢迎一块讨论。这样才是一个真正比较落得了地的做事思路。
  • 学生团队部分,一部分因为上述的原因,也有一部分是因为经验不足所致,导致了一些关键的细节并没有被关注到。直接带来的后果就是,在评审阶段,没有一个足够客观且基于实际工作的评分依据可以参考,现场评分变成了展示大赛,谁更巧舌如簧更善于诡辩谁就能占据上风。当然了,我自己也有责任,总还是对一些事情抱有幻想因此不够决绝,导致更大的事情走向不归路。不过论根本原因的话,还是因为平时的工作没做足,没有足够的弹药储备,这其中不少储备还是受了潮打不着火的,以及在评审的规则上没有真正形成一个可依的法与之匹配,就造成了这个看脸说话的乱局。
  • 大众评审团部分,在成员初步到位后,看上去也是欣欣向荣,大家积极地找着现有系统的问题,其中一些还是大问题(真要上线的话妥妥翻车翻上热搜的级别)。我本人在这样的情况下没有做出足够清醒的判断,说到底还是技术至上论在作祟。所导致的结果就是,在最终的答辩环节,他们只能抛出技术问题,在其他地方毫无感觉和思考,甚至一定程度上一块成了被表演大赛忽悠住的人,即便有限的参与,也只是在当做一场高年级学长们举办的技术嘉年华来参加,并不能对课程起到比较实质性的作用。

在这个阶段,如果让我给以后的人提提建议的话,我认为最为关键的就是三件事:

  1. 有法可依——制定足够清楚严密的评审规则。制定的大纲,可以参考邹欣老师在构建之法最开始对软件工课程三个要点的论述,并以此展开。此外,制定的过程中也得考虑可操作性,以及这样的记录方式是否足以形成相对完整的证据链,以便作为后续的评判依据
  2. 做足工作——对平时的观察要到位。这看起来是一句废话,但是实际上我本人在这个阶段指导跟组工作的时候也并没有真的落到实处,即便有一个基于模板的跟组日志在。事后我对这件事的理解是,应该基于上一条所说的“法”,然后围绕这个来有的放矢的观察与沟通,这样才更能捕捉到真正有效的信息。你可能会有一个疑问,那既然这样的话学生会不会知道了我们的“法”?其实问题不大,只要我们的法制定的比较合理的话,实际上尽管学生知道了,我们挑不出来刺了,但是我们帮助学生学到真知识的目的也一样达成了,没毛病。
  3. 有法必依——在执行过程中严格按照之前制定的法来进行,并有条不紊地搬出之前做的调研准备内容。这里需要强调一点——我们要评判的是学生们任务完成的质量,是任务完成的质量,不是答辩的质量,答辩充其量算是一个学生视角下的补充叙述,不可以作为核心的考评。换言之,对各组的评判理论上没有答辩也应该可以进行,毕竟学生们做了什么做的咋样都是作为客观事实摆在那里的,不会因为答辩答得挺花哨就从一堆废纸变成值得裱起来的名画,而答辩环节则是一个双向的沟通环节,对评审者而言应该仅仅算是一个修正,毕竟单向的视角有时候的观察并不一定全面。

后期——Beta阶段与收尾

首先,在正式说这部分之前,不得不提到一个绕不过去的事情,那就是Alpha阶段的正式评分被拖了非常久的事情。这个事从我的视角来看是个误会,罗老师在Alpha阶段很早就公开了一个评分表,或者更准确的说是助教打分表,而且当时我问了一下往届的相关人士,便认为这个就是最终的Alpha阶段评分,便没再太多关注,直到后来比较迟了才意识到不对。这个事情上我有欠考虑之处。

接下来说说Beta阶段,整体来说在意识到了Alpha阶段的问题后(在那会以上的3点,有法可依、做足工作、有法必依,其实都意识到了,唯一略微差点意思的就是“如何有的放矢地做足工作”这件事,不过也没那么糟糕),进行了一波的改进。郑蕊老师因为事务繁忙暂停督促工作后,我便亲自开始组织对各次组会以及gitlab上工作的点评工作,并设置了登记表格来带动其他助教一起进行。这次还特别设置了“评审助教”这一概念,和原本的跟组助教错开。这里面有不少是周老师的建议和督促,实话实说,进步很大,不说别的,到了最终阶段的时候,能感觉到组里都对学生们的客观工作状态有了更加清楚的认识,这一点挺不错。

不过到了最后阶段,有一些奇妙的小插曲。周老师推荐了邹欣老师对于评分的一篇博客,并且要求按照这个来做。我个人基于Alpha阶段的真实情况,以及我们现有资源所能做到的评判进行了一个逻辑充分自洽的评估,认为其中的部分内容存在一些重合,需要进行调整后融入最后的规则框架中,并且我自己已经设计出来了合理的框架,且和周围几位进行了讨论,应该基本上有谱。但是周老师对此颇有微词,甚至一度陷入了僵持,以及周老师一如既往冷飒炫酷的作风,最终我本人还是不顾阻力坚持推进了自己的这套评审方式,我非常清楚代价是什么,但是我认为比起这个,把初心和独立思考的精神丢进马桶更要不得一些。在最终的评审阶段,这边还请来了当年一通参与OO改革,并且现在在商汤科技事业有成的牛雅哲大佬一块参与评审,也再一次邀请了评审团成员,他们这次也在合适的引导下,有了更多的看问题视角。最终的评审环节进行稳定,有序了很多,一切都在按照预期计划进行,并且最终结果也是可以很好的反映实际上的工作情况的。不管怎么样,结果已经说明了很多事情,虽然确实还有不足之处,但是预期的目标已经达到,可以勉强算是一次胜利吧(评审结果和评审表参考这里:2021北航敏捷软工Beta阶段评分与总结)。

此外还有一点,我本人针对《近取key》和《题士》两个组进行了一定的体验和调研,并且针对《近取key》组和团队内的一些成员,以及包含周老师在内的几位单词发烧友进行了讨论,最终形成了两篇深度测评文:

里面有一些个人对软件的见解,也有不少其他人智慧的结晶,私以为对于以后而言,还是有一些参考价值的,可以看看。

个人的总结

总结吧,这是必要的,哈哈。

首先,自己的贡献,大概也就是这些:

  • 实践了一次基于CI+评测的结对项目
  • 总结了一些出题和系统维护的经验
  • 更加完善了一些博客作业的细则
  • 在Alpha、Beta阶段上一些工作、评审的经验

无非也就是这些,也无风雨也无晴,我觉得没什么好说的,而且怕是说了也不会有机会被看到的,毕竟都是些荒唐言而已。当然,我相信真正感兴趣,真正有心的人,总会找到的,也总会知道的,这一点我充满信心。

接下来,说说自己在工作上存在的两个最明显问题:

  • 在前期,技术至上论明显,把基于系统的工作方法看做唯一,把基于技术实战的训练看成至高,对其他的软实力部分没有做到正视。这一点是技术较强的助教都容易陷入的误区,毕竟自己的道路往往就是依赖自己引以为豪的技术打开的,自然容易有路径依赖。
  • 在中期,缺乏亲自推动略微繁琐事务的经验、耐心和能力,讲解和分工弄不到点子上常常对牛弹琴,而且对于日常非技术性事务做不到足够的持续跟进。这一点同上,属于没了拐棍就不会走路的典型,而在以前的助教工作中,这些事情有老师和靠谱的左膀右臂帮我统统解决明白,于是也就被掩盖了过去,直到这次才真正的显露无遗,潮水一退那光着的腚蛋子立马露了出来。

从工作视角上来看,自己真的有很多的不足,有明显的路径依赖,且技术至上论明显。这一点随着后续的工作,也都有不同程度的改进,第一点到了后续已经明显很少了。不过到了后期,我本人还是开始出现了更多的问题,而且越来越跟不上,这个究其原因还是出在我自己身上,身体状态有问题,而且以前没有读书的习惯,思维有些封闭,此刻思维初步打开有明显的水土不服迹象,加之想得太多做得太少,于是很快就被扯向崩溃。这一点我自己背大锅,被胜利冲昏的头脑,自恋的心态,以及成也萧何败也萧何的路径依赖,都导致了这次后期个人精神和心态上的崩盘。这一点务必警醒,这也是对未来助教们,尤其是助教头子的一个警示吧,一个自己都玩不明白的人,很难真正的坐好这个位置,在治国平天下之前,还是得先修身齐家

最后关于软工课的指导思想上再扯一句,我知道有些人不爱听也不希望别人听到,但是我还得说出来。在软工教学中,技术至上论不可取,但是反技术至上论也一样不可取,不能不把技术当成唯一了,就把技术当成一文不值,也不能因为强调build to win就不管不顾课程的教育性质。在此处补充一下“反技术至上论”的定义——反技术至上论者未必是技术至下论者,但是他们一贯喜欢用技术以外范畴真实存在的问题,来彻底否认技术上工作的成果与价值,当然在现实的市场选择过程中这一定程度上是客观规律,比如“铱星计划”,而且也往往会成为这些人支持自己观点的论据,但是他们忘了这里是课程,给学习者正确而全面的价值观引导才是第一要务。因此“反技术至上论”实际上就和把一个不善言辞但是成绩极好的孩子叫做社会垃圾一样的荒唐,他们给出的理由往往是诸如“不会社交就什么都不行”、“不善言辞就是茶壶煮饺子”、“成绩不是唯一”,放在社会人的视角下,错了嘛?没说错,但是我想请问教育孩子有这么教育的吗?相比之下,告诉孩子他的成绩很优秀,要有自信,继续努力,但同时告诉他必须要努力改变内心的封闭,并且给予真心地支持而不是打压,才是正道——如果你的本意还是做好教育而不是诸如释放自己的傲慢、偏见与无知之类的别的什么东西的话。邹欣老师在《构建之法》中也明确提到了软工课的目标,想来认真阅读过的人应该记得,这里保险起见放一下:

让学生们通过理论学习和具体项目的练习,做到下面三点:

  1. 研发出符合用户需求的软件说明:要通过实际的工作收集、推导、提炼需求,并在软件发布后通过实际数据验证需求的确被满足了。需求来自于实际,而不是自己想象出来的“需求”或者人云亦云的需求(例如:图书馆管理系统)。
  2. 通过一定的软件流程,在预计的时间内发布“足够好”的软件说明:这个软件不是期末前两天由两三个同学熬通宵赶出来的急就章,而是经历了一定的软件流程,通过全体团队成员的努力,在一个学期内逐步完成的。
  3. 并通过数据和其他方式展现所开发的软件是可以维护和继续发展的说明:例如,对用户需求有详细的分析,包括对将来这类软件发展的趋势的分析。主要功能都有设计文档,源代码完整,有修改记录,并有最后版本。关键模块有可以执行的单元测试、压力测试脚本,等等。对于已知的bug和将来的工作都有详细的记录。能做到这三点,就是初步学会了软件工程。

这其中,需求很重要,排在第一位。不过另一方面,剩下的两条也是很关键的,而且都是和技术有着很直接的关系的。实际上对技术的定义也绝不是狭义的敲出能运行的代码就算完,也包含很多成体系的技术开发、维护方法,想让程序成为软件而不是躺在硬盘里还占地方的废物的话,这些都必不可少。技术在软工课必须有其一席之地,这是底线,不然软工课完全可以彻底的变成一个需求课,而做出来的东西如何则丝毫不重要,而且也会给一些基于需求的偏见以无止境蔓延的机会。以及,对于需求上已经走歪的团队,一方面应该在需求上不断把他们拉回来,另一方面,也得允许他们有在技术上充分证明自己的机会。当然了,评分得一分为二,对不着边际的需求必须否定,但是对优秀的技术以及技术实践方法,也应该被充分的肯定,并不矛盾。而在这其中,最重要的则是要有个平和的态度看待学生项目,一肯到底,或者一否到底,都是万万要不得的,我希望能有更多的人明白这一点,也希望手握锤子的人能不要看到什么都当做钉子想要去敲一敲,技术至上论者如此,反技术至上者亦是如此

更多的反思

在反思完我自己后,我认为也有必要对其他的方面同样进行反思,因为只有这样,才更有可能去还原多视角下的事件全貌,吴军老师在《信息论40讲》中提到的利用多路的正交信息进行交叉验证,就是这个道理。同样地,我也希望相应位置上的人,如果有一天能看到这里的话,能了解了解过去,思考思考未来,也算是我这些字没白敲。

作为助教

作为助教一员的话,首先我相信,能主动来这的人,应该没有谁是单纯怕苦怕累的。在这学期来看,前期有结对部分的大爆肝,中期后alpha阶段的长期跟组,后期也有beta阶段大量的深入讨论与跟组改进,这些都是需要花很多时间去做的,而你们不管咋说都坚持了下来,你们用你们的切身行动证明了自己的价值,你们也都是不可或缺的存在。

但是,我认为作为助教,想要“助”的话,光靠吃苦耐劳这一点显然是不够的。其中,有信仰自然是最好的,但是这个学期的工作让我明白,信仰可能是国内环境下最稀罕的东西之一,多说无益,懂的人自然懂,不懂的人说多了只会觉得我是在道德说教。

不过即便如此,我认为人还是应该有基本的理性与思考,比如先想想自己是为何而来——

  • 为了履历的一行字?
  • 为了一点点的零花钱?
  • 为了通过一次实践经历来提升自己?
  • 为了朴素的帮助他人愿望?
  • 为了大而长远的改变?

然后——

  • 如果你是为了履历,那就想想怎么让自己在被面试官问起来关于这行字的时候,能说出点不让面试官早已听得耳朵起茧子的事,让场面别那么尴尬;
  • 如果是为了那点零花钱,那就想想怎样让自己花这钱的时候心里可以最踏实;
  • 如果是为了提升自己,那就想想按照这样的做法,自己是否真的会和参与这次活动之前有所变化?如果有的话,是更好还是更坏了?如果确定是更好为主的话,那就想想这个好,是不是你所最需要的
  • 如果为了一个朴素的愿望,那就认真的想想你的愿望究竟怎样才能实现,以及认真观察现实是离你的愿望更近了还是更远了?这些事任何人都没法替你做出回答。
  • 而如果是最后一个的话,那就想想,你是否做到了忍辱负重,而后拼尽全力不留遗憾?还是说让廉价的道德感与牺牲感包裹了自己?然后一次次热泪盈眶再一次次毫无长进?

我想,这个要求,或许并不高吧。实际上不光作为助教,任何脑力和思维劳动的岗位,能做到这些,都是很不错的了。而能否做到这些,则是流水线熟练工人,和高水平工匠乃至创造者,之间的关键区别

作为助教头子

如果你惦记这个位子的话,那我可真得好好恭喜你——在眼下的大环境中,你所面对的是一个真正的漩涡中心、风口浪尖,你,做好准备了么

可千万别觉得这是在吓唬你,原因很简单——组里别的人可以浑浑噩噩,可以随波逐流,可以做一天和尚撞一天钟,但是,你坐在这个位子上,就意味着你承诺放弃这个选项,你需要全力撑起这个大局面——哪怕需要无数次熬夜,那么需要无数次和自己思想斗争,哪怕因为坚持自己的正义而成为千夫所指,哪怕因为全世界都疯了只有自己没疯而被送进精神病院扎电针,你都没有选择放弃的权利。你唯一应该做的,就是前进,不择手段的前进!向心中的正义前进!无论这个正义的代价是什么,必要时当作出一切所需的决定,哪怕曾经是老大哥——可是当人家轰鸣的坦克越过冰封的乌苏里主航道,即便墨绿色炮塔上象征信仰的红星依旧瞩目,你唯一的选择也是击毁,并歼灭所有来犯之敌,送他们到马克思面前忏悔;当人家宣称要外科手术式一劳永逸地肢解你,“深挖洞,广积粮,不称霸”,并做好全面战争的准备才是你正确的选择——如果你嘴里的信仰不只是一句用来酒后说疯话的谈资的话,那就不要让铁列克提事件在你眼皮子底下发生,更不要乖乖的让任何个人或团体控制你。

这一切,往往注定是要逆流而上的,也正是因为这件事并不容易做到,所以这才是你在这里的意义。这是一个苦差事,我明白的,在不流于平淡的前提下,在这样并不算乐观向上的大环境中熬过一学期很不容易。外在的辛劳还是其次的,内心无止境的焦郁、挣扎才会真正毁了一个人。因此我有个建议,在决定接下这个差事之间,一定要做好心理准备,这里的准备指的不只是知晓你所要面对什么,而是,养成自我修行的习惯——勤读书、勤运动、做规划、生活规律等,像是重构代码一样的,在开始之前先好好重构自己的身与心,然后在任职期间长期稳定的坚持下来,不说绝对的自律,但是最基本的自律底线应当内化于心外化于行。因为在这期间,你的痛苦与纠结,都会需要这些东西来帮你找回平衡,与自己的初心,越是要面对真正的高压与孤独,越是需要一些东西来填补内心的空白,而我认为,成体系的自律则是一个很好的选择。另外就是注意一定要成体系,切忌90后式养生——一边乱熬夜一边狂嗑褪黑素,一边胡吃海喝一边健身到受伤,一边听着各路大家的书一边却对触手可及的知识与思考熟视无睹,总而言之甭管干啥都要走心,这些都是教训,如果笔者能更早几个月想明白这些事情的话,那么也不会落到今天这样了。不过如果事已至此的话,那也不必再去为过去后悔,因为焉知非福呢,从个人的角度来看,一次彻底的精神摧毁,如果以后缓过劲了的话,可以让一个人看清很多事情和很多人,会收获感恩也会更懂人心,获得真正的成长。

我对未来的助教头子的建议就是这些了,关于具体事务的建议,可以去参考上面的章节,这里主要就说说自我修为的事情。因为我相信,这年头有胆子来接这口锅的人,即便再不济多少也该有点真本事,单纯的事务或技术问题并不足以成为瓶颈。也因为笔者自己已经用现身说法证明了,内心被摧毁远比外部的劳累要更加致命。我也明白,这样看起来风马牛不相及的建议,大部分后来者不会听得进去的,觉得我疯了在胡言乱语的人也估计不会少,这我都知道。能多开导一个算一个吧,也不求他们立刻听得进去,只求他们凝视深渊也被深渊凝视的时候,想起来有这么一个人和他唠叨过这些,并以此有点小小的启发,这就够了,有些事是自然规律使然,我很知足了。

最后再扯一点,要学会及时止损,要有打破现状的勇气。我知道这件事并没有说说那么容易,尤其是当你侬我侬之时更是如此,提出这种建议的人往往也不讨喜;况且人本质是社会动物,寻找同志这也是常见心态。但是,如果没有当断则断的勇气和能力,那么被不合时宜的人或事拖入泥潭,让自己白白痛苦而一无所获,则只是时间问题——其实,人真的没有那么容易被如此彻底地蒙在鼓里,而作为人类一员的你,该有的感受都会有的,多问问自己的内心,也要多想。别问我怎么知道的,也祝愿你们不要这么快地得以理解这句话的真正含义,哈哈,挺矛盾吧。

作为老师

老师这边嘛,我倒是觉得我最说不上来点啥,毕竟从工作责任,以及直接利益的视角来看,怎么看这件事我都没资格插嘴——毕竟这门课的直接负责人还是老师。但是虽然直接负责人十分明显,但是直接买单人还是学生,所以我认为还是有必要说两句。

我无意去做太多的指责,都过去了,但是恕我直言,我还是认为老师这边应该做到:

  • 真正在精神和行动上支棱起来——不说别的,选题准备那事,虽然我作为助教头子没有及时提醒,但是这件事论责任的话难道不该是老师分内应该首先想起来的么?哪管别的什么都不做要求,但作为一个工作者,对自己的工作有明确的规划,并且主动去一件件推进事务,这应该不过分吧
  • 解放思想,拥抱未来——实际上在现代思想、技术与实践经验的加持下,很多事情都是可以往更高的层次上发展的,甚至可以达成降维打击的效果。这些前沿的东西还是应该多去了解,并做更深入的思考
  • 不畏艰难,勇敢前进——我知道,上面这些话动动嘴巴碰碰牙齿很简单,但是真要去做的话,都得真枪实弹真金白银的投入,也需要很多人参与其中,进行多次的迭代才能前进。我相信,能作为一门实践课程的老师,一定多少还是爱着学生们的,只是,真的不要去畏惧改变,尤其是在软件工程这门学科上,每天都在发展,平稳就是意味着落后

大概就是这些吧,对老师这部分我真的能说的有限。

作为帮助者

关于这一点嘛,首先作为求生欲的体现,我需要说明我并不怀疑帮助者的根本动机,最起码我不认为作为成熟的社会商业人士,会有必要专盯着一群要钱没钱要本事也没本事的破落户学生们可劲薅羊毛,这哪怕在动机上也做不到自圆其说。假设这样的大前提成立,那么接下来的全部分析,也都是基于这个前提的

我经过走这么一遭,想明白了一个很重要的事情,那就是一个人的话语可以骗人,甚至一定程度上行为也会骗人,但是宏观意义上的行为,或者说行为的大方向以及态度,一定不会骗人。这里的骗人,很多时候也包括当事人自己在内,毕竟人真的是一种很善于自我催眠的动物。搁在古猿身上,那是一种机体上的自我保护机制,一切为了活下来;而搁在现代人类身上,那就是各种外表迷惑而又实质简单的行为——比如将自己的傲慢与偏见包装成他人的愚蠢,谁说不是谁就一样蠢;将三体第二部中太空舰队式的盲目乐观包装为勇气万岁,谁敢反对谁就是叛徒该被挂上绞刑架;将自己控制欲得不到满足的深层恐惧包装成他人的不识好歹,谁敢说不谁就是喂不熟的白眼狼;将自己的逃避于现实中表现在无关事务上的拼命忙碌,谁敢有疑问谁就是嫉贤妒能;一边对某历史时期有着心理阴影式的伤痕,一边自己却在干着和那会一模一样的事,还深得其中精髓,比只会喊口号抓五十万的小将们可精明得多,那会少了这样的斗争人才真是可了大惜,自己义正言辞靠着捕来的风捉来的影来审判别人叫做勇者必胜,闹得险些翻车但下次还敢人家什么感受关我屁事,然后别人对自己产生疑问,讨论太多了就叫做无知诋毁,坚决坚定不可饶恕;而且还很擅长扯一面更大的旗帜来压人,想象力还永远很丰富,从几个字几个符号就能解读出希伯来的整本旧约来,一旦被说破了那就承认个次要矛盾(比如一时糊涂)把主要矛盾掩盖过去,而事实是笔者曾经多次亲自去找正主电话沟通后,发现这根本就不是那么回事,可是人家作为举旗者早就听不进去了,哪怕是来自旗帜的话,每当我想起来,都会慨叹这面旗帜是何其的无辜……诸如此类的还有很多。是的,人在大方向和态度上永远是很诚实的,但是在小细节上却又可以极尽虚伪之能事,而且还能连自己一块骗,很神奇吧。正如某位圣母从来都不缺热泪盈眶,也从来不缺她自己口中的“人性”一般,反正自己横竖是赢家,要么吃上肉,要么“虽然饿死了但获得了自由”,多棒,我有过那么一纳秒还挺羡慕这心态呢。

我当然知道,我吐槽这些后,大概不识好歹的帽子就这辈子也别想摘下来了,毕竟人总是会对一些东西选择性失明,尤其是关于自己身上的东西,不仅失明,任何人都还不能说“瞎”、“盲”、“暗”,甚至说“亮”、“聪”、“明”也都是犯忌讳的。这挺正常,古时候的太监听到有人祝他“高升”,也都会气的直跳脚,骂人家天打雷劈不得好死,然而人家的本意是啥,以及他这句诅咒到底能不能使唤得动天上的雷公电母专程赶来劈了人家,那并不重要,自己眼下嗓门更大气焰更猛这才重要。而我就一臭写代码的,要资源没资源,要渠道没渠道,要人脉没人脉,肚子里只有一堆代码和赘肉,半两墨水都挤不出来,腰还没人家脖子粗,人微言轻得很,我也只能认命,如果雷云终不会散去的话那就干脆让暴风雨来的更猛烈些吧,我兀自在藏经阁继续扫我的地便是。不过呢,我倒是确实记得,有人多次的提到过一个叫做“诤友”的词,益者三友中友直友谅友多闻也囊括了这一宝贵的品质,因此我认为不管怎么说,也不管对方怎么做,对我自己而言还是应该最起码装装样子,显得对得起这个词一些,哪怕也只会有这么一次——我非常感谢这半年以及更久以来的陪伴,真的帮了大忙,让我也走上了一条全新的道路(文末也会再次提到这件事),这一点真的非常感谢(请原谅本睁眼瞎的词穷);在这其中,我知道我曾经因为不成熟,不懂事,坏的外在习惯于内在习惯,还有一些因为心理与精神问题产生的症状而给您带来了不少的麻烦与困惑,这些我表示深深的歉意与敬意,也很感谢您曾经那么多次的包容与付出,以及很多次的不抛弃与不放弃,我扪心自问过我自己,如果换做我的话,大概不会那么有耐心的;但是,如果您想在您所言的信仰里真正长远走出去,而不是继续多年原地踏步的话,那么请一定好好反思反思自己内在的态度,这至关重要——还记得《高效能人士的七个习惯》里面作者提到过,对待孩子要注意态度,应该是发自内心的相信与支持,而不是单纯拼命地用嘴鼓劲,因为孩子都能感觉得到,哪怕是很小的孩子,而一句接一句响亮却不走心的“你能行”、“你最棒”,砸在孩子的心头上带来的根本不会是真正的鼓励,而只是越积越多的压力与内疚——在您这里也是类似的,一个人深度的内心态度是怎样的,一时半会可能拿不准,但是久而久之都会察觉的,谁都不傻,谁也都终究会分清楚哪些人在正视自己,哪些人在温暖自己,以及哪些人在俯视自己,那脸色仿佛随时要从上下嘴唇间蹦出一句“你们是虫子”,而且微妙之处在于,这样的俯视姿态往往和外在意义上真材实料的帮助并不矛盾,而越是这样的实质上帮助精神上俯视,给被帮助者带来的可越不只是帮助,还会有更深的漩涡,甚至久而久之像是黑洞一样吞噬万物——因为他在接受者帮助,心怀着感恩,但是又得面对旷日持久的俯视,无穷无尽的强干涉,他试图过沟通与理性讨论,得到的却大多是充满傲慢的抨击,连讲理都很难做到。在这样扭曲的环境下,人只会越来越累,由内而外的那种累,直至最后的最后迎来一种名为解脱的崩塌,仿佛被国际刑警追得满世界乱窜、精神濒临崩溃的逃犯终有一日被警察抓住,可以好好吃口饭而不用担惊受怕了一般,哪怕这碗饭是硌嗓子的牢饭。弱小与无知不是生存的障碍,傲慢才是,傲慢者也注定难以留住真正有傲骨的人在身边,也会因此傲慢的沃土会越级越厚,傲慢也会越长越茂盛,最终形成一个满是瘴气却走不出去的密林。曾经的我也是如此,我自己闹出来过的那些笑话您也都是见证者,而究其原因的话,傲慢以及由此引发的自恋则是罪魁祸首。这些都不是中听的话,但是我始终记得您的那种耐心,也一定程度上感同身受,也正是如此所以我认为我也必须说出来,哪怕过去了这么久,但是总得有人去做这件事。我很清楚在表面繁荣的时代谈失败主义注定不讨喜,但是啥好听就说啥的话,那我与那傲慢的沃土有何异乎?况且您这样的成功人士,想来也不缺我这么一句奉承话。当然,如果您已经坚定不移地认为,但凡谁喊的不够大声谁就是反动派的话,那我也只能表示很遗憾了。

有一次,玻尔去苏联科学院访问。
有人问他:“请问您用了什么方法,把那么多有才华的青年都团结在了自己周围?”
玻尔笑着回答:“因为我不怕告诉年轻人我是傻瓜。

说实在的,我认为您是一个修为很深的人,饱读诗书也明白很多道理,最起码上面的那点些连我这臭写代码的都明白的道理您不可能不明白。且您显然并非不懂得处世之道,也很能拿捏好分寸,懂得自我反思,更懂得节制傲慢与自恋的心态,您迄今为止在事业上的成功已经毫无疑问证明了这些。只不过人是多面的,工作中冷酷决绝乃至不近人情的军人,和把家里的小公主宠上天的萌萌哒老爸也完全可以是同一个人。容我合理的猜测一下,您在这样的一个特殊环境中,坐拥极为优厚的资源,也拥有不低的话语权,以及自己通过大量读书与实践积累下来的对人和事的理解,这些都很好,因为事情的推进少不了这些,但是却由此带来了言路的闭塞,让家长制作风早已成为多年的常态。这其实并不怪你,因为真正的当事人群往往心照不宣地划水,或者有积极的心但是技术理解或思想性不够,因而也没有人太多能让您在思想上进行非降维打击式的硬碰硬,您也必须去主动出击各路推进,不然事情的运转就会打很大的折扣,您形成这样的习惯确实有很充分的环境必要性。于是到了这届因为队伍配置和全新环境的问题,出现了水土不服,而究其原因的话,其实也和《三体》第二部中的一个例子很像,在书里面,当人类全部太空舰队被一发水滴串成了串后,主角之一罗辑很快就被世人捧成了救世主,无数人前赴后继来下跪朝拜吻鞋尖,可是当人们渐渐发现罗辑似乎不能一发咒语拯救世界的时候,态度立马一百八十度转弯,被扔石头被赶出小区,坐个车都被人赶下来,连正常人的待遇与尊严都不配有。仔细想想,全过程中,罗辑可有过哪怕一次以救世主自居了?然而事实是,人们不由分说便对罗辑套上了名为期待的锁链,而后但凡和这个期待不符,就将其贬为十恶不赦的大罪人,牵着当初套上的锁链嚷嚷着要把他五马分尸。哪怕真要比一比的话,只怕罗辑为人类操的心出的力做出的贡献比任何一个“正义使者”都要多得多,但是客观事实早已不重要,所谓的面壁者也根本不是什么救世主,只不过是个背负此世全部之恶的背锅侠,好让人类能在毁灭前稍微心安理得那么一点点——“我要死了,但我也是受害者啊,都怪这个叫罗辑的狗杂种没能拯救全世界,我恨他我恨他我恨他啊啊啊啊恨恨恨恨恨恨恨恨恨!”。类似的还有,一位救死扶伤一生的医生,如果晚年做了一些糊涂事,那他这辈子所有的善行都会被认为是伪善,都是在为了这辈子唯一一件错事打掩护做准备,此等极尽虚伪之徒必须下油锅煎炒烹炸,然后把焦尸插上牌子挂在天桥上示众;而一个杀生无数的屠夫,只要放下屠刀便可立地成佛,过去的所有血债都只是因为无知与迷失,统统可以被理解、包容然后既往不咎,大家都要向这位迷途知返的圣徒致以最崇高的敬意——我呸!恶心的普世价值观!想想荒唐不?荒唐与否我不知道,但是绝对很真实。而在现实中,这个读作罗辑写作笔者的人,还处在成长期,确实有一点小本事和见解但是也远没到一己之力翻盘的程度,但是却被抱有了过高的期待(当然,这里我自己也有不可推卸的责任,那就是被先前的胜利冲昏了头脑,对自己没有足够客观的评价,导致活在梦里),也是基于这一前提,破天荒地收获到了您的平视,而这位罗辑居然没有成为那个绝对的改变者,然后又整天这个要求那个想法的,还默默叨叨竟说那不中听的片汤话,想来真的是可恶极了,打入冷宫并踩上一万只脚才配得上这个不识好歹的渣滓,哪怕退一万步说,他做的最起码没有更差,客观上的前进也可以列出不少。这有啥招呢,这就是人性,我本来还很百思不得其解,但是直到我疯病渐渐好了后,读了更多的心理书,然后读了大刘的书发现人类非但不感谢还要审判罗辑后,更会恐惧每一个面相凶悍却靠谱的执剑人竞选者,而宁可去选择一个代表爱与正义然后真要动真格的时候立马尿裤子的圣母时,我就懂了,也释然了,因为和罗辑、几位毅然踏上不归路的面壁人,以及来自公元世纪的地球抵抗军领袖们比起来,我背负的这点责任简直小到忽略不计,而且结局也比他们幸运了太多。其实这些都好理解,很多时候人的心态就是环境塑造的,再难理解的东西只要站在进化与动物属性的视角来看就都可以解释,而且在一定环境中形成的心态不可避免的具有惯性,而一旦在惯性系中试图打破平衡,矫枉过正是大概率事件,就像为地球环境生存而设计的人类,如果长期生活在太空,会很容易骨质疏松,返回地面时甚至需要从里面给抬出来一样。但是如果能意识到这里面可能出现了问题的话,那就应该好好反思并做出调整,走出舒适区,才是正道,这也是您当年开导过我的,我还记得并时刻提醒自己,希望您也能如此。我相信您,我也依然愿意相信,有善于自省的您在,一切都会好起来的,冰总有一天会化成水的。

鸣谢

在这里,我集中感谢一下:

  • 本学期全体同学,以及全体项目小组对课程组工作的支持与信任
  • 【近取Key】、【题士】等项目组不屈不挠地展开交流,并以认真的态度对待团队项目的工程环节,不管你们是否承认,这些讨论都让双方受益匪浅
  • 在本学期过程中参与到项目讨论的“典型用户”,包括典型用户小华、郑蕊、娄老师、杨老师,以及他们的用心体验与记录
  • 邹欣老师对本学期软工课城的持续关注和点评,以及在资源上的支持,以及数次直接的讨论
  • 范飞龙博士在选题阶段的现场参与,以及对本学期助教团队工作的关注与建议
  • 周筠老师对项目相关问题、助教团队工作问题上的持续关注与思考,对之前不少博客的细致编辑,以及在整个学期对学生们的直接投入
  • 周筠老师对我个人而言的费心照顾以及倾心付出,真的非常非常感谢,毫不留情地指出了我存在的问题,也让我在思维层面上发生了真正的进化,尽管后来的过程相当拧巴,不过种子已经埋下,即便度过一个寒冬,也终会在春天发出属于自己的芽,开出自己的花,非常感谢遇到您
  • 吴际老师对于软工课的一些重要建议,以及在后期对我本人的关心与照顾
  • 各位助教(刘阳、刘紫涵、韩滏婧、胡绪佩、赵博名、刘取齐、刘干)大半个学期下来对所负责小组的持续关注与指导
  • 助教周雨飞、刘阳、刘干在一些核心问题上的集中讨论,贡献了相当多的关键意见
  • 大众评审团的各位同学对项目的积极体验与思考

真的非常感谢大家,每一次这样的合作实际上都是一次奇迹,这么多人的力量才能完成一件了不起的事业!

没用的瞎逼叨

关于学院的事

关于学院嘛,有些事情由来已久了,有些话我也早就想说了。我呢,可预见的未来也不会和STAR助教团队再有任何瓜葛,因此有些话我经历了漫长的思考沉淀过程,也终于可以直接说出来了。我希望看到这段的本科在读学生,可以认清形势放弃幻想,然后好好的做回自己;也希望看到这段的有关领导和部门,能够认真的思考一下学院的未来

考虑到读者们宝贵的时间,所以先说结论——现在的计算机学院本科已经被内卷给彻底充满了,并且我敢断言,如果不尽快改变这一氛围的话,我们学院的本科教育质量迟早得毁在这上,这一过程并不是靠一个或几个引以为豪的硬核课程所能逆转的

我本人,作为一个本科阶段在北航计算机学院就读,体验过完整的专业课教学流程,担任过本科OO助教头子、高阶助教,并在研究生阶段再次担任了敏捷软工助教。也见证了学院的过去、现在和未来。请容我对学院的各届学生们做一个纪元式的划分:

  • 直升纪元,包含2013-2016届本科生(即2013-2016年入学的本科生,学号为1306-1606开头,06是六系的编号),这些学生都是通过高考直接进入的计算机学院,并且从大一到大四接受的都是计算机学院成体系的本科教育。
  • 大类纪元,包含2017-*届本科生(即2017年及以后入学的本科生,学号为1737、1837、1937等,37是大类编号,这个从大类来的学号会伴随他们本科四年;因此2017年可以称为大类纪元元年,2017级本科生也可以叫做大类元年学生),这些学生都是通过大类招生进入的北航,在信息大类中接受来自计算机、软工、电子等多专业的混合教学一年后,通过考试成绩爬进了计算系这个大热门专业,然后大二到大四接受的是计算机学院的本科教育。
  • 另外,对于太过久远的学生,例如2012年及以前的那些,由于本人接触的相对有限,而且当时的社会发展等外部因素也和现在有较大差异(毕竟从大部分成年人用上手机到现在也不过十几年时间),故在此不作讨论。

然后,容我描述一下,在我的视角下,直升纪元的学生们,和大类纪元元年,以及大类纪元二年及以后的学生们的区别吧:

  • 学期初选课的时候
优先选有意义或有趣的课 优先选给分高的课 优先选水课
直升纪元 数量不算多,但是也有相当的数量,而且他们内部也能形成一个同好圈子。 确实存在一些人对分数极为看重,不过并不占主流 数量较多,毕竟轻松又有学分,喜欢这个可以理解。
大类纪元元年 数量还算有一些,不过已经明显少了,而且这些人普遍有脱离院内主流学生圈子的倾向。 数量激增,大部分人选课首先看给分如何,甚至于其他的一概不重要也不关心 数量也有一些,不过大多是他们口中已经“保研弃疗”的那类人。
大类二年及以后 很难再找到了,即便有个把这样的人,也统统会被视为异类,而当他们尝试为自己的利益发声时则会被几乎所有人一致声讨。 几乎成为全部,因此在选课阶段就已经硝烟味十足了,气氛可能比直升纪元的考期还紧张,而对于没选上他们口中“好课”的人便仿佛明天太阳升不起来一般,即便课程还没开始。 和大类纪元元年情况类似,只不过因为更多的人(包括明显实力不济的那些)被卷入了疯狂中,所以数量更少了。
  • 在上课期间
质疑课程的方式 课程讨论的态度 对其余内容的态度
直升纪元 质疑的主要是课程的模式和规则,而质疑的动机在于课程规则的不合理导致学习时效率低下,说白了就是费力气还学不到东西。对于这一点可以去看关于OO的博客和知乎回答,直升纪元的学生这一特点十分明显。当觉得内容太难的时候,他们会说——“这东西为什么要做到这样,对现实工作来说有何意义?” 课程讨论区十分活跃,还记得当时计组的讨论区,甚至颇有种大家齐心协力攻克关键技术难题的感觉;即便是直升纪元年间被吐槽最厉害的OO,讨论区也是很有干货内容的,而且并不会出现一个内容来回发的情况。 对于一些和课程考核关系不那么紧密的内容,有相当一部分人还是会感兴趣,并且去弄一下的,不过也不会勉强,感觉推不动也就放弃了;而对于推得动的那些人则并不介意花点时间做点有趣的事,也从来不乏求知欲
大类纪元元年 一部分的质疑是基于以前人对规则的质疑,然后他们质疑我也质疑,或者稍微高级点,找个道德至高点再来质疑;而更多的一部分人则是极度在乎分数给的合不合理,公不公平,更准确的说是符不符合他们认为的公平,只要与他们期望不符就会意见很大,甚至传闻出现过围堵任课老师的情况。 课程讨论区也有一定活跃度,但是风格和以往不再一样了——这届学生中只有少数人依然抱有研究问题的心态在讨论;而更多的人则是在赚热度,因为听说讨论区大佬有一定加分,也是因此,日常出现诸如“关于XXX(一个很抽象很大的范畴)的讨论,都进来看看吧”,或者将从某个博客上摘来的内容洗个稿丢过来,还有过同一个内容被几个人洗到讨论区的荒唐情况。 很少有人关注这个部分,关注的人基本上就是那群讨论区认真非功利性讨论的人。其他人对这部分完全不关心。
大类二年及以后 与元年类似,这一情况在进一步加剧,而且为了分数什么都不顾的吃相越来越难看,也越来越不加遮掩。计组和OO方面的难度在一降再降,但是他们依然义正言辞觉得太难,而且辩驳的理由往往是——“性价比太低了,我要花那么多时间才能得到分数,你们耽误我人生耽误我保研了” 课程讨论区彻底变样了,而且最离奇的是,看了几届学生讨论出来的内容,感觉他们仿佛像是那三体人一样有记忆遗传天赋,说的内容都没什么不同,而且会有一个早就说烂了的内容被同时几个人开楼,而且时间间隔极短简直像是在抢跑一般。显然,这里也沦陷了。 说这个问题基本上没什么人会有响应,取而代之的是那种一看就忘不了的麻木眼神,甚至连竞赛生们也大多不例外。当提到新知识的时候,他们想到的并不是去捯饬乐子,而是嫌弃着这些东西换不来分数,然后束之高阁。

以上就是表面上的一个对比,我相信,任何一个站在高处亲眼目睹这些的人,都不会没有感触的,况且,我们还是从光明时代走来的人,步入黑暗后,也做不到像生于黑夜的人们一样,对黑暗习以为常。其实这些问题,我仔细地想过,并且和身边几个同届或更早的直升纪元人们一块交换过意见,不难发现,祸根早就已经埋下了——

直升纪元人 大类纪元人
填报志愿 填报志愿的时候,看到的是计算机专业和其他的各个专业,而且大家都知道计算机热门,分数线低不了,因此选择起来往往会更慎重一些。思来想去翻来覆去后,终于下定了决心,学这个专业,并接受挑战。 填报志愿的时候,看到的是信息大类和其他的大类,而且众所周知,信息大类包含计算机这样一个超级无敌皇帝至尊热门专业。而我,我是谁啊,班里学校里的尖子生,没准还是清华北大的落榜生,我这么厉害进去后计算机那非我莫属啊,当然选信息大类了。
大一 大一的阶段比较轻松,很多的入门课,也有很多开放性讨论的课,从中开阔了不少视野,也得到了一些基础的锻炼,自己在计算机专业领域与其他方面的兴趣、爱好、天分也已经初步展现,或许并不够完善但是多少为接下来的发展奠定了基础,更重要的是完成了一次思想转变,从高中生式的唯成绩论到成年人的多元世界论的初步转变 大一了,进门了,还有不到一年就要分大类了,我能不能进计算机专业全靠这个了。于是大一需要拼了命的考高分,什么都不要管,什么可能低分的课都不要选,别人花一个通宵写一个一万字大文章,那我就花三个通宵写三万字,永远不怕累,就怕分数没人家高。但是分数高了有啥用我不知道,但是分专业这个少不了。于是就又当了一年的高四学生,竞赛生也概莫能外。而其中,如果成功进入了计算机专业,那么这些高四学生中的胜利者只怕各个是拿分的专家,以及,毫无疑问地,对高中生式的唯成绩论更加深信不疑
大二大三 到了大二,硬核课终于来了,我可能被轰炸的很惨,不过我并不担心,因为我知道这世上并不只有保研是唯一的活路,也并不是只有敲代码才能吃上饭,更何况这才刚开始,谁说过我不能绝地反击了;也可能顺风顺水或者越挫越勇,也正是这份不断积累的勇气,以及不断被进一步激活的求知欲,于是从某天开始,我不再需要课程的推动,自己就会开始研究自己感兴趣的课题,开始走上自己真正的发展之路,越做越强。而对于保研,需要才去保,不必强求,工作也是很好的,只要有真本事在哪里都能展现我的价值。 终于熬出头了,不过不能休息,马上就要保研了,只有两年不到了你就不着急吗?所以赶紧拼命拿分啊,其他事情通通与我无关,我学习的也就是个多目标优化(这是我从某大佬嘴里听到的原话,说的那叫一个理所当然),得想尽办法像是线性规划那样的拿到最高的整体加权平均分呢。而你们居然还想着让我学更多的,凭什么?打工人会因为老板画大饼就梭哈进去么?那我凭什么为了知识而继续学习呢?还是谈点实际的吧,给我分数,100那种,95都是很低的分了老子我看不上。什么?你还让我学知识,你这是谋财害命,我要是保研都保不上了这辈子我就毁了!!!什么?保研有啥用?还tm有啥用,就是有用啊,你高考怎么不想想有没有用?
大四 保研之类的尘埃落定了,对没保研的人而言自己的着落也大抵有眉目了。总而言之,可预见未来内的路线是清楚得了,所以,在哪里努力也就显而易见了。启航!前进!我们的征途是星辰大海! 保研成功:终于上岸了,接下来得赶紧搜集研究生阶段的信息,赶紧准备好作业到时候好拿高分(别笑,真事,这位准研究生还想着研究生阶段继续靠内卷拿下各种奖学金和机会,向我寻求资料和拿分攻略,当我告诉他研究生阶段根本不干这些事的时候他直接“。。。”,然后把我拉黑了)
保研失败:我的人生真的好失败啊,好贫瘠啊,以后没有希望了,注定就是个到厂里被榨成甘蔗渣的命,麻了,都麻了,都怪这个世界,都怪资本家,都怪老师,都怪助教,都怪学院,都怪那些内卷卷赢了我的同学,我要上知乎上微博骂死他们,输了里子不能输面子(近几年我在知乎上看到的无脑喷帖子,有相当一部分是上完课多年回来返场乱喷的,而且虽然匿名但是从时间点上来推断就是这茬人)。

这算是一个很真实的写照了,换言之——大类纪元的学生们,在大一这个本该形成新型价值观和世界观的时候,就已经走歪了,本来应该用多元世界观来取代高中的分数世界观,可是现在的大类选出的这些胜利者,只会更加的坚信高中的做事方式,路径依赖进一步加强,然后再加上后续的保研等环节,这下好了,这辈子都在追一个自己都不知道为什么要追的东西,追到了也没感觉,追不到天就塌了。他们注定难以做到像是直升纪元人一样,经过锤炼后形成一个自驱动,并以此启航,他们只活在一个名为“内卷”的桎梏中,而这一切本来都可以避免。我知道,说到这里肯定有人会拿出现在社会的整体内卷、焦虑趋势来说事,可是但凡真正了解学校内这个生态的人,都该明白,这些还真就不是注定的,而是被一个名为“信息大类”且号称可以吃出“计算机专业”硬币的大饼给包装起来,然后通过一轮一轮不合时宜的选拔所共同促成的。

上面这些事情,所带来的直接后果就是,看起来这些人分数一个比一个厉害,成绩单一个比一个亮眼,但是动真格的能力越来越差,非但彻底没有build to win的思维,甚至连稍微硬核一些的演习都没有耐心去做下去——只要没有给足够的加分的话。而我还记得,我们高院长在我大一还是大二的那会,引以为豪的说过我们学院之所以能如此强大,能超过不少比我们学校更出名学校的计算机专业,靠的就是这个硬核劲,从这里走出去的毕业生,没有弱者,都是召之即来来之即站战之能胜的精英。而现在,硬核劲正在渐渐地被内卷环境消磨殆尽,取而代之的精致利己不断蔓延,乃至于大有成为主流的架势;学生们的求知欲也在不算降低,取而代之的是对待真知识真技能的麻木。我不知道有关人士是如何看待这一现象的,是不是觉得,将猛虎关进躺不下来的笼子,再拔掉爪牙,然后将其驯化成只会张开流血的嘴喵喵叫的大猫咪,并忘记自己本该属于森林,应该傲立百兽之间,是一种文明的进步。如果是这样认为的话,那未免就太悲哀了。

好了,我的分析到此为止,现在的形势也很清楚了。因此,对不同的角色,我想分别说句话:

  • 对于有关人士和领导,我希望你们能了解到这一情况,并明白这一情况最终会带来的长远后果。然后,低头看看自己胸上别着的那面红旗,再好好想想它象征着什么,该做点什么已经很显然了——如果你们还有初心的话。
  • 对于现在还在就读的本科生,或者也可以叫做大类纪元人,我希望你们能靠自己的力量,将自己缺的这一课补上——具体来说,就是让自己的思维完成一次进化,解放思想,停止这种盲目的追逐与追赶,而多想想自己到底要什么。人生的选择有很多,人生的路有很长,能认识到这一点,本就是真正成为成年人的第一课——如果你确实并不喜欢现状,并想要改变的话。
  • 对于现在或即将担任助教的人员,我希望你们慎重考虑,因为你们面对的就是这样一大片盐碱地,一个麻木成为主流,劣币驱逐良币的大环境,如果你要坚持自己的初心和原则的话,那就要做好付出对应代价的准备——如果你觉得你的信仰会让你感到值得如此的话。

言尽于此,不望海涵。

关于提问的事

这部分的话,说一个小细节。

我印象中,在软工课有个提问环节,需要阅读构建之法然后提5-10个问题。于是乎,我每年都能看到针对GOTO语句的质疑,而且基本上都是再说自己的老师课上说不要用GOTO,但是书里却在提倡用GOTO,有些还说的挺声泪俱下的。

来来来,我今天就来给你们找找,邹欣老师原话是怎么讲的。

函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto,如代码清单4-2所示。

HRESULT  HrDoSomething(int parameter) 
{ 
    //parameter check and initialization 
    //processing part1 
    If (SomeCode() != ok) 
    { 
        //set HR value 
        Goto Error;  
    } 
    //processing part1 
    If (SomeCode() != ok) 
    { 
        //set HR value 
        Goto Error;  
    } 
Error: 
    //clean up 
    return hr;  
} 

就这么个玩意,人家根本上说的是——语法是为了提高程序质量服务的,GOTO也不例外,而且还给了一个比较完善的GOTO具体使用实践,可是被你们一个个的读成了什么?揪住了一句“可以使用goto”就来开始提问,说实在的,水平忒低了点。

这里面,往深层思考的话,问题有很多,不只是个别人读书不走心这么简单。因此呢,我认真的感觉,以后或许该把这个作为一个软工课提问整体质量的考评,什么时候这种低质量GOTO提问少了,才说明真的有进步了,我指的是,课程组有进步了

当然,也并不是说这个问题该成为禁区,你们可以看看一个比较有水平一些的关于GOTO的提问:【软工】第1次阅读作业。这是我们这届一个人的提问

在阅读了博客1博客2后,总结出goto的优缺点和结论大致如下:

  • 缺点:GOTO语句使程序的静态结构和动态结构不一致,从而使程序结构不清晰,难理解,难查错。去掉GOTO语句后,可直接从程序结构上反映程序运行的过程,不仅使程序结构清晰,便于理解,便于查错,而且也有利于程序的正确性证明。
  • 优点:使用起来比较灵活;有些情形能提高程序的效率。若完全删去GOTO语句,有些情形反而会使程序过于复杂,增加一些不必要的计算量。
  • 结论:不加限制地使用GOTO语句,特别是使用往回跳的GOTO语句,会使程序结构难于理解,在这种情形,应尽量避免使用GOTO语句。但在另外一些情况下,为了提高程序的效率,同时又不至于破坏程序的良好结构,有控制地使用一些GOTO语句也是必要的。
    至于作者提到的“函数最好有单一的出口,为了达到这一目的,可以使用goto”,这篇简短的博客给出了单出口函数的两种代码结构,一种是使用goto,另一种是使用do while(0)和break。本人觉得更偏好goto语句来实现。(毕竟虽然写高级语言时没用过goto,但是写汇编语音时对goto已经比较接受了)
    私以为作者可以在书中对goto语句多做些说明,毕竟可能有一大波人学C的时候也跟我一样没太弄懂。“既然课本说别用goto,那我不用就是了”。

这样的提问,有对问题本身的分析,也有对作者表意的到位分析,而且给出了实打实的建议,这样的提问才是真正应该有的样子。

关于思考的事

这一段,没啥干货,纯属意识流的瞎掰扯。

人和人其实经常会有一些思想的碰撞,尤其是在具有独立思考能力和意识的人之间更是如此(当然,也包括一些仅仅只是号称如此的人)。讨论在很多时候的一个直接目的在于解决问题,这类讨论我们称之为功利性的讨论(注意不要把功利当成贬义词,这本来是个中性词,功利主义也是一个自成体系的学说);而另一类讨论仅仅只是互相交换看法,让自己的视野拓宽,或者完善自己元认知层级上的不足之处,这类思考则可以称为纯粹性的思考。

然而在现实中,人与人之间还有一种交换形式,那就是手段,比如去打点一下有关人士,比如去吹吹风,或者干一些不足为外人道也的事情,来达成目的。这一类的交换其实往往和功利性是脱不开干系的,毕竟这世上掉脑袋的钱总有人敢赚,可是没利益的事却从不会有人做(利益不局限于功名利禄,自我价值的实现,找刺激,甚至自我感动,也是一种广义的利益),这也是我做OO学生期间想明白的一个很重要的事。

而我觉得吧,讨论,就让其尽量纯粹一些。手段可不可以玩,当然可以,但是这样的手段换来的不可能是其他人真正的意见,而是一个你自己求仁得仁的结果罢了;而讨论的前提,则是意见的交换,以实现群体思维的升级。因此,如果你还在乎得到更好的碰撞火花的话,就请在讨论的时候,让其纯粹些,不要将手段掺杂进来,更不要一言不合互戴帽子。而如果想要强力推动一件事,那其实可以更痛快些,或者干脆摆出两条桌子来谈判。这两种无论哪个,都很正常,而且都比遮遮掩掩欲迎还拒然后一点就炸来的更令人舒服也更有效率

关于未来的事

首先,我得说一件我认为必须要说的事情——为什么这个总结博客咕咕了这么久?

其实这件事大部分还是赖我自己,在课程后期,我陷入了相当严重的自我怀疑,甚至说是这辈子最严重的一次也不为过,因为我发现了一个可怕的事实——原来自己没了拐棍,就是个只能在地上爬成一堆的八爪鱼。然后,同时又处在开民智的阶段,读了不少书,有了新的实践,而且在短期内大量爆发,正处在消化不良的阶段,于是导致思维开始越发的走火入魔,最终出了大问题。这个暑假真的过的很艰难,陷入这种心理与精神的错乱折磨中真的宛如地狱,再加上由此引发的生理性疾病,以至于我有段时间,每天都很害怕日落,也整晚的不敢睡觉——因为我真的不知道我还能不能看到下一次日出,我总感觉那就是我自己的日落,直到盯着窗外到太阳升起来,方才放心。等到自己好了之后,都容易会有一种仿佛已经到了来生的感觉。

当然,在事情完全恶化之前,我也并不是没有开始写总结,写过好多的版本,只是每次,过几天再来看,就觉得真的可以说是a piece of shit,满满的黑色废料,大部分看着辣眼直接删了,现在还能找到的有这些版本

其实也很正常,一方面自己内心和精神还不够稳定,人在垮塌状态下真的是战斗力为0,彻彻底底的0。然而另一方面,即便在稍微好转后,我也发现,有些问题看似想清楚了,实际并不是,这里面包括课程工作上的问题,也包括人际上的问题。于是乎,写博客就成了一个思想迭代的大熔炉,打了熔,熔了打,才形成了最后这个版本。

现在,我本人已经基本回复正常,哈哈。想起来暑假那段时间,真的是又好气又好笑,感觉自己像是一个在垃圾堆里找玩具的小屁孩,找着了一个挺圆溜还带个环的铁片子,却不料是罐头上揭开的盖子,于是被划伤了手再哇哇大哭寻死觅活一样,特有趣。总之就是感觉,生命中的一切执念(包括某件曾经一提到就要死要活的事情),一切事务,仿佛都变小了,而自己仿佛处在了一个尺度更大的宇宙里,太多的事情不过是过眼云烟,而真正吹尽狂沙后露出来的,才是你心里的真金。不过再想想,对个人而言,哪一次的灾难在回头看过去的时候,不是这样子的呢?而人又是个天生的贱胚子,不到痛苦处,往往不容易真正的去深度思考万物。因此,没能把孙悟空烧成灰的炼丹炉,让孙悟空获得了火眼金睛;没能杀死新兵蛋子的斯大林格勒,都将让其变成强大的老兵;没有杀死我的,也终将使我更加强大

排除这些打气的话,实际上我的内心收获有很多。比如在半疯半醒的时候,想出了不少开源项目上的新点子,有些还是做梦的时候想出来的(然后醒来为了怕忘了还得赶紧找纸写下来);在个人心理建设方面,我后来看了不少的书,什么都看,也不再强迫自己一定直接要读最高级的名著,而是找适合自己现阶段段位的,比如刘慈欣的《三体》、《球闪》、《全频带》、《流浪地球》等一系列作品,还有戴季陶的《日本论》等讲历史的,然后就是得到上武志红老师的心理学内容(这个建议部分内容辩证看待)。我现在感觉嘛,读书这事,和代码一样,急不得,得慢慢来,而在读小说的时候,一定要注意自己到底能不能沉浸其中,还是说人家主播的声音从左耳朵进,在脑壳里绕场一周后直接就从右耳朵出去了。比如,在《全频带》里,当美国大兵对着林云少校摆出那一套伪善说辞的时候,我还记得我一下子扯下了脖子上的蓝牙耳机,直接摔在了地上并狂飚了一大串美丽的国骂后,周围人惊诧的眼神(当然,我这个有点暴力了,如果可以的话建议还是收敛点)。只有当你能真正进入那个世界的时候,你才会有对这个虚拟世界进行深度思考的基础,读书也才有了意义。而进入虚拟世界的能力并非人人天生都有,是需要后天锻炼的,而比较适合的入门锻炼方式,则是找一个对自己路子的小说开始读或者听,然后慢慢扩大兴趣面,越读越多,也越想越深。

除了上面这些具体的实用技能之外(其实也并非全都写了进来,有些以后慢慢说),我认为我自己得到的最重要的一条心得是——对待事业,要专注,但同时又必须能够超然其上。前者不难理解,各路成功学大师们早就说烂了,而且也确实是金道理,但是后者往往很容易被忽略,结果导致当事业受挫,或者大厦将倾之时,人会直接成为自己事业的奴隶,在痛苦中被颠勺一般地甩来甩去。因此,对待事业应该有个超然的心,换言之——事业的本质也是为自己服务的,而不应该是反过来;应该是让事业、信仰来给自己提供价值感与人生追求,而不是这辈子都是为了某件事,或者是某个信仰而活着。只有这样,人才能做到在该倾力付出的时候,做到不留遗憾,也能在该做出选择的时候,做到当断则断,不至于成为信仰、付出与牺牲的奴隶。

我只想向你指出,自我牺牲是压倒一切的情感,连淫欲和饥饿跟它比较起来都微不足道了。它使人对自己人格作出最高评价,驱使人走向毁灭。对象是什么人,毫无关系;值得也可以,不值得也可以。没有一种酒这样令人陶醉,没有一种爱这样摧毁人,没有一种罪恶使人这样抵御不了。当他牺牲自己时,人一瞬间变得比上帝更伟大了,因为上帝是无限和万能的,他怎么能牺牲自己?他顶多只能牺牲自己唯一的儿子。
——毛姆《刀锋》

好了,我自己现在已经是好好的了,这些事情我也并不想说的太多,我相信能懂的人都能懂。我自己的话,未来是打算读博,目的极为单纯,因为我发现自己在技术上的修炼正在遇到瓶颈,而这个瓶颈正是自己思维上的桎梏所导致的,而解药正是学术思维。而在其他方面,经历了如此漫长的一个寒冬后,春天也终究到来了,我也会做更多的各类探索,会在公众号、博客园和知乎上写一些自己的内容(技术内容知乎、博客园见,非技术内容公众号见),记录下自己的成长历程,让自己时刻保持自省,也给真正有意跳出舒适区的后辈们,一个示范和表率。这些都是某位很成功,也曾经让我很钦佩的人教会我的,现在我认为我是时候教会我的后辈们了。

就是这样,自然选择,前进四!