软工-热身阅读作业
关于作业要求
问题 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 2021软工—热身阅读作业 |
我在这个课程的目标是 | 提高个人开发水平以及团队合作意识 |
这个作业在哪个具体方面帮助我实现目标 | 通过多种形式的作业内容全面提升开发能力; 通过结对以及团队合作方式提升团队合作意识; 通过博客及文档撰写帮助思考未来方向 |
引言:关于为何要来上课并认真参与
关于这一题的回答我认为结果要因人而异,对于一些翘课去做更有意义或者更重要的同学来说不上课可能会把这段时间用的更有价值一些,但是我觉得可能大多数同学在本科阶段并没有比上课更加重要紧急的事需要处理。
不上课或者上课时做其他事无非就是认为课程与自己未来方向无关或者单纯认为授课老师或者课程本身比较“渣”。但我想大学教育毕竟也是经过了多年的迭代和考验,现在的“无用”可能就是将来的“有用”。
- 就前一方面来说,专业素养固然重要,但适当全面提升自己的能力可能会让我们未来的路走得更宽一些。既然是通识教育就要将学校的利用价值最大化,多听多看总比闭门造车强,而且多数时候造的可能并不是车。
- 就后一方面来说,我很同意Scalers的观点。退一万步讲,即使这门课很“烂”,自己也能不带情绪地将其学到自己能力范围内的最好,那么将来在任何地方,自己也能成长的很快。谁又能保证自己未来的工作环境以及合作对象永远如意呢?
如果往上看有差距我们有时也可以往下看看,无论怎么说这门专业的教学质量也算得上国内的较高水平,如果我们对于这样的学校抱有过多不切实际的幻想,最终会发现什么都不会发生,最重要的还是应该改变自己的思维方式。
第一部分:结缘计算机
-
你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
虽然题目问的是为什么选择计算机专业,但这里为了让我的叙述更加完整些,就稍微偏下题从为什么选择北航开始吧...
就个人来说,我对于来北航以及计算机专业的结果都是很多机缘巧合的产物。这并非学校或者其他原因,完全是自己的性格让我的人生在大二之前都一直是被客观因素裹挟着前进。在高考之前因为一名之差失去了国内某大学的降分优惠,在高考中又考了一个非常“鸡肋”的分数,后来由于计算机学习的热潮以及个人的选择限制,我填报了北航的信息大类,最终以仅高一分的成绩险入北航。但是现在来看,当初自己对于信息大类除了往年录取分数其他一概不知的情况下就直接填报的做法实在是有些草率。经过快三年的学习,我渐渐意识到,很多时候选择往往比努力要更重要。
高中时期我引以为豪的“不偏科”让我习惯了对任何课程都付出平等的精力和时间,这也间接导致了我在大一一年的大类培养中完全没有培养出对任何一门小专业的特殊兴趣,于是看着北航计算机A类的学科排名,隐约觉得将来广阔的就业空间以及对计算机技术有着的一丁点好奇,我带着勉强凑合的分数跌跌撞撞塞进了计算机专业。
就自身条件来说,
- 如果只是和小范围的同等级同学来比,我对于计算机技术零基础,刚开始对于编程缺乏自学的概念和钻研的精神,而我又属于对新知识接受速度较慢的那类人,在学习程序设计和数据结构时可以说是举步维艰,基础属实不算好。
- 和举例的博主相比,我的基础反倒显得空白了很多。博客G中作者的前妻虽然不是科班出身,但从经历来看已经具备了一定的实践能力,如果当初给予她专业的培养,可能现在的结果又会大不相同;博客I的作者在初中时期就对计算机有了较多的了解,这也是我的环境无法达到的,但是他文中提到的对于做开发最重要的两个能力我是很赞同的,包括学习能力和交流能力。还有很多博客我虽然进行了一一浏览,但是由于所处的环境和对问题的认识有一定差别,我只是停留在看客的阶段,并没有产生共情。我不认为这些博主的选择有什么是非对错之分,尤其看到博客F的作者经历后,我觉得他一路走来真的很辛苦,也走了不少弯路,但有的时候缺少自悟能力或者说缺少引路人的就业之路可能就是这样,这也是坐在大学课堂上接受着专业计算机教育的我们永远无法体会到的。
-
计算机是你喜欢的领域吗?是你擅长的领域吗?
计算机算是我现在比较感兴趣的领域吧,毕竟我自己也说不上来什么程度算是“喜欢”。虽然学习的过程有些困难,但是也在努力适应新的思维方式,好歹也坚持到现在。就目前来看,计算机领域仍然是社会发展的主要推动力之一,相信如果在未来能够将所学真正与实际应用相联系,我的感受可能会更深一些。
关于第二个问题,首先计算机领域实在过于庞大,其次计算机领域相关从业者也都总是处在一个不断学习的状态。现在作为学生的我还只是停留在相关基础课程的学习,擅长根本无从谈起,但将来在选择更加细分的方向时,我也会尽己所能地努力学习。
-
你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
关于“热爱”我认为与上文中的“喜欢”并无二意,这是需要时间的考验和持久的努力的。所谓“乍见之欢不如久处不厌,久处不厌莫若相见如初”可能是最理想的一种相处模式。就像博客R的作者提到的那样,热爱不应轻许,也不是炫耀的资本,而是应当落实在具体行动中,体现在对计算机专业知识的每一份渴求中的。
曾经我觉得无论热爱什么都应当有强大的内在自我驱动力和对事物本身的高度兴趣,但后来我发现热爱是可以被培养的,就像习惯一样,人对于投入了很多并且有一定产出的东西自然而然就会觉得喜欢了。对于博客中的一些励志人物我也充满敬佩,他们中的有些人学习计算机的出发点并不是热爱,可能只是为了生存的需要或者追随所谓的潮流,但这又如何呢?只要他们在某个阶段愿意主动为此倾注大量的时间和精力,说其热爱又何尝不可呢?
对于个人而言,通过短短两年半的专业学习我对于计算机可以说有了初步的了解,也做了不少投入,即使谈不上热爱至少也做到了与这门专业和解吧。由于多种因素的原因我现在也仅仅能做到踏实进行课程的学习,偶尔也会在实验室了解一些专业前沿领域的知识,最重要的是从当初的被动学习渐渐转变为主动去做,也算是一步步向目标靠近吧。
在计算机系里学习
-
你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。(必答)
关于大学生活的槽点首先是好像跟我过去的想象有些不太一样,倒像是进阶版的高中生活,当然这也与北航的工科氛围和我选择的专业有着密切关系,这些对我来说适应了倒也是无关紧要。但是有些课程的设置的确还有一些改进的空间。
-
首先是有的课程理论与实践分离得有点严重,甚至完全是两码事。即使“自学”应当是当代大学生自觉培养的重要素质,但这样形式的自学是不是就失去了开设该课程的意义了呢?而且最终的评价与课程所学好像并没有太大关联,有的展示甚至把几种完全不相关的功能糅合在一起表现功能的复杂性,有点刻意为之的感觉...
-
其次是有些关于大作业是结课论文的课程。本来应该是阐述清楚即可的课程论文因为大家都交几千字所以自己也被裹挟着废话了几千字,自己的写作水平也并没有提高,不仅浪费了时间还增大了个人的压力和焦虑的心情。
-
当然就博客H中对大学的批判来说我并不完全认同,虽然当今国内的大学教育还有很多值得商榷之处,但是仅仅因为社会对非科班程序员所谓的“歧视”就全盘否定大学教育显然有点意气用事了。
我只上过这一次大学,并没有什么可比性,但在博客B的作者的叙述中我又好像看到了理想的大学教育:
-
我清晰地记得他在工业工程系课堂上讲“栈”的时候,用计算几何中的Convex Hull(计算几何中求凸包的算法,由美国ACM大牛Graham发明,该算法通过nlogn复杂度求出平面中一堆点的最外层包围矩形边界)来显示栈的使用。这个算法在A4纸上写说明最少也要两页,加上里面具体的技术,个人觉得可以给3个小时的时间来考查一个训练有素的程序员是否合格。而朱老师在1.5小时的时间里,一边讲,一边写,用最优雅的方式,完整地实现了这个算法,写完程序,一个编译错误也没有,成功运行,随机的点,优雅的边界,当时全班鼓掌两分钟。
这种对老师教学方式的要求其实可能只是我个人的一种理想,大学也不可能也不适合让每个老师都改成实时演示互动的方式授课。但是如果一些软件实践课老师老师少用一些“PPT”式输入,多用相关软件实时演示,哪怕只是展示很简单的结果都可能让课程效果改善很多。不仅可以提高学生上课的兴趣,也可以增加师生互动,这种授课方式其实适用于很多课程,包括数学建模、数据结构等等。
就现实来说,学校的资源其实不少,而且计算机领域相关技术的学习如果只是单纯想提升个人能力的话真的可以说是随手可得。我认为本专业理想的大学教育主要包括老师充分的准备,师生间友好的互动,课后及时的反馈以及督促大家培养自我约束和自我学习的能力。关于课后反馈方面我认为现在大多数课程的考核方式可能要么是考试,要么是大作业,最后都是以课程结束后老师给个综合评价分数收场,可能也会有课程中途会布置一些小作业,但老师的评价和指导都有些欠缺,如果能将课程细分,老师或者助教能够阶段性亲自参与学生课程实践并提供一些有效的指导,相信不管是最后的作品还是学生的体验与收获都会大大提升。
关于我的老师和学校能否能做到和国外一样,我觉得这并没有什么可比性。中国的国情让实施小班精英化教育成为不可能,只能选择当前这种尽量公平合理的教育方式。再者虽然科学无国界但科学家也是有国籍的,老师和学校都处于国内的环境,也都有很多各自的压力,要做到和国外一样是没有意义也是不可能的,只能说希望老师在能力范围内多培养学生的自我学习能力,让大家知道如何进行自我提升,让学生除了技术之外的其他素质包括沟通交往能力等等都有所进步。但是话又说回来,在当前环境下,有些事为了公平原则还是应该由学生保持主动性,多听多问,我很喜欢博客N的作者对于美国教育评价的最后一句话:
学生的学业压力普遍是很大的,开学伊始(除了没课的周末)就得一直处在用功状态当中,自我管理能力也很强,其得到的教师或助教的指导也是很多的。但是他们并不因此而成为学习的奴隶,而是追求着综合素质的全面提高。学校所有的努力都旨在于培养未来世界所需要的人才,为自己负责的终生学习者。
-
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)
就目前来说,我写的代码主要来自于各种课程设计的作业,程序设计和数据结构可能有两千行左右,计算机组成大约两千行,面向对象大约三千行,编译原理三千五百行左右,数据库项目可能有零星的一千行,再加上其他一些零散的实验总共大约有一万五千行。
做过最复杂的项目可能就是编译原理的大作业了,主要完成的就是一个类C编译器,使用的是递归下降分析法,虽然最后的优化并没有全部完成,但从中还是学习了一些C++面向对象的思想和一些基本库的使用。
-
科班出身和北大青鸟有什么区别 & 速成的培训班和打基础的大学教育还有mooc之间有区别吗?
- 科班出生和北大青鸟除了先天环境的客观区别更重要的是思维方式的不同。虽然我并不赞同“科班出生的起点就是北大青鸟的终点”等类似激烈的言论,但是系统循环渐进式的学习与突击学习对人影响的深度是大不相同的。就像同学A每节课都认真听讲并消化了老师上课的所有知识点与同学B考前突击几天通宵复习,即使取得了差不多的分数,A对于课程的理解深度和记忆时间应该是B无法比较的,如果北大青鸟短期的培训能够达到科班几年甚至十几年积累的效果,我们又为什么要寒窗十年来北航学习计算机呢?
- 同上文一样,如果想走得快,在培训班速成并找到对口的工作也不失为一个好选择,但如果想要走得远,至少对于大部分人来说,大学教育是必不可少的。这并不是说我们在大学能够学到什么特殊的技术,而是我们能和更多优秀的人一起交流经验,培养自己一种专业化的思维模式,而这种思维对于我们将来在工作岗位或者人生道路上遇到困难和问题时都是至关重要的。mooc虽然是网课,也算是大学教育的一部分吧,但是由于缺少师生互动以及实践,教学效果大打折扣,因此仅可以将其作为教学的辅助工具。
-
学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
学线性代数和概率论时我并没有为什么的疑问,倒是学大学物理的时候有过这样的疑问,虽然这个疑问到现在也没有解开,就姑且当作培养自己的理科思维吧......
数学可以说是计算机科学的根基,之前虽然学了线性代数和概率论,觉得可能和计算机科学有一定的联系,但因为学习的不够深入所以也没有细究。现在看来线性代数中的矩阵运算和概率论中的贝叶斯理论可以说是机器学习的核心。同时,数学素养的形成过程也可以说是逻辑思维的建立过程,这无论是对计算机领域还是其他科学领域的相关从业者来说都是极其重要的。
未来规划
-
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
就短期来看,我个人更倾向于先在国内深造,提升自己的专业技术水平,虽然本科出去工作可能也不会太差,在企业中也会成长得较快,但是一旦进入职场自己能够系统学习的时间就会大大减少,还是希望能在学校中多吸收些知识,为自己之后的工作多一些底气;
就长期来看,我可能不会从事前沿领域的研究型工作,而是更希望将技术转化成实在的应用,这也是让我坚持到现在的动力。
关于三种道路的规划:技术道路在前期基础阶段肯定都需要兼顾,在后期确定了自己更细致的研究方向后再进行专攻;职业道路大体上就先定为网络工程师吧,至于是开发、测试或者算法再看个人发展情况;社会道路上至少做到能够无愧于心吧。
-
你对于实现自己的梦想已经做了或者计划做什么样的准备?
在大二时在实验室做了一个关于NLP的冯如杯,感觉对其有了一些浅显的了解,现在在校内的一个实验室参与了一个信息抽取项目,也算是为未来的深造做一些准备吧。
-
你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
答案同上,我个人打算在实验室实习,毕竟毕业后还想走国内深造这条道路。
-
实习经验究竟有多重要?是否需要马上开始积累实习经验?
实习经验对于计算机类从业者应该是非常重要的,理论应该与实际相结合才能真正有所作用。虽然学校的专业课程也会有些课程设计,但是对于学生完整工程能力的培养还有所欠缺,这在实习中就可以得到锻炼。对于大三的同学来说,本科阶段专业的学习已经接近尾声,马上就要面临保研、考研、出国以及直接工作等等选择,但无论是哪种选择实习都可以当作自己作为学生和即将进入职业的过渡期,既可以与一些比自己层次更高的人讨论问题,请教经验,也会有较大的容错性,因此现在积累实习经验可以说是比较合适的时期。
参考博客
3、我前妻的故事:一个北大青鸟出来的,如何从月薪800元到年薪40万?
4、 【野生程序员】:优先招聘