【来信】

  我是一名普通一本的大一计算机学生。目前,我们可以接触到四个方向的实验室:ACM集训队(程序设计)、CTF大赛(网络安全)、电子设计大赛(嵌入式)、VR仿真虚拟现实。我深知大学低年级基础知识的重要,所以原计划是大一大二以ACM训练为主,训练算法和编程能力为目的,而获大奖为其次(我不想一路走下去变成钻研学术,目前希望以就业为目标)。同时,ACM集训队是我们计算机学院的副院长带头,所以他大力鼓动我们搞ACM。学院水平是最高拿过亚洲银奖,有保送清华的,有获得微软亚洲研究院实习的。网络安全实验室耳闻略少。

  然而,学院让我们现在大一就确定参加某个实验室的培训,这让我非常纠结。因为,去年十月我参加过360主办的ISC中国互联网安全大会,感觉对这个方向有较强兴趣,但是处于大一的我并不知道ACM对这个方向是否有帮助(这里请贺老师将一下)。我该去听ACM的课,等大二大三再接触网络安全,还是直接听网络安全的课,并直接按照实验室准备CTF?本该大二下学期选择方向,为什么学院弄一个这个名堂。让我很是纠结。

【回复】

  很羡慕你可以纠结在多种可能的选择中。有多种选择时,我的观点是随你的兴趣走,结合你的经历,以及对未来长远的打算,现在选网络安全就不错。

  ACM训练中获得的算法和程序设计能力的提高,是专业中很重要的基础。如果将来从事算法类的工作,可以直接帮助你,而如果从事工程开发类的工作,其作用更多是间接的,但也是越扎实越好。如果你大学毕业直接就业的话,基于目前可利用的机会,我感觉还是优先工程能力,在你感兴趣的网络安全方面往前走一走。

  网络安全我不是很清楚,就有限的了解,若是从事网络安全算法而言,ACM训练中的东西是直接有帮助了,而与网络安全相关的岗位,更多需要掌握计算机系统、网络体系的运行原理,以及相关的工程能力。这里面涉及的是另外一些内容了。前一段时间听一位网络安全的专家说过现在招人难,主要是应聘者的知识结构中,计算机科学的东西尚可,但对计算机和网络系统有感觉的人太少,我想你要及早接触网络安全,可以侧重一些后者。

  这并不是说你可以放弃在算法方面的积累。这些都是课外的活动,将培养方案中规定的课程都认真地完成,只不过不以算法作为强项罢了。

  学院提早让你们进实验室,意图应该是引导大家能尽快有目标,这是好事。但我感觉在大二分方向时,也有机会调整。可以现在按兴趣选,随着对专业及各个方向的认识提高,必要时再转,没有来不及之说。大学低年级,在各个方向上有过尝试和体验,使自己的知识面宽一些,技能杂一些,对应的发展空间也会大一些。大学只是专业学习的入门阶段,把握好机会。若真的有弯路,认识到弯路造就出你的独特,也便没有浪费时间一说。

【再来信】

  非常感谢您在百忙之中为我指点迷津!我之前在您的博客中看到一篇文章《学ACM将来能做什么》(不知道是否还记得名字)里有一个规划图表,描述重基础和重应用的两种方式我觉得非常好。 您之前的回复里说,参加网络安全,但是不要放弃算法的积累,也就是说我继续做oj题并且看一些算法的书吗?还是培训课一起听呢?自认为时间精力不足,可能没法跟上两个实验室的进度。因为ACM集训队是为了acmACM竞赛的,训练强度比较大。所以,我该如何做到您说的:根据兴趣,并且不要放弃算法的积累呢?

【回信】

  所谓不放弃算法的积累,方式有很多,需要你心中有这个事,而如何行动,还要具体由你来设计。

  我们所谈的,都是所谓“课外”的安排。我觉得,从课内,即正在学习课程中,找这种积累更优先一些。每一门的专业课程、专业基础课程,其中包含的,都是某一方面的算法。例如,学数据结构,可以考虑将书上讲的伪代码都去实现实现,已经给出的代码,做成自己的算法库,涉及到的问题,尝试着去解决。不得不说现在不少的同学以考试通过为原则,主动加深,主动拓展的不太多了,似乎老师也不多给同学们要求,一说要加强学习,我们总习惯性地指望课外,其实对课程学习,自己多提些要求,这对于大学的学习,是正常的,必要的。

  至于是否要随ACM训练队的节奏,你试试自己能不能安排好。时间管理,是大学生成长中非常重要的一个内容。安排妥当了,不见得做不下去,安排不好,却总会将大把时间浪费。实际上,在学习网络安全的过程中,算法也是离不了的。遇着事情不绕行,学计算机的,时时都在接触和提高算法能力。

  学着打破框框,找到学习的空间,和适合自己的方法。