SE_Work0_回顾与展望
项目 | 内容 |
---|---|
课程:北航-2020-春-软件工程 | 博客园班级博客 |
要求:阅读推荐博客并回答问题 | 热身作业阅读部分要求 |
我在这个课程的目标是 | 提升团队管理及合作能力,开发一项满意的工程项目 |
这个作业在哪个具体方面帮助我实现目标 | 回顾过往计算机学习历史,明确未来发展方向,制定未来4月软工学习计划 |
一、结缘计算机
1. 过往
- 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
选择是最难的事情,却同时又是最为自然而然的,在机缘巧合之下,我几乎是顺水推舟的选择了目前所在的道路。
虽然很早就已经接触计算机了,第一次了解“编程”还是在初中,当时的“微机课”可谓是一周中最欢乐的课程,班上一大群同学复制U盘中的CS或者WarCraft,开黑玩起来。那时的我同他们一样,同同学们疯玩,只是微机老师在偶然间提及的信息奥赛提起了我的兴趣,什么时候用来玩游戏的电脑竟然还是一门学科?
抱着好奇的心理,参加了老师组织的信息奥赛训练,每天中午不去睡午觉,而是去微机室,当然一部分原因是想着中午能早点去机房玩会游戏。第一次看到不同平常的纯蓝色刺眼的屏幕,上面写着一行行完全看不懂的英文和数字,不免有些诧异,但是随着老师一天天的教授,开始理解原来这是Pascal语言,不论怎样,还是模仿着来写吧,逐渐抹上了门路。为了迎考信息竞赛,我逐渐知道了什么是原码——补码——反码,知道了函数调用语句,但都是零零碎碎的,不知道为什么要这么做。信息竞赛初赛得到市一等奖也大大鼓舞了我,可毕竟没有好的学习方法,在省会城市考的信息奥赛长达6小时,却也一题也没完成。
高中一开始,我便报上了信息奥赛,在我们省的信息奥赛仍然只是刚起步,整个3000人的高中,只有两个信息技术老师,讲的课也没有系统和章法,更多时靠自学《c++信息奥赛一本通》。但是每次坐在电脑前,都抵制不了游戏的诱惑力,许多晚自习打着信息奥赛的名号在机房同好友玩游戏,浪费了大量自习的时间,对计算机的理解也只停留在表面。那时,对编程还是有些反感的,因为一般花了1小时写出来的程序,竟然需要debug几天!看着惨白的屏幕,一次次运行程序,却一直找不到错误在哪里,一味埋怨机器故障,却根本不了解代码的调试功能,可能是长时间坐在电脑面前的原因,视力也有所下降。
但不管怎么说还是打了些计算机基础,自学能力有些许的提高。而在高二的信息奥赛上,以最低分得到了信息学奥赛国家一等奖,当时还是沾沾自喜的,因为这种奖项任意在数学、物理、化学、生物上都是极难得到的。正因为这一奖项,有幸能参加大学的自主招生考试。令我印象最深刻的时候是面试老师问我:你认为计算机能用来做什么?未来的价值在哪里?
说实话,那时的我真的不知道计算机用来干什么,顶多用来玩玩游戏。只好硬着头皮回答:“计算机能用来辅助其他学科,比如数学、物理上的公式让人来计算太过复杂,但是计算机一步就出来了。”只有上了大学以后,才知道原来计算机不仅只有这样渺小的应用,本身却是一个巨大的工程,支撑起了社会的方方面面。
与博客1的作者相比,计算机发展的状况比博主要好上许多:内存比那时的磁盘大,Cache比那时的内存大,而且有了相当成熟的Pascal和C++语言。而选择计算机专业也比博主“顺利”很多,因为高考的失利,又有自主招生的20分,最后落到只有大学的信息类可选。可以说,大学才是我真真正正接触计算机的地方,以前所学的一切关于计算机的一切是那么浅薄。
2. 热爱
计算机是你喜欢的领域吗?是你擅长的领域吗?
你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
如上所述,结缘计算机几乎一半都是因为想多点时间玩游戏。直到大学,随着学习的深入,发现计算机领域是如此的宽广,2013年的Alpha Go火遍全球,2016年的VR震惊时代,随着信息化的加深,社会从交通运输到市场营销因为计算机的加入发生着翻天覆地的变化。我对计算机的兴趣也不再局限于游戏,而逐渐变得广泛,对着社会中每一个应用:如自动驾驶、人脸识别、电商、动画等都感到热忱。
除了对于这些应用“炫酷”的热忱以外,在大学期间自己编写程序时感受到从心底的乐趣,尤其是解决一个困扰自己很久的问题,找到了针对问题实现的高效算法,甚至说找到了程序的bug都让我感到十分高兴。遇到不会的题目,我自己习惯于自己冥思苦想,常常被一道折腾一周,甚至晚上思考这些问题越陷越深,睡不着觉。冥思苦想几天后大体上也能想到解题思路,并一步步亲手实践出来。最后发现自己所实现的东西竟然与前人总结出来的设计方式不谋而合。因此我能够常常体验百思而得解的愉悦感。
暑假的那一次实习使我真正使用了计算机本领,为某教育项目中的10000多人的个人信息通过程序的方式组织起来,相比于手工通过Excel重复地筛选省和市相比要快速很多,还能去统计每一个指标的数据,绘制柱状和饼状图可视化,对方感到兴奋而诧异,手工需要一个星期完成的工作竟然程序跑几秒钟就完成了。完成这一件事让我大感鼓舞,甚至觉得我现在毕业都可以在公司里面找到一份比较好的工作。在此之后,又完成了很多程序:刷网络流量、抢网课、抢考位、格式转换、扒谱、写简单的游戏、写自动操控脚本……每次完成后都有一种爆发般的成就感。
对于计算机的兴趣随着具体课程的学习,常有自己的想法和未来的愿景,每次想到这些,都心跳加速,甚至半夜睡不着觉。尤其是动漫中对未来的想象:游戏中的虚拟世界成为了第二个世界,VR的那种比真实还要真实的感触,高级人工智能的游戏角色比真人还要真实,还有那些史诗级的3D游戏花草树木,光影效果梦幻而令人神往。每次的遐想并非仅仅一想而过,而是专门记录了下来,写成了长篇的抽象小说,到目前来说,这种小说都已经上10w字了吧,甚至比我从开始到现在写过的代码还多。
二、在计算机系里学习
1. 大学生活
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?
跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么
涣散
大一上课所有人几乎全员到齐,都认真听讲做笔记;大二上课到课堂人数少了很多,非核心课不签到都开始陆陆续续不去上课;而到了大三,几乎是能不去上课就一定不去,课上寥寥无几,老师讲的尴尬,学生听得无聊,漫不经心拿起手机晃一晃。这让我感到效率极为低下。
不像博客2所说“课程讲的不好不能成为不听讲的理由”,因为在那个环境下,是无论如何也无法集中精力来听课的,尤其是电子信息概论那门课,老师讲的没什么实质性内容,学生在老师眼皮低下开着电脑玩游戏,本身对其他学生都有一种不良的氛围,这样的环境是无可抗衡的,我虽然也尝试这记笔记来集中精力,可本身是课程设计的问题。但我赞同的是:“聚精会神在这个时代已经是稀缺能力,大学应该打好基础,走神是认真听讲的大敌”。尤其是读长篇大论的论文,如果没有一点恒心和毅力,根本看不下去,几天才能略微理解。
从这一方面来讲,跟我理想中的大学有很大差异,理想情况下老师和学生的关系绝不仅如此,而是像美国小班教学一样,老师和学生的互动更为频繁和丰富,能够上课有学生提问、积极回答。而不是像目前这样一种难与抗衡的涣散,与环境抗衡,愚不可及。
博客3说出了我的心声:
中国目前的大学教育就一个字:渣。我的大学在当时不比后来的什么211之类的差,但还是一个字:渣!从学习风气到成绩考试,从课程设置到师资力量,都是一个字:渣!我并非针对任何人,大环境如此,信不信由你。
恕我直言,中国大学在短期之内不可能做到外国那样,一方面因为资源的稀缺(教师稀缺、设备稀缺、空间稀缺),另一方面因为一直以来的教育传统(西方思维崇尚自由,而中国没有这样的基础)。
自学
大学里最深刻的感受是“一切都要靠自己”,甚至老师也没法教你什么,很多知识都是必须自学完成,很多机会都必须要自己争取。可能在突然之间,你的同学就进了实验室,你觉得那么普通的同学莫名其妙地得了大奖,你会觉得诧异,但是从来看不到他在背后付出了什么。
大学生活太丰富了,大学最大的苦恼就是时间不够用、生活繁忙无比。大一时听到学长的一句话“你不想做事可以天天划水,但是你努力起来会忙成狗”,这种体验颇为深刻,常常因为各种各样的事物忙的焦头烂额:
- 爱好狂:参与多次文艺表演,想做什么做什么
- 社团狂:因为担任某社团副社,参与三个社团活动花费大量时间
- 课程狂:所修的学分远远超过要求。那2个月集中了7个项目和7场考试,真不知道我是怎么熬过来的
相对于博客4博主的迷茫,的确,大学比起高中,你可以自由地发展爱好,可以花大把的时间去玩游戏,可以天天上课划水。因为太自由了,所以迷茫了。而我也出现了这样的迷茫,不是我不知道我应该做什么,而是想做的事情太多了!
2. 代码
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)
迄今为止写过的代码量甚至还没有我写过的日记多,但5w肯定是有的,10w可能还达不到。
其中最复杂的程序是编译课程大作业“完成一个类C文法的编译器”,这样的作业的含金量有多少呢?之所以说它是最复杂的,在于以下几点:
- 端到端的庞大工程项目,从类C语言,中间代码到汇编语言
- 细致的修改,整个程序像一件精致的艺术品,使用了C++内置的高级方法,例如函数指针,变长参数。并且用最简洁方式写,不包括面向对象部分只有2000行
- 对编译器进行了面向对象的分析,实现了自动生成代码,自动生成的语法分析器,这一部分同时用python和C++写过,充分比较了两个语言特性的不同
3. 科班
- 科班出身和北大青鸟有什么区别?
- 速成的培训班和打基础的大学教育还有mooc之间有区别吗?
博客3野生程序员,博客5 .net程序员,博客6 一个北大青鸟出来的,如何从月薪800元到年薪40万?
很多程序员都印证了,科班出身与非科班出身并不能决定未来发展的方向,而在于自身是否努力。因为目前MOOC上的,网络上的资源是如此的丰富,甚至一个普通人都能通过搜寻资料、肯著作、上网课而成为一个程序员。
那么,我们真正学习计算机的,和那些没有学过的,究竟有什么区别呢?从经验、基础、能力等角度绘制出以下表格:
科班 | 非科班 | |
---|---|---|
经验 | 相对经验较少,实践少,软件项目交互过程不太了解 | 大量实践经验,同时有较好的交流能力,往往经历了大量跳槽 |
能力 | 系统的代码组织能力 | 代码熟练,但可维护性不强 |
基础 | 系统的数学基础、理解计算机底层构造 | 缺乏基础,往往只知道“怎么做”,而不是“为什么” |
眼界 | 经过计算机环境的熏陶,打开眼界,偏向“高层思维” | 偏向“底层思维” |
对于非科班出身,有点类似于大学之前的我,在“打野球”,花了大量的时间,却不一定有结果,若非像上述三个博客那样有毅力的博主,很少有机会能真正走上正轨。
即使网络上资源那么丰富。在我看来,最重要的是氛围,大学虽然让人感觉涣散,但是不论如何,你在学,你的同学都在学,你们能在网上,在班里讨论,听得多了也就逐渐会了。并且有的同学的项目做得很成功,作为科班出身也会添上些自信。在这样的氛围中,不论怎样的困难都慢慢地解决。尤其是一些非常困难的课程(计算机组成原理、面向对象、编译技术、无线网络系统,当然还有这节课),只有难过了,才会成长。
4. 数学
- 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
的确,学习微积分中值定理时,学习物理转动惯量时,我会想,这跟计算机有关系吗?迄今为止,的确有一些有关,比如线性代数、概率论中很多概率被机器学习中用到。但:
- 仍然有大量的知识跟计算机没有半毛钱关系
- 即使学了这些学科,计算机领域很多知识也不了解
- 即使学了这些学科,学到的知识没有使用也逐渐淡忘了
我现在发现,我们学习的不应该是具体的知识,而是如何去学习学习的方法,即方法论。本科期间学习数学是为了在未来缺少数学知识时自己去学习数学。并且有了系统化的教育,在今后面对复杂的数学公式时,能不会那么惊慌失措。
三、未来规划
1. 道路
- 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
我是那种执行力极强的人,想要出国便早早地准备考托福和GRE,认定了学习托福便一头扎进去,想要把过去的钢琴捡起来便自己在北京全城找老师;想要学习画画就立马去学。即便如此,我仍然会感到迷茫:没有宏观上的一个方向,我以后究竟想做什么?
正如博客3 所说:计算机科学和软件工程是两码事。前者,是以科学研究为导向的;后者,是以工程应用为导向的,就是利用已有的语言框架等开发面向最终用户的软件系统。而该选择的时候到了,这样正是科学和工程学的巨大差别,未来究竟是要选择科学研究还是做工程项目呢?
我个人是极其不喜欢这样的对立划分,为什么科学研究和工程学不能同步进行呢?就像微软明明是软件公司,却也单独开一个研究室,研究员能自由研究。
正如《学术前沿讲座》所述:
我也逐渐想了很多,最终决定偏向工程学,原因如下:
- 从时代与环境来看:中国学术研究上氛围极差(论文驳回率达0.3%,全世界第一),说明中国现今学术诈骗和抄袭行为严重,真正做出贡献的人可能不能得到承认。
- 从研究特征来看:距离核心资源太远,使得做研究煎熬,无从达到目的。经济上偏向被动,使得做研究无法充足而完完全全沉下心来。因为研究员也有家人,也需要养老人养小孩。
- 从自身性格来看:比较喜欢亲手做出的项目得到他人的欣赏。理想高远,却注重实现。有一定管理组织能力。同时也有较强的自学能力。
人是矛盾的,也是自私的,当我决定偏向工程学后,我开始为自己找各种各样的理由使我充分满意自己所做的决定。其中一个理由来源于经济管理课上的图:
选择工程,可能是自我的抽象思维在作祟。因为对于工程的实现,不在个人,而在集体,而从底层逐渐向高层去爬,直到最后,自己能主导一个项目,甚至去创业,无不是一个很好的发展方向。
2. 实习
- 你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
- 实习经验究竟有多重要?是否需要马上开始积累实习经验?
企业实习。
实习经验对本科生真的重要吗?对于暑假期间做过一个小实习的我来说,有如下想法:
- 实习很重要。因为它能让我们去理解未来社会中的人际交往关系,了解软件工程的协作过程,适应复杂的人际关系和政治斗争。 提前认识工作和自己,以便毕业时更准确地把握自己的方向。
- 实习却没有想象中那么重要。要知道,大学生是打好基础的最佳时机,没有基础和能力,再多的经验也是白谈。如果本科期间在黄金学习阶段花费半年的时间去实习,得不偿失。目前更好地积累自己,才能在未来有更大的潜力。
推荐大学期间要实习,但实习期2月左右就足够。
3. 准备
- 你对于实现自己的梦想已经做了或者计划做什么样的准备?
- 英语:GRE已经通过,托福第四次考试即将来临
- 技术能力:在大三学期选修了大量的课程,所修的学分远远超过要求。不为分数,而为知识,为能力
- 组织能力:在许多课程项目中担任组长,花费的时间代价和精力代价巨大,在展示中逐渐训练自己的表达和组织能力
(请勿用于商业用途,转载时请注明作者和出处)
SE_Work0_回顾与展望的更多相关文章
- 关于学习JAVA程序设计语言的回顾与展望
回顾篇 时光荏苒,大学生活已然过半.看了老师分享的几篇博文,我的内心是震憾并且惭愧的.相比别人,自己做的实在是不够多,不够好.在刚刚结束的大二上半学期,我学习了JAVA初级程序设计,虽然每节课都认真听 ...
- JavaScript: 2015 年回顾与展望
链接:http://www.sitepoint.com/javascript-2015-review/ JavaScript经历了一个不平凡的一年.尽管到5月份已经20年了,关于JS的新闻.项目和兴趣 ...
- 新的开始 | Arthas GitHub Star 破万后的回顾和展望
一切新的开始,都始于一个里程碑. 2月20日上午,Java 开源诊断工具 Arthas 的 GitHub Star 突破10000,距离开源后的第一个Release 版发布仅 147 天. 从中,我们 ...
- [深度学习大讲堂]从NNVM看2016年深度学习框架发展趋势
本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 虚拟框架杀入 从发现问题到解决问题 半年前的这时候,暑假,我在SIAT MMLAB实习. 看着同事一会儿跑Torch,一会儿跑MXNet,一会 ...
- paper 119:[转]图像处理中不适定问题-图像建模与反问题处理
图像处理中不适定问题 作者:肖亮博士 发布时间:09-10-25 图像处理中不适定问题(ill posed problem)或称为反问题(inverse Problem)的研究从20世纪末成为国际上的 ...
- [综] Sparse Representation 稀疏表示 压缩感知
稀疏表示 分为 2个过程:1. 获得字典(训练优化字典:直接给出字典),其中字典学习又分为2个步骤:Sparse Coding和Dictionary Update:2. 用得到超完备字典后,对测试数据 ...
- NPOI使用手册[转]
NPOI使用手册 目录 1.认识NPOI 2. 使用NPOI生成xls文件 2.1 创建基本内容 2.1.1创建Workbook和Sheet 2.1.2创建DocumentSummaryInforma ...
- VR就是下一个浪潮_2016 (GMGC) 全球移动游戏大会观后感
"VR就是下一个浪潮" --2016 (GMGC) 全球移动游戏大会观后感 早在2014年参会Unity举办的一年一度的金立方盛典大会,就初次体验了VR头盔设备,于是印象深刻 ...
- NPOI使用手册
HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet"); // Create a row and put some cell ...
随机推荐
- 复制粘贴Ctrl+C改为自定义单键
目录 那一瞬间不想用Ctrl+C了 (一)搜索渠道 关键词搜索 (二)方案对比 (三)最终方案Ditto 使用方法 (四)案例 1. 替换Ctrl+C快捷键: 2. 将英文小写替换为大写: 那一瞬间不 ...
- vue 快速入门 系列 —— 虚拟 DOM
其他章节请看: vue 快速入门 系列 虚拟 DOM 什么是虚拟 dom dom 是文档对象模型,以节点树的形式来表现文档. 虚拟 dom 不是真正意义上的 dom.而是一个 javascript 对 ...
- Flutter Widget中的State
一.Flutter 的声明式视图开发 在原生系统(Android.iOS)或原生JavaScript 开发的话,应该知道视图开发是命令式的,需要精确地告诉操作系统或浏览器用何种方式去做事情. 比如,如 ...
- OO_Unit4_Summary暨课程总结
初始oo,有被往届传言给吓到:oo进行中,也的确有时会被作业困扰(debug到差点放弃):而oo即将结束的此刻,却又格外感慨这段oo历程. 一.单元架构设计 本单元任务是设计一个UML解析器,能够支持 ...
- (五)Struts2处理结果管理
当Action处理完用户请求时,处理结果应该通过视图资源实现,但将哪个视图呈现给浏览者呢.由<result.../>来决定 Action处理完用户请求后,返回一个普通字符串.整个普通字符串 ...
- pandas(1):Pandas文件读取——read_excel()
目录 一.函数原型 二.功能说明 三.常用参数说明 四.总结 一.函数原型 pd.read_excel(io, sheet_name=0, header=0, names=None, index_co ...
- VirtualBox CentOS8 调整分辨率
1 概述 VirtualBox安装完CentOS8后无法调节分辨率,需要安装额外的工具. 2 安装依赖包 首先确保虚拟机能正常连接网络,然后安装:kernel.kernel-core.kernel-m ...
- Horovod-Usage
Usage 代码中要包含以下6步: 初始化 Run hvd.init() to initialize Horovod. 将每个GPU固定到单个进程以避免资源争用. 一个线程一个GPU,设置到 loca ...
- isAssignableFrom与instanceof
isAssignableFrom()方法与instanceof关键字的区别总结为以下两个点: isAssignableFrom()方法是从类继承的角度去判断,instanceof关键字是从实例继承的角 ...
- M1 和 Docker 谈了个恋爱
出于开源项目的需要,我准备把之前在 windows 下运行的开源项目移植到 Mac 上跑得试下,但是 Mac M1 芯片并不能很好地支持 Docker,这不,发现 Docker 也正式支持 Mac 了 ...