写在「软件工程」开课之前
1. 结缘计算机
1.1 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
如今想来,与计算机的相逢实属巧合。高考那年,Alpha Go 胜利带来的风潮让街坊大妈都开始劝学人工智能,高考后的我没能逃过“分数最大化利用”定律,来到了零调剂的北京航空航天大学;大类招生结束时则再次抱着不要浪费分数的想法,填报了计算机科学与技术专业。
在大学前,我对于计算机的了解局限于游戏、PPT 与 P 图。与在计算机行业摸爬滚打了十余年的博主 I 和博主 S 相比,我没有像博主 I 那样从小接触编程技术的经历,也没有像博主 S 那样来自家庭环境的压力与自我提升的危机感;而相较同一个书院学院的同学来说,我缺少编程基础,大一的 C 语言与数据结构都学习的比较吃力。
总的来说,纵向对比写博客至今已经接近十年的博主们来说,伴随着互联网野蛮生长而成长的我们在硬件资源与信息透明度上有着很大的优势;而横向对比同系的同学,我的个人条件大概是处于平均偏下水平。
1.2 计算机是你喜欢的领域吗?是你擅长的领域吗?
是我喜欢的领域。如今各行各业都在与计算机深入融合,现代人的生活再也离不开电子产品,而能够学习这一切背后的底层原理,并参与到社会发展的进程中,在我看来是一件非常有意义的事;另一方面,就目前来说,计算机行业的薪资高于平均水平,相对光明的前景也让我有更多动力沉浸其中。
“仰之弥高,钻之弥坚”,伴随着计算机的不断演进与分工的细化,我想很难有人能够做到对计算机领域的方方面面都有着深刻的见解。我目前的水平也不可能说是擅长,但我正在不断学习的路上,也会朝着深入研究某一方向而努力。
1.3 你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
作为曾经的煤油,看到“热爱”这两个字仿佛DNA都在颤抖。而我对计算机知识的追求,大概也是源于对于计算机的热爱吧。
虽然我已经对计算机许下了如此热烈的告白,不过Error和Bug还是会来。但每当看到自己努力之后的运行成果,每当发布的小项目收到别人的赞或是Star,那一瞬间的感动与喜悦绝对是最真实的。
等等,难道说的是本学院的专业吗?如果能让我重新选择一次,我想我依然会来到北航,依然会来到计算机科学与技术专业,虽然可能不会来到北航的计算机科学与技术专业了(尬笑)。
2. 在计算机系里学习
2.1 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。(必答)
2.1.1 你对你的大学生活有什么想要吐槽的地方吗?
在得知6系25分一般专业要求不会因为大二下的停课而减少时,在不想参加科研却又为了及格不得不水比赛时,在怎么也抢不到全英文课而抓耳挠腮时……我想我是有很多想要吐槽的。
但整体来说,我想我们这一届的大学生活已经非常精彩了。计组、编译让我们从零开始实现了流水线CPU和类C文法编译器,曾为人所诟病的OO课程在几届助教的努力下变成了充满趣味的圣杯战争,操作系统虽然还是有点云里雾里,不过课上的知识应付面试还是足够。
而除了富有挑战性的课程,我也在业余时间参加了社团与志愿者组织,在网络创作自媒体内容,和舍友一起追番打游戏……我想我的大学生活非常充实——除了抢不到英文课可能要毕不了业了。
2.1.2 你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?
不过在博客B中,博主对他的大学生活感到茫然;在博客H中,文科转行的博主更是表达了他对中国大学教育的失望;博客N中,博主介绍了7年前的灯塔国的本科课堂的优越之处……这些例子也让我重新开始思考,理想的大学教育应该是怎样的?
- 对于博主B,我不禁想到了一个词——学生思维。虽然这个词不过是个车轱辘话:比如现在作为大学生就要避免单一价值导向的学生思维,等到工作后准备把你作为人才输送到社会时又说你欠缺追求知识的学生思维。但我想不管怎么说,博主B一定是很不甘的吧,他自己的努力没有得到回报,更不清楚努力的方向。而在信息壁垒被打破,多元价值观尝试融入主流文化的当下,我想北航也通过博雅讲座、朋辈导师等做了不少努力,希望帮助学生明确自己的发展方向,这样的故事发生在个人身上的情况应该会越来越少吧。
- 博主H……我感觉他的这篇文章是不是为了洗粉提纯?巧妙的立下了自学者的人设,并且能够引起其他文科转行者的共鸣……为什么这种暴论也能被选上推荐阅读资料(暴论)
- 博主N的介绍让我看到了北航这些年的进步,在这里我也遇到了不少很好的老师,当然也有过踩坑的经历。对于我来说,我想本科阶段的北航除去数XX模以及奇妙的培养计划已经很接近我理想的大学教育了,而研究生专硕按照学硕培养则有待商榷。我想大概因为我的格局比较局限,没有在学习中触碰到天花板。
2.1.3 比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?
我觉得是很困难的。
这学期由于申请调课,我最后只选到了人体工程——一门以跑步为主的体育课。那天的体表温度是3°C,第一堂课只有一名老师和三个学生,达到了1:3的惊人师资。而整堂课程也让我有了很愉悦的体验:由于学生少,在学习动作时老师会不时纠正姿势,课堂的氛围也和几个人聊天一样轻松。在博客P中,邹欣老师说理想的师生关系应该是健身教练 / 健身学员式的,我想就和我所参加的人体工程有一丝丝异曲同工之处。
不过这样的教学就类比于国外的“精英教育”,如果没有大量老师助教资源、没有高昂的学费支撑是很难普及开来的;另外也需要考虑到学生的时间安排,以及在当前评分体系不变的情况下的给分结果。“大清自有国情在”,我想评论区一位学长更加诗意的表述也许更符合中国大学师生的理想方向吧——
而我自认为我经历的更多的是 Streetlight / Pedestrian(路灯/行人)关系,这是我自以为的一种关系,指的是,路灯提供行人以光亮,但在灯与灯之间,还会有一段黑暗的历程,行人的路程就是不断地靠近光明,直到开辟到没有路灯的地方,自己成为了下一个路灯。
2.2 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)
目前我写的代码主要是课程作业,由于没有做详细的统计,这里做个粗略估计:
课程 | 代码量 |
---|---|
C语言、数据结构、LeetCode(算法) | 2000~3000 |
计算机组成原理(Verilog) | 2000~3000 |
面向对象设计与构造(Java) | 4000~5000 |
编译原理(C++) | 4000~5000 |
数据库系统原理(前端) | 2000~3000 |
其他个人项目(iOS、Python等) | 2000~3000 |
总的代码量大概在1W~2W行。其中编译原理虽然行数多,但是大部分工作都在做递归下降子程序分析,所以我个人感觉目前做的最复杂的软件项目还是数据库课上做的前端。
- 开发环境:WebStorm,Postman,Visual Studio Code,Chrome
- 项目简介:该项目采用前后端分离开发,前端基于Vue+Ant Design+Axios,后端基于MySpringBoot。我们团队一共三人,分别负责数据库模型构建与系统设计,前端和后端。我负责根据数据流图与后端提供的接口文档,实现数据库系统的Web前端开发部分。
- 主要职责:参与数据库设计讨论;CSS页面样式编写;JavaScript业务逻辑实现。
在开发过程中,我主要采用 Vue 框架以及 Ant Design 组件库,并参考了网上的开源项目。我用一周的时间学习了Vue的基本语法,在项目中运用了双向绑定,组件复用,Vue-Router 跳转,Vuex 存储等功能.通过Axios发送同步与异步请求,从Java后端获取数据并渲染到页面;在前端同样实现了部分业务逻辑,如实时计算并排列商城页面的橱窗,最后也进行了不少防呆设计。
我想可能因为我们小组3个人都是二刺螈的缘故,制作的过程非常欢乐,效果演示可见《基于Vue的手办百科与交易平台》。
2.3 科班出身和北大青鸟有什么区别?速成的培训班和打基础的大学教育还有mooc之间有区别吗?
对于将来都要从事Coding工作的的人来说,我觉得科班出身和北大青鸟的差别不大。我周围的同学很多也是不局限于课堂,通过Mooc以及官方文档自学了很多编程知识。而在牛客网等求职导向平台,大家也都在学习基础知识的八股文、交流如何增加项目经历。我想很多科班的学生对于计网、操作系统的学习都是不够扎实的。
然而在2021的时间节点,我想培训班出身大概是越来越难找到工作了,博客G中的逆袭故事很有可能成为时代的绝唱——毕竟现在科班出身都找不到。而不能快速上手项目文档,需要借助Mooc视频这一相对低效的介质进行学习,可能并不能算是一个加分项。互联网野蛮生长的时代已经结束,从各种专业转行进入计算机行业的人也许有着比参加培训班更强的自学能力。
而如果要从事计算机科学的研究,那么显然还是需要科班出身并进行深造的。
2.4 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
没有。高中时我曾参加过数学竞赛,一直以来对于数学也有着一定兴趣。
而线性代数和概率论知识也能为机器学习、图形学等打下一定基础,为学生提供了更多的选择空间,从考研的角度来说也是需要考察的项目。
3. 第三部分:未来规划
3.1 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
在大二之前我一直不清楚自己的发展方向,而在读过《白非立上进记》1后,我有了更加明确的规划:我目前不打算考研,希望本科就业之后直接工作。将来的梦想则是成为开源项目的参与者与独立开发者。
- 技术道路:学习移动端开发、分布式微服务等知识,准备面试,进入大厂工作并积累技术经验
- 职业道路:先从码农开始吧
- 社会道路:希望可以一直保持观察,考虑通过自己的实践解决未被满足的需求
3.2 你对于实现自己的梦想已经做了或者计划做什么样的准备?
目前我已经在国内互联网公司日常实习了,3月后可能打算投递其他公司的暑期实习。
3.3 实习经验究竟有多重要?是否需要马上开始积累实习经验?
我刚实习了一周多,而通过这段时间的经历,我觉得对于不打算进行科研的人来说,“有过实习经历”还是很重要的。北航的学历能够让我们通过大部分简历筛选,而在面试中项目经历就是重点考核内容。
在实习过程中,大部分内容还是要从头学起——比如我学到了这个世界不只有git commit -m
这一种commit方法;企业对于实习生的自学能力也有着比较高的要求,学习5天语法后就开始参与项目实战了。
我也提前接触到了企业的工作氛围,进一步明确了自己的目标。因此我觉得如果对自己将来发展还不明确的同学来说,可以尝试下实验室实习与企业实习,便于做出更适合自己的选择。
4. 其他参考文献
note
这是一篇搬运自博客园的文章,发表于 2021-03-06 17:14。
- 白非立上进记(1) - 弗兰克扬的文章 - 知乎 https://zhuanlan.zhihu.com/p/91072728↩