还记得那是 2019 年的春天。

我当时想,我的绩点也就这个样子了,周围的人也该觉醒了,未来还有转专业的同学,前 20% 我肯定是越来越指望不上。我应该想想我本科之后应该干什么。摆在我面前的只有两条路——考研和工作。

“我想我应该去工作。我应该当一个全栈工程师。”

于是那个学期,我就看起了关系型数据库理论。再下一个学期,我选了 “数据库系统理论” 这门课,与此同时在 bilibili “学前端”。一两百个章节我一口气就看完了。那一刻,我彷佛不再是某大学的学生,而是培训班出来的码农,脑子里面什么都没有。

我想,我的大学学习生活,到 2019 年夏天为止都还算是正常的。大一那一年,我简单学习了 C++ 的语法,并且浏览了有关 “数据库”、“分布式”、“网络”、“软工”、“机器学习”、“物联网” 等一系列领域的经典书目。暑假时还在 ganler 大佬的指引下用起了 GitHub。但从 2019 年的秋天开始,到 2020 年的冬天,坦白来讲,本人毫无寸进。我可谓是失去了一年珍贵的时光。

回忆那段难以回忆的日子,我得出了一些结论,写在这里给 1000 天之前的我看一看。

学习篇

  1. 学习 CS 是一个不断 “慕强与反思” 的过程。
    1. 只有你慕强,读经典中的经典,看代码中的代码,才会知道前进的方向。“慕强” 是 “交流”、“借鉴”、“学习” 等一系列词汇的代名词。去追那些拥有超级码力的神,去学习能够帮上忙的语法特性,去参与那些开源项目;
    2. 只有你反思,对每一处展开相似的思考和权衡。“反思” 不是一定要找出自己做错的地方,很多时候没有绝对的对错,要反思的是 “是否存在其他选择”。
  2. 你具备与计算机类似的目标:“更高、更快、更强”。
  3. 别想了,就从现在开始。不管什么平台,LeetCode 也好,Codewars 也罢,你每天刷一道题。什么?你说你刷不动?那就花个把月的时间,熟悉平台机制和基本算法。
  4. 课上教的内容 100% 是老旧的。课堂只是为了 “不知道从何开始的同学” 设计的,你可以请教熟悉这个领域的、可靠的学长学姐,最不济你也可以到知乎上看看学习路线。
    1. 你说不敢联系学长学姐?现在都是 21 世纪 20 年代了,大家都在网上聊天,现实生活中他们又不认识你,你怕个什么?
      1. 你怕他们议论你吗?大家都这么忙,谁有时间关心你?
      2. 你怕他们不回答你吗?不回答就换一个人。
      3. 你怕他们不方便,腾不出时间吗?这倒是有可能,你情商得高点才行呀。
    2. 你说知乎上动辄推荐十几本机工黑书?那就看呗。看不懂英文就看中文。你把那些书挑个 3~4 本,好好欣赏一遍过后,剩下的书就按 2~3 天 / 本的速度来,翻翻目录也可以。
  5. 写代码是必要的。学东西不写些代码怎么行呢?但是你万万不能钻到一个 Lab 里面出不来。不要沉浸于晦涩的语言特性和无聊的方式方法。
  6. 不要当搬砖工!你觉得搬砖对你的影响和作用会很大吗?很多时候,不是搬砖给你带来了积极的反馈,而是和你一起搬砖的人教会了你很多很多。
    1. CS 会上 SE 这门课,你也有很多机会去和其他人合作,为什么非要搬砖呢?
    2. 不要当一个 CURD / C-V Boy,你应该花时间在更基础的地方。
  7. 学完数字逻辑的我,还不知道三极管如何一步步封装成 RegFiles;学完计组的我,还不知道 PCI bus 做什么;学完操作系统的我,还不知道自己怎么才能写出一个操作系统…… 那还叫学过吗?
  8. 眼界要宽广。如果你能知道别人在如何学习某门功课,别人为这门功课做了什么,你就能更高、更快、更强。虽然在这种过程中,你可能会有些焦虑,但你已经站在了另一个层次。
  9. 你要自信。不要一天到晚做梦,觉得自己的绩点会突然降到 2.0。早早考虑一下后来的事情。
  10. 抓住自己空下来的时间,特别是大二下那个学期:
    1. 你如果能在 2020 年在家里圈着的那个春季学期到外校找一两个老师嗑盐,现在还至于焦虑成这样?
    2. 你如果能在 2020 年在家里圈着的那个春季学期找几个队友一起参加些什么 “互联网+”、“程设大赛”、“蓝桥杯” 或者其他什么作品赛,你工程能力还会像现在这样匮乏?
    3. 你如果能在 2020 年暑假搞到一份 remote,哪怕你是去磨洋工的,你能像现在这样铁废物一个?
  11. 哪怕你知道你只需要在期末考试之前两个晚上开始预习就能拿优,你平时也要认真学习。如果可能的话,你应该拿出 “期末考试前那两个晚上” 的精气神去学习。
  12. 只有拿出满分的决心,你才能拿优。你如果奔着 90 分冲刺,顶多能拿 89 分。
  13. 别觉得自己稳了。别人还有竞赛的加分,别人还有论文的加分,别人还有志愿服务的加分(这个加不了多少)。而你什么都没有,当事实无法改变时,你除了痛恨自己不争气之外,只能开始卷报告、卷考试。这才是你最悲哀的地方。而不是什么你嘴上说的 “我太笨了,学不明白”。
  14. 去和身边的名人聊天。他们被大家交口称赞并非毫无根据,以大多数人的能力水平,光是站在他们面前就能学到很多。
    1. 事实是,但凡你稍稍用一点功,也会发现他们也并不是任何角度都比你优秀。
    2. 当你发现周围的人无法提供你指导时,你要做的不是独自一人走下去,而是去积极寻找一个新的平台——那里有更强大的灵魂。
  15. 你的学习需要一位领路人。现在,仅靠自己慢慢往上爬注定是低效率的。你要找一个可以依靠的人,他要给予你一定的学习目标,还要在你即将走向歧途的时候把你拽回来。如果能找到这么一个人的话,那么日子要好过许多。

项目篇

  1. 你不需要通过搬砖来积累经验。
  2. 这个世界永远喜欢年轻的搬砖工。如果你想搬砖,你周围有很多砖等你搬。
  3. 你不应该在一个框架上花费特别多的时间。你应该做更多的尝试,哪怕为了用它你要新学一门语言、掌握一些技巧…… 我的意思是,你的心中要有一个比较。你要知道这个框架适用什么场合。别什么时候都写 Vue-flask,真的没意思。
  4. 学学 Java 吧,求求你了 skyleaworlder
  5. Dirty Work 有的时候是躲不过的。但是你可以问周围对它更熟悉的同学。不要怕麻烦别人!只要关于 Dirty Work,别人就是用来麻烦的。
  6. 我和 Larry Shen 一样不建议你(skyleaworlder)写前端。因为一个不会写代码的人,都可以来挑你的毛病,你的肺哪怕气炸了也不管用,你就是写不好。
  7. 如果你硬是要写前端,也没问题。你应该了解前端发展的历史,了解绝大多数现代化工具的使用,了解你写前端是在和什么东西作斗争。你还应该有不错的 JavaScript 基础,你要有 “万事万物都可以用 js 衡量” 的斗志,你要有 “用户体验的价值仅次于我的生命” 的决心。否则,免谈。
  8. 如果你是领队,要记住一个愿意学习的 “白纸”,永远强过一个不愿搬砖的 “万能手”。好消息是这两种人的占比都相当低,坏消息是绝大部分人都是不愿学习的 “白纸”。他们不愿意继续努力,遇到一点困难就退缩,把自己的事情看得比天还重要,每天有效工作时间甚至不足 6 个小时,就比如你。
  9. 论领队
    1. 如果队伍里有一个见识广的领队,他不一定负责任;
    2. 如果队伍里有一个技术力高的领队,他不一定负责任;
    3. 如果队伍里有一个热心人缘好的领队,他不一定负责任;
    4. 如果队伍里有一个负责任的领队,他不一定……
    5. 如果队伍里有一个知识面广、技术力高、热心人缘好,还负责任的领队,你需要考虑这个项目是否值得你花时间做;
    6. 如果上述条件都趋于有利方向发展,我的建议是好好干;
    7. 但我并不是说,上面这些都具备了才好好干。人生难有几回搏。
  10. 对你来说,项目成功自然是最好了。但项目失败也不要气馁。你必须从失败的项目中汲取大量的经验,选型、架构、合作等等方面都要考虑。
    1. 如果是选型的锅,我建议你找个都懂一点的队伍。如果找不到,以后就自己一个人做,反正课程项目也不难;
    2. 如果是架构的锅,我建议你多看看其他人的代码,学习他们是如何设计的;
    3. 如果是合作的锅,我必须告诉你,大家都是学生,没有人有义务给你打工。大不了以后就你自己一个人做,反正课程项目也不难。
  11. 不要羡慕那些表面光鲜的项目组。他们能做出来成果,99% 的可能是消耗了大量精力。只有 1% 的可能是他们安排得当。你如果不想肝项目,加进去了也没有任何成就感。
  12. 做项目就是一个给自己洗脑的过程。你必须让你自己相信你做的事情是有意义的,你做的事情是不可替代的。但实际上你做的事情根本不能被称之 “没有多大意义”,而是 “一点意义都没有”。
    1. 你的项目在大多数情况下无法落地。哪怕你的项目要商用,你的作品还需要经过长时间的打磨。而这并不是两三个月就能搞定的。
    2. 除非你写了一堆 Mount.Shit 来保护你的代码,否则你也不是不可替代的。
  13. 只要这个项目组和大多数项目组一样,“你加入项目组” 和 “你离开项目组” 的那两天就是你最快乐的两天。

生活篇

  1. 你如果每天晚上都去操场跑个三圈,你会像今天这样吗?
  2. 别熬夜了,你也知道你到了晚上效率并没有想象中那么高。你还记得你是咋考上这个大学的吗?你每天早起,有一整个上午的时间。尽管你高考最后拉胯了,但如果你在高中像在大学这样作息,你可能也就比一本线高个 100 分罢了。
  3. 在能选择的时候,选择一定比努力重要。在不能选择的时候,退缩可能比努力重要。在既不能选择,也不能退缩的时候,你的生命财产安全永远比努力重要。
  4. 更高质量的信息源应该是你不懈追求的目标之一。
  5. 把时间放在聪明人身上。如果要问 “那是不是也应该把时间放一点在傻子身上呢”,我的答案是 “当然可以”。因为你自己就是个傻子。
  6. 好好准备自己的每一场面试。每一场面试都是你人生的一个转折点。如果你大二的那几场面试成功了,你可能过得更好。