一个不留神就快到 2024 的 9 月份了,终于鼓起勇气开始总结我的 2020 到 2023。
2023的开始和结束一样突然。
2022 年底,在毕业前就经历了人生的第一次“干到公司倒闭”。
和大部分人在进入职场后才会遭遇到的第一次“毕业”不同,在大三暑假的实习中,我就迎来了这职场“第一课”。
那就先从这个“干到公司倒闭的实习”之前的经历开始回顾一下。
2022 年初,在经过长时间昼夜颠倒的各种维护、开发、会议工作后,决定从学校里待了两年的工作室中离开。
工作室
在这个待了两年的工作室中,我主要负责后端与嵌入式设备的开发,主要的技术栈是 Python。
开发的程序主要围绕着饭堂进行,比如饭堂内的刷卡机器,各种显示设备。
从 2020 年底加入工作室,就一直在工作室中开发着各种程序。
开端
但其实,从一开始,我是作为前端的一名成员加入工作室的,契机是一门名为“网络技术与应用”课程的大作业,大作业的要求是针对一个软件中的网络进行抓包,并将其在不同的网络层中使用的技术进行分析。
2020 年底在宿舍进行大作业的编写
我选择了 Apple music 作为我的抓包对象,简要从几个方面分析了其中所使用到的协议。
这份报告最终被工作室的老大(也是这门课的任课老师)看到后,邀请我加入了工作室。
在加入工作室的那天晚上,我被安排见到了当时负责后端的师兄,师兄给我详细介绍了当时后端采用的技术栈:PHP + ThinkPHP。
“要跑”
这是我的第一个念头。
听完师兄的介绍,我感到天旋地转,各种晦涩难懂的概念扑面而来,对于代码小白的我,完全是一点也进不了脑子,前端后端还没搞懂是什么,就要开始写代码,退堂鼓已经在心中敲响了。
回到宿舍冷静下来后,恰好我的舍友正在工作室中的前端团队担任开发,马上求救于舍友,他说前端比起后端来说,开发的过程更加可视化一些,并且上手起来更加有成就感一些,让我可以考虑申请一下直接转到前端团队,思来想去,和老大交流了一下我的想法,最终顺利地加入了前端的团队。
学习前端
加入工作室后不久,就迎来了大二的寒假。
在加入工作室到寒假结束这段时间里,我都在前端三件套的泥潭中翻滚,彼时的我并不懂什么是框架,不懂什么叫架构,只是用着最简单的三件套去构建各种不同的页面。
2021 年寒假在家学习前端三件套
这段时间,其实对于软件开发的概念还是很模糊,对于什么代码质量,结构编排之类的了解还是一片空白,但也是在毫无压力的情况下,从学习别人的代码开始逐渐慢慢地开始独立编写自己的代码。
在寒假期间,如同许多初入前端的新手一般,在看到别人的博客后,也想要构建一个属于自己的博客站点,虽然并不一定会写文章,但当时拥有自己的博客仿佛是一件很酷的事情(其实现在我也觉得很酷)。
但构建一套博客毕竟不是一件容易的事,因此当时的我先从开源框架玩起,第一个博客站点采用 Hexo 开源框架进行搭建,在不断修改各种主题源码的过程中也让我渐渐学习到各种布局与样式的使用。
最终便搭建了最初的 v0 版本的博客。
2021 年 2 月在搭建初期的博客站点
Python之旅
回到学校后,我继续三件套中 js 部分的学习。
但在 4 月的一天晚上,老大让我开始 Python 后端部分的开发,我就这样“丝滑”迁移到了后端团队。
同时,我也直接将住宿搬到了工作室中,为了更加方便地与其他团队成员交流,也可以有更多安静的时间可以去编写代码。
2021 年在工作室的一个夜晚
对于一个只学了一点皮毛的前端来说,0 基础地去编写后端显然是地狱难度,于是我又开始疯狂的学习 Python 这门语言。
幸好相对于 C++ 与 Java 来说,Python 十分的简单易学,虽然对于一些语法的使用并不是很熟练,但利用一些简单的关键字也可以实现想要的功能。
当时从许多的渠道去学习 Python,最后还总结出了一份学习资料。
对于我而言,Google 一直是我的首选搜索引擎,因此在学习的过程中并没有遇到太大的阻碍,从 v2ex、Stack Overflow 这些论坛中寻找到了无数问题的答案。
在后端开发时,由于需要采用 Python 作为后端开发的语言,因此在对比了许多框架后选择了 Django 作为当时后端开发的框架,但当时的我对于 Restful 的理解并不深,因此没有采用 django 中的 Django REST,而是直接基于原始的 Django 进行开发。
就这样,在源源不断的业务和需求中,Python 逐渐成为了我开发各类项目的首选语言。
工作室的日子
在作为后端成员的日子里,我也常需要承担一些嵌入式设备的维护工作。
因此出差也是常有的事,去过珠海,阳江,开平,周围的城市都去了个遍,趴在机器上维修的姿势也越来越熟练了(?。
在某个机器上进行调试工作
出差也让平日在学校的生活反复添加了一些色彩,许多团队成员不喜欢出差,我倒相反,可能是习惯了一个人在工作室敲代码,出差仿佛成为了难得的社交。
虽然说是一个人敲代码,但和我的好兄弟舍友总会偷偷在深夜撸个串,打个 FIFA,这些也成为了现在工作后,偶尔会稍稍怀念的时间。
撸串看欧洲杯(?德甲)
Burnout
开发-维护-开会,这样循环的日子一直持续到了22 年的 3 月份,这也是我在程序员路上遇到的第一个 Burnout 时刻。
在大三的寒假中,不知是因为什么原因,我早早的就把东西打包带回了家,重新在家里搭建好了写代码的工作台。
2022年初在家的桌面
在寒假中,我也仍在为工作室中的新项目熬着夜,不仅要处理手头上的工作,还要去带新人去熟悉整个系统的架构与代码,我开始感觉力不从心。
随着在工作室接触的项目越来越多,也有越来越多的任务落到我身上,因为人手不足的原因,许多事情都需要我独立完成,不仅是前期的设计,后续的维护等任务都需要我去全程接手。
终于在寒假快结束的时候,我决定要离开工作室,好好休息一段时间。
我买了游戏机,邀请朋友来我家玩游戏,看着朋友玩游戏比自己玩游戏仿佛更让我有满足的感觉,去看了电影 花束みたいな恋をした(花束般的恋爱)。
因为太喜欢 花束般的恋爱 这部电影,在购买了投影仪后,我第一部测试的影片便是它。
在房间的墙壁上看花束般的恋爱
终于在 4 月的某一天,经过漫长的交接后,我离开了工作室。
短暂的休息
闲着的日子并没有很长,4-6 月过得很快,好在大三下的课程并不繁重,上完课后就又快到暑假了。
这段时间,没有课的时候都会呆在家,弹琴,做饭,听歌,仿佛又回到了疫情时间待在家上网课的惬意。
自制面面(螺蛳粉)
闲暇的时间过得很快,一转眼就到了放暑假前的一周。
这时,一个工作的机会向我抛来。
舍友实习的地方有一个后端即将要离职,需要一个会 Python 的后端去承担维护和重构的工作。
没有经过太多的考虑,经过简单的面试和了解,我便加入了这个团队。
AGA
工作的地方不大,环境是一个电竞体验馆,我们在体验馆最里面的办公室内工作,有时候外面也会有人租下场地,举行一些聚会,这便是我们蹭吃蹭喝的好时机。
一进门的布局
场地在二楼,上到二楼,经过一个玻璃门,就到了电竞馆的场地,再往里走,经过一个自动门,绕过桌球台,打开房间便到了工作的地方。
需要绕过的台球桌
团队的成员并不多,但是技术氛围却十分浓厚。
团队正处在技术栈转换的时期,将主要的技术栈从 PHP 与 Python 转移到 Go 中,这便是我第一次接触 Go 的时间点。
周会
团队中有一个老大哥,主要负责架构的设计与业务的逻辑梳理,我们亲切地称他为晖哥。
每周我们都会有一个技术讨论会,不像一般的会议,我们更加关注技术的分享而不是业务进度,这便是我在 AGA 中技术得以突飞猛进最不可缺少的环节。
我们将需要分享的技术心得或者技术难点首先编写在文档上,在周会上通过文档与代码结合的方式进行分享。
当时为周报准备的资料
无论是前端还是后端的成员,都可以提出自己不懂或者觉得有矛盾的地方,团队中提出的问题或者解决方案也会记录在文档中,经过几次收获满满的会议后,团队也有了一份独一无二的技术文档。(不久前去翻阅了一下,又收获了不少之前被略过的内容)
难得的周末
在加入 AGA 团队后,最核心的改变,是我切实体会到了周末的气氛。
在学校工作室时,24x7 Oncall 仿佛已经成为了一种常态,因此周末与平日并无不同,还是需要随时待命,在有突发情况后就要马上响应,因此也是在那个时候开始,习惯背上了龟壳(背包🎒)。
在刚加入团队时,周会是定在了周六的早上,回来开个会,讨论一下就可以下班,而不久后改为了周五下午,这意味着我第一次完整地拥有了周末。
周末有时和朋友聚会,有时自己在家看电影,有时也会出去走走。
某个惬意的周末
这应该是开始写代码以来,最纯粹写代码,也是最轻松,可以好好享受生活的时期。
同时这段时间也把房间里的布置升级了一下,更像一个程序员…
2022 年 8 月的桌面
第一款游戏
也是在这段时间,我第一次接触到游戏开发,团队计划将一款线下桌游改造成一款线上游戏,采用线上与线下搭配的方式进行游玩。
于是我们在公司玩起了桌游。
游戏完成第一个版本的那天
游戏开发对于我而言也是一个陌生的领域,需要涉及的领域比常规的 WEB 后端多了许多。
在各种在线状态、实时同步、数据传输与字段设计上,都踩了不少的坑,但最终最终,还是磕磕绊绊完成了这个游戏。
但这个游戏成功卖出去了吗?
我觉得没有。
物联网开发
在先前工作室的经历中,嵌入式设备的开发和维护给我积累了不少经验,因此在接到物联网设备开发的任务时,突然有一种“不知道为什么要学,感觉会用到”的感觉。
采用 arduino 作为固件,在各种的 ESP 板上进行开发,使用 mqtt 协议进行数据传输。
在那段时间,每天都有许多新奇的任务和知识等着去探索,每天的时间都感觉过得很快,不经意抬头,已经到了下班的时间了。
某个准备下班的时刻
解散
这是解散前一天,我随手拍下的录像,天很蓝,天气却不是很热,团队成员都在默默写代码,我一瞬间觉得很美好,就随手记录了下来。
12 月前的最后一天,主管迟迟没有回到公司,我也觉得公司的气氛有点奇怪,终于下午快 4 点的时候,主管一脸麻木地走了进来。
“由于总公司资金调整,江门这边的研发就先关闭了,大家可以走了,补偿后面发给大家”
对于那时还是学生的我,没有各种房贷车贷的压力,首先的反应是觉得遗憾,遗憾是因为觉得团队的氛围很好,做的也是喜欢的工作,被迫离开了,有点不舍。
而对于其他的成员,需要去找新工作,需要重新考虑各种问题,当时安静的气氛,我想,直到我终于出来社会后,才在某个瞬间突然感悟。
当时疫情仍未解封,还需要带着大口罩
主管告诉我们可以带走框架的代码,叫我们整理好自己的文档,后会有期。
这个一起构建起来的后端框架,直到现在,仍是我开始新项目的首选。
论文折腾期
从 AGA 离开后,我将精力都投入到了论文写作中。
年少轻狂,总想在论文中整个大的。
于是乎,我极尽所能,把当时学到的最先进的技术一股脑全部用到了毕设上。
什么微服务、消息队列、CI/CD、K8s、K3s…
也是在这段时间,我第一次尝试用已学的知识去构建自己的服务。
使用 uptime kuma 来监控自建服务
在这段纯粹的折腾时间里,我在 GitHub 上翻腾出了许多开源的软件,同时也是在这段时间里,我第一次体会到开源对开发者来说意味着什么,开源不仅仅只是简单地将代码公开,而是一种更深层的,分享、协作的精神。
这也为我毕业工作后将业余时间投入开源社区埋下了一颗种子。
星巴克
说起来,在写论文的时候,去的最多的地方,可能就是星巴克了。
“为什么都要去星巴克写东西?” 你可能会问。
其实星巴克的网络并不好,断断续续的,而且环境也不安静,桌子也有点摇摇晃晃的,让我可以去星巴克而不是图书馆的唯一原因,就是:
图书馆有点太安静了。
这个荒谬的理由就是让我选择星巴克的核心原因,家附近的星巴克会有一个长桌,许多人都会在这个桌子上做自己的事情,也仿佛有点伙伴的感觉。
但星巴克也有蛮多会影响写作的因素,比如突如而来的尖锐的咖啡机噪音,跑闹的小孩子,因此在有灵感的时候,我都是呆在家进行毕设的编写。
毕业🎓
经过漫长的毕设折腾,在 5 月提交论文终稿的那天,大学生涯就结束了。
大学的时光,仿佛从大一下学期加入工作室后,就被突如其来的提前实习偷走了。
和许多人丰富的大学生活不同,我大部分的时间,都是坐在屏幕前写代码度过的,但是也是这些时间,让我可以比较轻松地找到工作,但这是否值得我错过那些未曾尝试的分支,我不敢想得太多。
先前忙忙碌碌的日子,也让我从随性变得焦虑,我已经习惯了被工作填满的日子,习惯有许多的待办事项,写代码可能成为了一种逃避社交的手段。
转变出现在毕业后的工作中。
KES
交完了终稿,我便开始了找工作的进程。
在家乡这个小地方,想要找一份纯正的程序员岗位简直是大海捞针,这里没有互联网大厂,甚至连互联网公司也很少,就算是程序员岗位也是小型的外包公司居多,因此在面试了 4 家公司后,我最终选择了一家电商公司作为毕业后的第一份工作。
入职半个月后的桌面
浅尝桌面端开发
在入职后的第一个任务,便是需要针对公司的网络进行优化,找出网络较差的终端并进行修复。
在这篇博客中有详细的介绍:
在项目中我也尝试去使用先前学到的 CI/CD 相关的知识,构建出一套完整的测试发布流程。
重拾前端
在电商公司作为程序员,开发的程序基本都是面向内部的,因此用的技术栈很杂,在后端上,Python、PHP、Java,主打一个实现就好,够用就行的实用主义。
因此在经历了一段时间的后端开发后,我决定重新开始学习前端。
前端
在重新开始前端的编写前,我重新了解了一下最新的框架.
由于很久之前已经学习了一些前端三件套的东西,因此我直接从框架开始看起。
不同框架的使用占比
发现 React 生态还是蛮繁荣的,想着用的人多,抱着使用起来发现问题应该也能找到答案的想法,我一头扎进了 React 生态中。
第一个页面
我先从尝试构建一个简单的可交互的页面开始。
在寻找组件库时,我选择了当时 Radix 新出的 Radix Themes 进行尝试。
对于新手而言,内部的许多布局组件与操作组件都可以很好地降低了上手构建的门槛。
最终使用 React 搭配 Radix Themes,构建出了第一个页面。
现在看来,虽然代码实现了功能,但是代码质量只能说是不堪入目,各种 margin 乱飞,useState 滥用, 只能说看起来还行,但只是一个粗糙的尝试。
重构博客
7 月的某天,在阅读到 Cali 的这边博客时,我决定也跟着文档去搭建一个新的博客。
最终缝缝补补下,糊成了第一个版本。
2023 年 7 月的博客
在这个项目中,我也开始了解到 Next.js 这个基于 React 的全栈框架。
各种仪表盘
刚踏入 Next.js 时,就被各种开箱即用的功能和服务给吸引住了。
各种缓存,构建优化,各种新奇的概念,ISR、SSG、PPR,都让我重新体会到了学习新知识的快乐。
在学习一段时间后,我开始为自建服务搭建一个可视化的仪表盘。
Homedash v1 版本
使用 Next.js 搭配 semi design 的组件库完成了这个仪表盘的搭建,当然后端获取数据使用的就是在 AGA 时期魔改的 Go 后端框架,构建完成后,我在 GitHub 将代码开源,也是这次开源,让我收获到第一个 100 stars 所带来的“满足感”。
此后,我还为部门内部构建了一个监控的仪表盘,以便于让我们在出现问题时,可以快速定位到是哪个组件的问题。
订餐系统
要说最有意思的项目,当然就是为内部构建一个订餐系统了。
在订餐系统之前,内部订餐都是通过表格的方式进行的,需要每个员工打开表格,找到菜单,在新的一行填入自己想要预定的餐品,虽然后期改成了在线表单的形式,但是对于使用者来说,仍然不太方便。
- 只能预定菜品,看不到是否有成功的反馈
- 人事需要手动为每一行订餐设置序号
- 员工无法查看先前的数据
因此,和同事一合作,在一周多的时间内,我们就完成了一套从预定下单到最后数据处理都完全由代码去完成的订餐系统。
订餐系统由 Next.js 搭配 semi design 完成(当时还不了解 Shadcn),使用 Docker 构建镜像后部署在服务器上,在钉钉中进行打开并进行后续的鉴权。
新的订餐系统上线后,还获得了同事们不错的评价,也让我又一次感受到构建软件所带来的满足感。
最后的年会
洋洋洒洒写到这里,已经快有 6000 字了,去年年底发生的事情也渐渐开始模糊了,只记得被安排做了许多其他岗位的事,被安排用难以维护的框架去完成的任务,当时的拉扯和纠结,已经在今年新的工作中渐渐消散了,只记得最后的年会,我和同事们玩得很开心。
2024 年离职前参加的年会
新生活
2024 年对于我而言也是转折巨大的一年,来到了新的城市,茫然地开始新的生活。
现在的生活,混杂着兴奋与期待,也有一丝对未来的怀疑,我想我可能是有点想念那个熟悉的小城市了。
谢谢你的阅读,很久以后的杂货铺总结再见👋。
祝你生活愉快。