0919:随想
——“我确实对那些高大上的技术没有很高涨的兴趣,唯独希望设计几个有影响力的小作品,或针对开发者,或针对在校学生。”
0x0000A000
——我想我永远不会忘记第一次在一个学编程的网站上成功运行 printf("Hello World!");
的那一刻,那时我切身地感到面前的电脑此刻才真真正正属于自己。
0x00
这学期有一门听起来比较有意思的课程,关于企业开发,其实我蛮早就对这门课有所好奇,感觉能够学到一些实践性更强的技术,而不是像学校里一学期C++一学期Java一学期C#还都只是学到面向对象。后来,加入了负责老师建立的课程群,了解到学校会请一些企业工程师或高管来做讲座,之后便在暑假末期通过腾讯会议开办了2场讲座,然而在听过这2场的内容后,我却不太想开学了。
第一场讲座,嘉宾是一位来自微软的工程师,毫无悬念地,这是一场持续3个小时的.NET框架和及相关介绍,我不知道这听几个小时有什么作用,我只知道B站有大把的.NET教程;第二场讲座,来者是一位证券公司的系统开发工程师,先不管是金融机构还是互联网公司,只要是系统开发,那讲的就是系统架构了,于是再一次毫无悬念地领教了信息管理系统的架构层级。
但开学终究还是来了,第三次的讲座内容几乎与代码层面的技术没有什么关系,看到了一位实现了财务自由的技术转金融的35岁投资人介绍AI如何进入宝马工厂的汽车生产过程,还探讨了一点大学生活。实话说,没有我看到一个不错的JavaScript教程时激动。
终于,我不再期待第四场讲座了。
0x01
写到这里,倒不是说我看不起这样的讲座,只是这些内容即便是对于被迫来到CS专业的学生来说,也是一些常常会在信息流中被浏览到的知识,或许知乎上随便逛逛就会看到今天AI技术又被运用在了什么产业,百度上搜一个关键词就有CSDN的讲解,微博热搜就有各类科技新闻,甚至关注的公众号也会推送一些前沿科技的现状。相较而言,这几场讲座的受众,应当是在计算机领域里比我们更加普通的人。至少,对我来说,这种介绍性的内容并不合我的胃口。
私认为像这样的课程,既然被冠以“企业”二字,那就应该教一些企业开发的相关技术或讲述一些企业开发领域的要点:Git入门、设计模式、WebApp、JavaEE、敏捷开发、持续交付……如果我是负责老师,我想我会将这门课作为让学生统一接触企业的形式。我大约只会请5位左右的企业工程师,针对某一技术栈,比如前端工程化,比如JavaEE,比如小程序开发。我会请这几位工程师成立一个暂时的开发团队,自拟一个项目,接着做好项目架构与技术选型,先做一次以前期准备为主题的讲座,说明课程的任务和要求,然后带领学生以分组开发的形式来开展课程,每组负责一个功能模块,由一位工程师担任组长,以每周开组会的形式进行项目的推进。每位学生需要做好周报,对每周的开发做一个总结,而作为考核,在期末时每个小组需要撰写一份课设报告,描述小组所负责的模块与开发过程。
0x02
诚然上述看法显得我看不起这种讲座,但我并不是说厌恶这类对“高能”技术的介绍。然而对于我这样一个并没有系统地接触过一次从零开发项目的过程的人来说,马上就研究人工智能这种高端技术实在是有些不切实际,因此我也并没有选择这学期的机器学习选修课,而退一步说,短短三个小时也难以厘清.NET的整条技术栈,何况至少目前我并不对Windows开发有很浓厚的兴趣。我更加喜欢那种技术性更强、实践性更好的课程,即便是纯理论,我也认为需要搭配上实操,只有当自己在真实的系统环境上操作过才能体会到理论是如何服务应用场景的。
正因为我深知现在的自己实在是没有什么开发经验,所以才不愿意马上就接触那些高层次的、面向未来的理论和应用,而是更希望去实际地学习几项企业开发的技能,作为一名预备程序员,代码能力应当是首要的,否则拿什么去支撑起自己的ideas呢?其余的那些设计思想或是算法,也都是以服务开发过程为目标的。仔细想想,如果学习这么多的理论,但是却没有足够的能力支持自己开发一个作品,做不出一个完整的项目,那是一件令人挫败的事情。
很不幸,我现在就是这样。
0x0000A001
——从那一行C语言代码开始,关于这些代码如何运行而变成一句"Hello World"
这件事,我有着浓厚的兴趣,并且,对于我想开发的作品,我所拥有的一切幻想,也从这一行代码开始。
0x03
尽管我支持用实践帮助学习理论的观点,但是在以往的几个学期里,有太多莫名其妙的实验课,当然并非是实验课本身没有存在的必要,而是必须要写的实验报告,用无趣又无情的格式要求消磨掉了很多时间。那些我可以用来学习兴趣所在的时间,都变成了抄写实验要求,变成了手抄实验代码,变成了胡编实验小结,变成了没有问题也要想出几个问题来写上去,这就是无意义的形式主义吧,不加限制就会发展为内卷,而我们又不得不加入内卷。然而在漩涡里两年了,我也没有卷死过什么人,但自己却是感受到了危机,真的,看起来学了很多知识,但是我不知道怎么开发一个项目,我不知道怎么实现我幻想中的产品,我好像有一个大致的思路,意思是我应该知道我想要的东西会长成什么样子,但是我不知道怎么去塑造它。
以前看过一篇教育文章,家长们很不理解为什么孩子会陷入游戏而不爱学习,“要是把你玩游戏的精力用到学习上你成绩早就上去了”,实际上从游戏和学习的本质来看,它们的核心相同点就是你需要靠一定的努力去获得一定的成果。游戏中可以升级,可以赚经验,可以赚金币银币,一场游戏下来所获得的成就就很可观,因此激励玩家快速投入下一场游戏,但是学习不一样,通过学习获得一定的成果,这个过程远比打游戏要漫长得多。试想,你玩的游戏在某个阶段升级需要几百万经验,而一场游戏赢了也不过只能获取最高一千出头的经验,在一个等级停留了几百场甚至千场,那种无力感肯定会让你肯定会想不通:“这游戏是认真的吗?!”当我在抄写实验指导书上的那些要求和大段的实验代码时,我就有这种无力感。我不是那种有能力搞内卷的人,我不愿意参加那些奇怪的学校活动,也不想参加什么专业无关的比赛,但是综测会参与到奖学金评选,我很容易被别人靠综测反杀,但是的但是,我真的想多琢磨琢磨我的fantasy。
暑假伊始时我给自己列了一份很现实的清单,记录了一些我想学的技能,但是不曾想暑假里发生了一连串我无法预知的事情,我知道,这一系列计划都不得不中断,意味着虽然我无需抱怨那该死的实验,但我依然有两个月时间无法集中精力做我该做的事情。假期中至少一半的时间里,我晚上都会出门溜达,我不喝酒,所以买瓶盐汽水,碳酸刺激口腔与喉咙的感觉才将我拉回现实中,那是我不可多得的清静时光。
毫无疑问,到开学时我的危机感更重了。
0x04
新一学期终究还是到来了,我面临的是更重要的专业课,以及不那么有趣的选修课,还有一些课程设计和值得参加的比赛,是的,我终于明白自己应该去参加一些比赛。那些已经板上钉钉的事情我是没什么办法去改变的,有些无意义的东西我也不再想去做了,专注于我感兴趣的事情去做吧。我一直觉得学开发做开发就像玩游戏一样是一件见效很快的事情,甚至比打游戏获益的效率更高:写真真实实的代码,实现真真实实的功能。
前几天,朋友给我发了一串聊天截图,对方是今年保研资格的学长,有竞赛,有软著,有科研……对于保研,我可能深知自己几斤几两,但是那份软著却真正拨动了我心中的某一根弦,就像开头说的一样,我希望开发出几个有意思的、有实际意义的作品,对开发者或者大学生有用的应用。也许我会将其统统开源,如果能在自己的开源代码上成立商业项目,说不定我就能以此创业,当然做个打工人也没什么不好的,只是我应该会保留有这一份心,支撑我现在的学习。
雷军和尤雨溪一直是我愿意看向的人。
0x0000A002
——但愿我有时间去慢慢填补我挖给自己的坑,堆成一座山,蓄起一条河,养好一方人。