对软件工程专业的畅想
我还记得在我小学2年级时,家里花了8000多元配了一台电脑,从此我的兴趣就被完全吸引到计算机方面来,或者准确的讲,是计算机游戏上来。然后我对我未来的职业有了一个基本的愿景,那就是去做电子游戏。但是大家都知道在那个年代,电子游戏被国内媒体严重的妖魔化,这方面的职业也多少有点“不务正业”的意思。我在读大学之前,生活中的唯一爱好便是游戏,那时候还和同学尝试利用游戏自带的编辑器做过第三方内容。我对计算机的兴趣来自于游戏,而选择软件工程专业的原因也是如此,没有任何其他因素诸如待遇,前程等等的考量。本科既然已经这样选择了,对于想继续深造的我,也就自然而然的选择了考取软件工程的研究生。
要问本科期间我所学知识是否符合我对计算机/软件期望,我的回答是部分符合,具体是哪部分呢?我刚才也提到了我对电子游戏的狂热爱好,当然在学习方面,也会去着重学习与游戏行业直接相关的内容,譬如计算机图形学,C++,C#等等,当然还有间接相关的,譬如人工智能。对于计算机理论方面的课程,在学习过程中也慢慢了解到了他们的重要性。总而言之,这个符合期望与否是个动态变化的过程,在本科刚开始学习时,一定会有很多很多的与预期不符的经历,随着学习的深入,心里对于这个专业的期望就产生了很大的变化。渐渐的逼近专业本来的面貌。
计算机是我喜欢的领域吗?计算机下的子学科太多了,有些方向我非常感兴趣,有些方向光听名字我就觉得自己不会去学习。比如上文提到的计算机图形学,还有现在非常热门的混合现实技术,人工智能都是我非常喜欢的领域,主要原因已经说明过了,不再赘述。计算机是我擅长的领域吗?我觉得这个问题对于现在的我还很难回答,首先我的本科生活是那种中规中矩的状态,没有得过什么奖项,也没有犯过什么事,基本所有的科目都是正常通过的。在大三时才意识到自己可能无法去到自己梦寐以求的游戏公司中去,当时尝试去学习过一些游戏引擎,如UNITY3D,但发觉个人能力还是不够游戏公司的要求,所以选择了读研。这样的一个经历,让我很难去界定自身的能力是否属于“擅长”,因为缺乏一个对比的样本,除了计算机方面的知识,我没有学习过其他方面的专业知识。我唯一可以确定的是,在专业知识的储备量上,我可能比较低。但是在增长率上,我对自己有信心。“擅长”可以是时间堆出来的,也可以是低耗时高效率下的“擅长”。我当然觉得自己会是后者,但是在看到别人的优质工作之后,有多少人对自己能保持这样的信心?
B博客中作者给出一个论调:考研•读研 定调:开始改变思维习惯,化机械记忆为主动思考 若只有机械思维——上了清华又如何 对于这个论调我十分的赞成,因为作为应试教育的产物,我们确实在很多方面缺乏自己的思维,而这种情况带来的问题是创新型思维的缺乏。在学习过程中,循规蹈矩,判断力丧失,畏首畏尾。作者对这些问题也提出了一些笼统的解决方案,如尝试理解读者意图,尝试提出质疑等等。但我有一个问题:在科学研究方面,主动思考要在多大程度上借鉴他人的思想成果?换句话说,机械学习和主动思考的分界是什么?给你1个小时学习,多久用来接受“数据”,多久用来处理“数据”才能达到学习成果的最优?
这个问题我想根据学习目的,学习个体,学习内容的不同肯定有不同的答案。在理论性强的知识方面,可能要“厚积薄发”,而在实践性强的方面,可能要“躬体力行”。
对于我来讲,我站在选择学习方向十字口,这方面所要采取的学习策略得靠我自己摸索,别人的经验在这一方面终归没有太高的参考价值。
研究生生活展望
自我感觉你已经具备的专业知识、技能、能力有哪些?在本科的学习过程中,我自认为对计算机理论知识的学习还是比较认真的,也学习到了很多重要的知识,为我以后的发展提供了不少帮助,尤其是对我考研的帮助是巨大的。数据结构,操作系统,计算机体系结构等等课程让我认识到了构成计算机的种种要素。也学习到了一些编程语言,如C,C++,C#,JAVA等,但遗憾的是,在学习这些语言之后,没有系统的去实践,导致在我决定考研之后的半年多时间里,就将之前很多学过的内容忘却了。现在这个时间点,我认为我还有时间去把失去的知识再补回来,以完成我的研究生学业,并以此找到一份满意的工作,毕竟游戏方面编程的工作量和难度是很大的,尤其是在今天这个VR产业逐步兴起的年代。要说能力方面,我想这部分所谓的“能力”就比较抽象了,就思维活跃度来讲,我自认为思维还是比较跳跃的,很多时候也能想出比较不错的点子。但是在沟通方面,我的性子相对比较直接,可能在一些场合对一些人会有所侵犯。也就是说,我自认为智商没什么问题,而情商有一定的问题,我需要在待人接物方面学会协商,让自己的言行不那么具有攻击性。
离成为一个合格的计算机专业硕士毕业生,在专业知识、技能、能力上还差距哪些?在探讨差距的时候,我们需要一个基准点,也就是什么样的硕士毕业生是一个合格的硕士生。作为学术型研究生,肯定是要以学术为主,也就是写论文为主。而是否能在毕业之前高质量完成自己的论文就可以作为一个标准。而如何达到这个标准呢?或者说我在以这个为目标的情况下,缺乏什么资质来达成这个目标?首先就专业知识来讲,撰写论文的一个重要基础便是大量的阅读文献,也就是要有足够的阅读量,在这一点上,我才刚刚起步去寻找自己的研究方向,阅读量还有很大的空缺。其次就技能上来讲,计算机学科的实践能力很大程度上体现在编程能力上,所以编程就是一个非常非常重要的技能,而这也是我本科阶段最大的软肋。所以我希望能通过课程,实验等方式来让我的编程能力得以提高,以让其不至于成为我完成论文的严重障碍。最后就能力上来讲,上文也提到过了我“自认为”的缺点,所以明确的,我的差距主要就在于与人沟通的能力。这方面还需要我在日常与老师同学的沟通中去学习,感受。
在博客M,17段中博主写到,倘若一段代码以非常精妙的方法来高速完成一个任务,但是却复杂到哪怕写遍了注释也不能让后续维护的人看懂的话,那这段代码是没有实用价值的。一段好的代码,不在于它的设计有多么巧妙,不在于它的算法有多么高深,而在于它可以被几千个人同时开发10年,并且在持续添加功能的过程中,不会因为过于混乱而导致出现了重写的需要。这段作者对好的代码的定义给出了自己的理解,但是对一些追求运行效率的程序,这句话是否能够很好的套用?而且对于不同规模的团队,不同大小的任务来讲,需要牺牲多少程序运行效率来提高可维护性?这个如何界定?CSDN中对于此类问题的一个回答是,复杂的代码使用高强维护性的方法,性能相关的代码使用高性能的方法。前者一般用于经常修改,或者特别复杂的部分,后者用于小的函数,并且在代码中访问率特别高的部分。
研究生毕业后的选择
研究生生涯才刚刚开始,此时让我做出一个对毕业后发展明确的选择,是挺困难的。但就现在的我而言,我还是希望能够在毕业后找到一份“稳定”的工作。这个“稳定”是多方面的,其一,待遇稳定,这是生活的基本保障。其二,上班时间稳定,我不希望加班加点成为我工作的常态。其三,工作岗位稳定,我不希望我在一个岗位上待了很久之后被他人取而代之,而这种取而代之还可能不是你的能力能掌控的。要说我的优势和劣势,我的优势体现在计算机理论知识上,也就是所谓科班出身的优势。而我的劣势体现在编程能力上,也就是实践能力的不足。
由于我的性格中一直存在一种“保底”思维,所以我对研究生生活的规划是对自身发展的一种保底规划。首先我需要顺利毕业,我就需要发表论文,而我对研究生生活的长期规划就是尽快发表论文得到毕业资格,不要延迟毕业或者无法毕业。其次,我需要找工作,“稳定”的工作有很多种,但基本都和一个“公”字离不开关系,所以我需要提早准备相关的知识和能力,这就需要很多时间,不管是继续升学还是出去找工作,我都需要去花时间“应付”。最后,我需要阅读大量论文,这是我对自己研究生生活的短期规划,也是实现长期规划的必要途径。这要求我能坐的住板凳(其实是椅子),静下心来学习和思考。
博文J中16段说,说到底,工作就只是一份养家糊口的事情,其它都是不重要的,把这个想通了,一切都好办了。把心态摆正,把事情做好了,就行了,很多事情无法控制,当然,我们要懂得不要给别人留有藉口揪你小辫子。对这个言论,我基本赞成,但是我想知道的是在这种养家糊口的思维下,如何保障自己对所从事工作的热情?在阅读完知乎中对这一类似问题的答案(https://www.zhihu.com/question/20183609),之后我有了一定自己的认识,其中最重要的便是普瑞马法则,不喜欢做的,或者难做的先做完。
未来的期望
你愿意为了一个你感兴趣的、或得到实战锻炼的项目熬夜吗?你想脱离小菜鸟的level吗?如何评价上一届同学说的“和队友一起熬夜打代码是个不错的体验,或许还可以一起吃夜宵!”对于我感兴趣的项目,我可能会选择熬夜,但如果说单纯是为了能力的提高,我可能不会,当然我现在的回答不可能是绝对的,人的决定一定是考虑了多方面的因素确定的。而要问我想脱离小菜鸟的行业吗?那肯定是必须的啊,谁希望自己永远站在低点呢?对于第三个子问题,我其实很不赞同这种言论,在我看来工作虽然是生活的一部分,但它又不同于生活,在工作中,应该讲究高效率,熬夜工作并不是一种高效率的体现,反而是一种低效率的恶性循环。这个并不是我反对的重点,我反对的重点是他的“或许可以一起吃夜宵“,为什么我反对呢?因为他在整句话中有意无意的通过这后半句让我去接受一个观点,那就是熬夜工作或许有有趣的一面?有意想不到的福利?我只想说,不是所有人都适应夜间工作,而多数人都无法承受长期加班。不要试图通过美化”熬夜“来体现自己的努力。可能我说的有些偏激,但我不希望在我以后的工作中,加班成为一种值得夸耀的事情。今日事今日毕,一个夜熬过去,白天不用做事了?
我对这门课的期待主要是能力上的提升,尤其是对软件的开发过程方面希望有一个真正意义上的体验,对我而言,所谓真正意义上的体验就是能够在课程结束后,能够对我做过的东西有全面的认识,能系统的将这些东西表达出来,最好是能够汇总成一种文本。还有一个期待就是希望通过这门课与新同学合作和共同学习,提升彼此的认知程度,少点防备,多点了解,取人之所长,补己之短。坦白地讲,对这门课的时间分配主要取决于作业的多少,因为我希望能尽可能的早开始阅读文献,提升知识储备,所以没课的日子(放松的周末不算)除了做作业基本都在看文章。我的目标从我的”保底“思维上来讲很明确,那就是拿到这个课程的学分。所以明确的,我希望能够拿到一个能够接受的分数。
博文L中的第二大点中有这么一句加粗的话,兴趣和热情只能让你很执着,但并不一定能让你走好这条路,只有你的能力和你的强项才能让你走好这条路。这句话如果放在我大一刚进入福州大学时,我一定会嗤之以鼻,因为当时的我觉得只要有热爱,或者说兴趣。一切能力问题都不再会成为你的阻碍。因为你有足够的动力去克服这些问题。但是到大四我才发现我错了,人和人对接受同一种事物的能力天差地别。就像老师都经常说的一句话”算法不是什么人都能搞的“。但是我的疑问是,如何才能知道自己是否可以走好一条路,或者说,如何避免在花费大量时间之后才发现自己不适合干这个?知乎大佬们对这个问题的看法还是比较深刻的(https://www.zhihu.com/question/20060181),但我看完之后才发觉,这个问题也许是个伪命题。因为可能我根本就没有花费大量的时间去学习,就觉得自己不适合了。但有个现象始终无法得到解释,有的人可以花费2k小时就爬到行业金字塔顶端,有人10K小时还在中游。大家都花费了大量时间,为何天差地别?我会把他归因于学习效率,或者是有效学习时间。但这种问题怎么可能说的清楚呢?我唯一能做的只有去继续我选择的路,具体能不能爬上金字塔的顶端,这个没那么重要了。