我和计算机的恩怨情仇
我和计算机的恩怨情仇
项目 | 内容 |
---|---|
所属课设:北航2020年春软件工程 | 班级博客 |
作业要求:按要求完成一篇博客 | 作业要求 |
个人课程目标 | 学习一个具备一定规模的软件在生命周期中需要哪些工作,锻炼自己的团队协作能力,并使自己具有开发一个“好软件”的能力 |
这个作业在哪个具体方面帮助我实现目标 | 让自己能更清楚的认清自己的现状和行业的需求,从前人身上学到经验,让自己更好地适应计算机专业学生的身份 |
结缘计算机
你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?
出生在经济相对落后的城市,与计算机接触自然也相对较晚,小学一年级的时候舅舅家里买了计算机,逢年过节去舅舅家里和表哥一起玩游戏成了每年最快乐的时光之一,当然,那时的我对计算机除了玩游戏以外的功能一无所知,也无从可知。对游戏的喜爱让我小学期间辗转于亲朋好友的家里,乐此不疲。初二那年家里有了一台自己的电脑,当然其主要功能是玩游戏,我也了解了许多其他的内容,社交软件、视频播放器、浏览器······上微机课学习的极少的办公软件相关的知识我却不感兴趣,我学习很大一部分原因来自于这样一个念头————“别人能学会的,我没理由学不会;既然有人能会,我就有会的可能;别人学不会的,不代表我学不会。”大概是这样的念头,支持我一直走下去。当然,这与我选择计算机关系不大。
第一次真正接触编程是大一,这比我的很多同学要晚很多,从来没有任何竞赛经历,以轻松的态度来到大学,开始了这场未知的旅行。大一的C语言,是我那个学期最纠结的课,他让我体会到了之前从未体验过的东西,不仅仅是代码。没有丝毫压力地学习着这门课程,不是因为我有天赋,而是我没有意识到他的重要性,每次作业,宿舍里的A能以极快的速度写完,然后站起来说,你们大概得用4个小时(4倍于他的完成时间),事实上,我总是在作业截止的前一天,用6个小时甚至更久才能完成。不努力让自己有些许自卑,还有一些失望。直至C语言的期中考试给了我当头棒喝,30分的满分我得了7分,考试结束后坐在食堂吃着饭眼泪就流了下来,食堂大叔盯着我看,我才稍稍忍住,短短20年从未体验过的感觉。不过我得内心还算强大,我知道自己丝毫没有付出,这是再正常不过的结果,但我也知道,有些差距不是付出足够弥补的,至于是哪一种,我更愿意相信是前者。
没有期中前那么放肆了,但还是没有绷起那根弦,不够自制的人没有足够外力约束的样子,大抵如此。唯一改变的是我开始认识到,“挂科”这两个字很近很近,期末临近,我终于把这门课放在了一个相对重要的位置。期末考试我提前半个小时完成了考试,那种兴奋与不安交织的心情,给C语言课程画上了一个句号。
事实上,我觉得有过这样的阴影的我绝不会选计算机专业了,但人算不如天算,在选专业的时候,我发现我对所有专业都不感兴趣:)。打听了好多同学选什么专业,好多选计算机的,这让我有些茫然。我仔细思考,我觉得应用的开发我可能还比较感兴趣,最后将计算机填在了第一志愿。事实上,计算机是最热门的专业,我排名本来是不够的,但莫名其妙扩招6个,误打误撞进了计算机的门。
条件如何这个问题我觉得上面的内容已经足够解答了,大一第一次接触编程,没有竞赛经历,兴趣一般,基础课程没学好,情况就是这么个情况。与博客I中的博主自然没法比,浓厚的兴趣,志同道合的伙伴丰富的工作履历造就他过硬的专业技能,与博客M中的博主相差也是甚远,我大三接触编译,而他高中就能实现编译器,制作游戏。事实上,这些博客中几乎每一位科班出身的计算机行业从事者都比我接触计算机要早得多,也比现在的我更加热爱这一行业。
计算机是你喜欢的领域吗?是你擅长的领域吗?
从无感到喜欢,从不擅长到擅长。
说实话,我抱着当一天和尚撞一天钟的想法开始了我在计算机学院的学习。计算机组成,数据结构,离散数学成了我学习的第一批专业课,我对离散数学非常感兴趣,单纯的逻辑是我所感兴趣的,计算机组成这门课听名字就应该好好学,数据结构也是一门非常重要的课程,学完这几门课程我开始觉得计算机的奇妙之处,开始认为自己做出的选择是正确的了。
擅长是相对的,选择了计算机专业,学了计算机的课,自然自身擅长的领域就变成了计算机。但是也可以说有一定的天赋,因为我刚进入这个专业的时候是倒数第二,现在应该稍稍进步了一点,从C语言7分的期中考试,到现在已经写过一个5000余行代码的程序,还取得了不错的效果,说明这应该是一个我相对擅长的领域了:)。
你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
如果在刚分专业的时候问我这个问题,那我或许会回答不热爱,但如果现在在问我同样的问题,我一定会回答是的,非常热爱。给这中热爱一个具体的解释,就是希望能在计算机这条路上走下去,凭借计算机方面的知识度过接下来的生活。
在计算机系里学习
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
事实上,对任何事物我们都应以辩证的态度去看待,大学生活也不例外。北航的大学生活有许多非常好的地方,或者说是合我胃口的地方,首先就是我们享有高度的“自治权”,我有不少其他大学的同学,我们偶尔会谈论各自的环境,我发现他们的学校有绝大部分会给他们安排大量自习,像高中一样排满他们的时间,严格控制他们课堂的出勤率,在高考选拔中我们确实可以看出这些对于提升一个人的成绩是相当有效的,但这绝不是我想像中的大学,北航很好地满足了我的期望,没有上述的那些,给了我们充分的自由,让我从一个高度受限的地方脱离出来,但这就是好?也不见得,我曾经有一个舍友B,高中的时候各种数学物理竞赛的奖,大学后却整天沉迷恋爱和游戏,甚至于后来一个学期挂掉几乎全部科目,通过了高考的千军万马却夭折在大学的海阔天空。当然,这属于比较极端的例子,于我自身,大学一定程度上提高了我的自制力,代价是难以入目的成绩。失去一些东西才会明白自己想要什么。从一个小地方的鸡头,老师围着转的重点保护对象,到泯然众人。大学让我明白了人外有人,天外有天。那些比你强的人,身上必然有值得你学习的东西。比如博客D中的主角,有着比我更加明确的方向,更加自律,更能认清自己。
对于国内大学能否像国外大学一样,我的答案是不能。社会制度的不同,历史文化的不同,让一切变得不同,也没有相同的必要。想要接受国外一样的教育,大可出国留学。留学的同学大多是去欧美留学,据我所了解的,藤校注重实践,其导师和学生的比例能让每个学生得到老师的指导,得到最为个性化的教育,而且其课程可以说是极其有针对性,主修计算机,就学大量计算机专业的硬课,许多老师在课程开始时会用我们课程的强度和国外课程强度比较,答案总是我们的难度尽管很大,但仍然小于国外难度。这是我长久以来存在的疑虑,既然我们从小数理基础远远比国外的学生扎实,究竟是在人生的哪个阶段落下了呢?虽然如此,我觉得国内教育固然存在一些问题,但绝不是博客H中所说的渣,高校是人才的基地,但能不能成为人才也很大程度上取绝于自身,不是复制粘贴那么简单。(作业第二部分里面博客H和E都链接到了H,不过无伤大雅)当然,几个博客中都提到英语的重要性,我表示非常认同。
还有一个想要吐槽的地方是水课,我们的考核方式决定了成绩高的同学能有更好的选择权,这就导致了那些选择硬课上的同学成绩总是比选择水课上的同学要差,成绩对大家都很重要,自然而然,水课趋之若鹜,硬课成了烫手山芋。这是我感触最深的相对于置课,自由选择带来的坏处。
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
我写过的代码主要来自于课程,没有进行过完全的统计,也无法完全统计,因为在作业迭代的过程中会有重复的代码也会有,删减的代码,大概估计在3w行左右。
做过最复杂的项目是编译器课程作业的最终版。从词法分析到语法分析到中间代码生成,再到后来的目标代码生成和代码优化,代码行数达到了5000余行。这次作业算是一次较为完整的经历,每一行代码都来自于自己手下,使用怎样的算法,怎样的数据结构,都由自己决定。实现了众多编译教材中提到的优化算法,是一次比较满意的经历。但在反复的迭代中,明显发现了程序的不可拓展性,限制了我实现更多的功能,也明显发现自己写代码没有规范,随心所欲,肆意妄为。希望在软件工程之后我能更好地设计程序的架构,能写出更加易维护的代码。
学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
对这个问题我有长期以来的思考,我给出的答案是有用,但用处的多少,什么时候会用到,都是未知数。以线性代数为例,现在红极一时的深度学习,其基本的原理都是基于线性代数的推导,如果你从事了相关行业,那么你会发现相当于提前进行了知识储备,我记得某老师在演讲时说过,你过去学习过的东西你可能会忘,但你下次想要捡起来的时候,你会发现要比第一遍学习轻松许多。以我自己为例,在几门基础学课中,我学得最好的就是线性代数,在接触深度学习时,我通过吴恩达的网课进行基础知识的学习,我能很快掌握线性代数相关知识。博客C中的博主在每次面试是都发现这是他或者在《编程珠玑》或者是《计算机程序设计艺术》上的题目,印证了开卷有益。这仅仅是其中的一个例子,你能预料到自己将来会做什么嘛,并不能,但凡是知识就有其储备的意义,用处的多少,全取决于后续的发展,不能因为你从事了人工智能,就说你学的物理毫无用处,事实上,计算机是一门包容性极强的学课,他可以与任何学课结合,碰撞出别样的火花。
因此,在我看来,学习这些数学,物理等等学课,都是在为你以后的尽可能多的道路做铺垫,因为你并不知道你会选择哪一条。
未来规划
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
我比较喜欢偏算法的工作,或者是游戏开发这样的实践性强的工作。也就是说,我更喜欢偏实践的工作,我个人感觉理论研究十分枯燥,我并没有极端的天赋,能够让我把理论研究做到极致。喜欢算法的工作并不是研究算法,而是让一些有趣的算法落地,而不仅仅是辗转于论文之中;至于游戏开发,也可能是我从小玩一些的小游戏,从中感受到了乐趣,希望能开发出更好的小游戏,激发更多小孩子对游戏探索的乐趣。
事实上,直至今日,我对自己的未来也没有一个明确的规划。我曾经上过一门职业规划的课程,有过思考,但如同选专业一样,我并没有特别明显的倾向,或者只有当选项摆在我面前时,我才知道自己真正想要的是什么。博客K中的观点我非常的赞同
“确定了自己的行业和专业领域后,接下来的事情应该是1)努力掌握这个行业的知识,2)用最短的时间了解这个专业和行业更为具体的各个子方向。然后在实际过程中再认识自己。”
这似乎是我长期以来的工作模式,任务驱动型人格,事情来了,我自然知道自己要干什么了。
实习经验究竟有多重要?是否需要马上开始积累实习经验?
这一点毋庸置疑,有句俗语说的好,“是骡子是马,拉出来溜溜”,在学校里面学习,大多数还是在考验一个人的应试能力,而正真出生社会,到企业实习,能让你清楚的知道自己有几斤几两,从而让你能更好地规划未来的生活。再者说,我们在学校学习的很多知识,比如计算机系的核心专业课CO,OS,这些都是几十年前的东西,而企业,实验室里面的是当下时代的产物,实习能让你接触到新东西,锻炼你在课堂上学不到的能力。
但是不是需要马上开始积累实习经验呢?我觉得因人而异,如果你未来道路很明确,能100%保研或者做好了出国的准备,已经足够拿到名校的offer,大三下完全是一个合适的实习机会,再或者你打算毕业直接工作,那实习更是能给你带来极大的提升。与我自身,即将投入考研大军之中,纵然实习有千般好处,也不是当下最合适的选择。
相关博客
博客I 我的软件开发生涯 (10年开发经验总结和爆栈人生)
博客M 进入2012 -- 回顾我走过的编程之路
博客H 【野生程序员】:优先招聘
博客C 徐宥:掉进读书的兔子洞
博客K 谈谈职业规划——CSDN对我的采访