精选

鱼厂实习总结来啦!

缘起

去年 8 月 6 号,y 哥问我我是否有当编程小助手的意向,当时我还有些犹豫,现在想想真的差点错过了这个宝贵的机会。一年前的我怎么也没想到,这竟然成了我进入鱼厂实习的契机。当时 y 哥找我的原因,我想主要是因为我在编程导航社区比较活跃,之前在群里帮助过不少鱼友远程解决技术问题,现在想想真的是无心插柳柳成荫啊。

编程小助手经历

我现在还清楚地记得,备考专升本的那段时间一边上高数、英语课程,一边在下课后查看编程导航帖子和群里的消息,看看有没有我可以回答的问题。尽管忙碌,但帮助他人解决问题让我感到充实,真是痛苦并快乐着。

最难忘的经历莫过于除夕夜,我还在帮一位朋友调试 Bug。这真是一次神奇的跨年经历。

这段小助手的经历让我收获巨大。过去学习项目、解决问题都是独自摸索, 主要通过学习鱼皮大佬给其他人的问答来明确方向,很少有机会与鱼友深入交流 。但通过小助手这个机会,我结识了许多优秀的鱼友,更重要的是变得更加自信了。就像游戏中打怪升级一样,每解决一个问题,我的自信 +1。这种成长体验让我受益匪浅,现在遇到暂时解决不了的 bug 也不会慌张,相信自己一定能够找到解决方案👍。

到目前为止,我已经添加了将近 500 个鱼友,非常感谢每一位愿意让我帮助的鱼友,谢谢你们的信任,我一定会继续努力!

线下实习机会

6 月 3 号,去哈尔滨参加专科毕业答辩的高铁🚄上,我突然收到了鱼皮哥的消息,说我可以去线下实习。当时还以为是在做梦🤣从天而降的实习机会啊,而且时间非常合适,我专升本考试结束后到开学前有大半年的空闲时间,正好可以去实习啊,真是求之不得的机会。

再次感谢鱼皮哥和 y 哥给予的宝贵机会!

鱼厂的上班氛围也是真的好,大家可以因为某一个话题有说有笑,也不会有人疯狂 PUA。到吃饭的点就去干饭[手动狗头],团建还非常多,我在的两个月大概团建了大概 4 次的样子,鱼友们有去鱼厂的机会就不要犹豫了,干就完了!

实习感悟

两个月的实习时间让我成长了很多,也发现了自身的不足。总结可能有不对的地方,大佬们多多包涵😭

不要自以为是,不懂及时沟通

大佬 A 让我修复一个小 bug,我按常规操作新建分支并切换到对应分支进行开发。在配置数据库相关信息时遇到了报错,但我没有及时向大佬 A 反馈获取最新的 SQL,而是自作聪明地把对应的 entity 类交给 ChatGPT 生成 SQL。完成功能后提交 PR,结果出现了非常离谱的问题:我本地运行正常,但在大佬 A 那里直接报错,浪费了他一下午的时间😭。大佬 A 也告诉我像这种修改了数据库的表这样重要的内容,正常工作都是由一个专门的文档进行记录的,非常重要!

经过这一次意外让我深刻意识到:有问题一定要及时反馈,而不是自以为是。不要害怕提问,搞清楚问题大家都能节约时间。不懂就问,不确定就问,避免南辕北辙!同时有风险要及时暴露出来,不要等到快验收了才抛出问题,到时候神仙也救不了啦。

要准确理解需求才能避免返工

写代码之前一定要做好充分的调研和实现方案文档,这比写代码本身更重要。如果没有调研好,方向错了,就需要重新编写代码,给大家增加没有必要的工作量。比如, 在开发一个内部工具时,需要将 PlantUML 代码转化为图片,我当时并未完全理解 PlantUML 的作用,想当然地以为,可以直接将框架生成的流程代码渲染成图片,结果自然是南辕北辙,做了大量无用功。

不得不感叹,这个表表情包太真实了

写文档贯穿始终

这两个月对于文档的理解真的是深刻啊。文档真的是贯穿始终了,第一个需求是大佬 A 给我调研好的文档,后面的需求是自己写的文档,最后也是有离职文档要写,写文档真的是贯穿始终啦

比如我就学习到下面的几点

1)使用到了一个新的框架,需要提供可以直接运行的简单 demo

2)需要重点说自己的卡点(浪费时间最久的卡点)不要再让读文档的人再浪费时间去踩一遍坑

3)主流程要清晰,开始列举序号的时候前面都要介绍一下你下面的是啥,这样读文档的人就可以挑选自己有用的信息去读

4)README 文档一定要表明代码运行的环境比如 Node22、Java17 等等

5)如果是需求调研文档,最后的总结一定要具体指出自己选择的哪个方案,以及各个方案的优缺点做一下介绍。做到读文档可以只看总结也可以了解各个方案的优缺点,节约时间

6)重点代码要着重标注,不重要的代码可以进行折叠

比如,在语雀可以这样

重点标注示例

折叠代码示例

代码规范的一致性

第一次提 PR 时,我的代码风格与项目整体规范不一致,导致大佬 B 花了大半天的时间来 review,浪费了大佬宝贵的时间。很多问题其实都是可以提前避免的,保持与项目代码规范的一致性也是很重要。

比如团队协作一般都要使用的 Git , 我当时没有理解 merge 和 rebase 的区别一时着急用了 rebase 虽然没有造成线上 BUG 但是还是浪费了大佬的时间

为了防止以后忘记我专门记录一下 Git 操作流程,下面重点就是这个

Git 操作流程规范

提交代码前的标准流程,先更新一下主分支代码看看远程仓库里面的代码是否有更新,有更新就需要先 merge 主分支代码到自己的分支,之后再把自己的修改 commit 然后再 push

第一步:拉取主分支最新代码

1)使用 IDEA 自带工具

2)使用 Git 命令

bash
复制代码
git fetch xxx

第二步:切换到自己的分支
如果分支名是 dev/leikooo 这种格式(两个单词间有 /),IDE 中会显示目录层级结构,更加直观。

第三步:合并主分支代码

1)使用 IDEA 可视化
在主分支上右键选择 Merge 'master' to 'xxxx'(把主分支最新的代码 merge 到自己的分支),切记选择 Merge 而不是 Rebase,避免像我一样😭

2)使用 Git 命令

这个命令表示: 把 xxx 分支 merge 到当前分支

shell
复制代码
git merge --no-ff xxx

第四步:提交并推送
完成 commit 后再 push,可以直接使用 IDEA 进行操作。选择自己想要 push 的分支进行 push

充分测试的必要性

提交 PR 前一定要进行充分测试,尽量避免因为明显的 bug 导致重新部署上线,这样很浪费大佬的时间。不要像我一样,连前端很明显的 bug 都需要大佬指出后才去修改。比如前端的页面过滤选项正确和错误两个选线颠倒了。这种完全可以避免的问题就真的没必要等到线上之后发现再修改,测试也是很重要的啊!之前没有意识到测试的重要性

总结

回首过去,从高考后那个对编程一无所知的少年,到如今能为社区贡献一份力;从专升本的成功上岸,再到走进鱼厂实习,每一步都离不开幸运的眷顾。我庆幸自己过去几年的坚持学习,庆幸当初那个克服社恐的自己选择了帮助他人,更庆幸自己没有在一个耗时一周的 Bug 面前选择放弃。

非常感谢编程导航这个平台,感谢鱼皮大佬,最近几年的重大事件都有编程导航的陪伴,每天刷一下真的会获得向上的动力(鱼友们学历又好又卷啊😂),现在回看当年的打卡记录和积分排行榜的截图,真的是感慨万千!

体验过上班之后也深刻的理解到,上班的不容易真的还是挺累的,每天拖着疲惫的身子挤入人满为患的地铁,披着朦胧月光回到狭小的出租屋。我感觉可以能够理解为什么上班之后就不上进的原因了,太累了啊!虽然如此还是希望自己在未来工作的时候能够持续精进不要温水煮青蛙的颓废掉,虽然会很累但是什么又轻松呢?想起来一句话 「 真正有价值的事,从来都不是轻松舒服就能完成的 」

这次实习经历让成长巨多,让我明白出了问题要及时反馈、不懂就问、有风险及时抛出、代码规范、文档的重要性。非常感谢鱼厂的各位大佬的帮助,再次感谢鱼皮哥、y 哥给的机会😭。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
ARTS 0815: 分隔链表、大删除是加活不是减负与协议栈如何一层层拆信封
3
DeepSeek Harness 缓存命中率太惊人了,有时候竟然能到 99%,看鱼皮哥的视频竟然还出现过 100% 😱 https://www.bilibili.com/video/BV1VkgK6NEZS
7
ARTS 0809: 反转链表、Shopify 如何用 MySQL 解决超卖与 AI 时代程序员的价值
5
译文:《SwiftUI 七年:平庸的故事》 SwiftUI 在 2019 年高调发布,本应成为苹果全平台成熟、可量产的 UI 未来。七年过去,到了 2026 年,它仍像一场永不结束的 beta:布局难预期、性能不稳、数据流混乱,还几乎没有可靠的向后兼容,开发者被迫写一堆 shim 和 workaround。 作者用苹果官方教程(甚至是有问题的)以及与 UIKit 的对比说明:SwiftUI 用“看起来方便”换掉了精确的工程控制。更深一层,他认为这反映了苹果从 Cocoa、Aqua、Auto Layout 那种不妥协的工艺,转向“够用就行”的企业文化。 SwiftUI 为何存在 苹果并非单纯想提供更好工具,而是不得不应对竞争:React、React Native、Flutter 让“一套代码多端跑”变得诱人;Mac 上原生应用又日渐被网页和 Electron 吃掉。SwiftUI 要同时拴住原生生态、并降低移植到 Mac 的成本。卖点是:响应式数据流、声明式布局、跨平台复用。 数据流 “单一数据源”听起来很美,实际却是 @State、@Binding、ObservedObject,再到 Observation / @Observable 的不断换代。你很难确定视图会更新几次、为何更新;它该忽略的变化会反应,该关心的变化又可能忽略 - - 像个黑盒。 布局系统 基于尺寸协商的布局在 Keynote 里很合理,做浮动视图、自定义侧边栏时却极度不稳定。官方教程里一个很普通的侧边栏,多年仍有问题。布局脆弱到最后往往只能上 GeometryReader - - 一旦用了,声明式优势就没了,还要手算坐标,而且下一版布局规则一变,数学还得重写。 API 稳定与功能对等 代码里满是 if #available。滚动收起键盘要到 iOS 16;工具栏定制很晚才来;网络图片 AsyncImage 要到 iOS 15,缓存相关 API 到 2026 年 7 月仍在 beta。旧 API 常被换掉(如 NavigationView → NavigationStack),开发者要维护多套实现,等于替苹果做 QA。对比 Android 的 Jetpack Compose 可作为依赖打包回退到旧设备,SwiftUI 做不到“写最新 API、稳定回退”。 性能 在真实对比里,即便做了后台解码等优化,SwiftUI 图片网格滚动仍明显不如 UIKit。若展示一堆 JPEG 都得靠顶级芯片撑,架构本身就有问题。 跨平台神话 苹果说的是“学一次、到处用”,不是“写一次、到处跑”。iOS 上学到的布局很少直接适用 Mac;同一套 view 跨平台实现也不一致。结果常变成:学一次、再学一次、某处能用、处处要调。 哲学转向 最大的问题是“够用就行”:覆盖 90% 用例就算成功,用 velocity 掩盖质量下降。作者列举系统与一线应用中的各种瑕疵,认为这不是偶然,而是苹果主动降低质量门槛 - - 所以即使过了七年,他仍不信任 SwiftUI。 结论 对构建稳定、高性能、可维护系统真正重要的部分,SwiftUI 几乎都有问题。它不是“极差”,而是平庸 - - 用假便利换真精度,要么你花时间给框架打补丁,要么把半成品发出去。作者更宁愿继续用“遗留”的 UIKit / AppKit。 最后小总结: 最让人不能接受的不是“SwiftUI 还有 bug”,而是它把“看起来很快”当成了工程上的完成态。声明式、预览、跨平台,每一项都在秀高级感,可真正写进业务后,你面对的是难预测的重绘、脆弱的布局、层层 #available,以及把兼容和排错外包给业务方的现实。七年够长了,若还靠“框架还年轻”解释,那更像是对标准的侮辱。技术选型从来不只是语法偏好,而是你选的是可预期性、可维护成本,以及对用户体验的态度。平庸的“成功”往往比明显失败更危险 ,你说它能上线、能 demo、能交差,但是却在细节里一点点磨损信任。工具可以换代,但对质量的要求不该跟着一起降级。
4
ARTS 0802: 合并有序链表、AI 时代的技术断层与 TCP 200ms 延迟之谜
5
下载 APP