今天要分享的这篇文章,比较特殊,是我们团队一位同事写的。主要分享了他从 0 开始学编程,再到加入鱼厂光速转正的故事。长达 6000 多字,诉说了自己四年多的经历,满满的真情实感,大家可以当个小说阅读。
以下是他的原文:
大家好,我是程序员 K.N,一个试图用代码和世界重新打结的前端小白~🤓。
第一次接触代码的时候,我还不太懂那些陌生的符号到底能干什么,但总觉得它们背后藏着某种“魔法”。于是,靠着好奇心和一点点不怕折腾的劲儿,一头扎进了代码的世界。
如今,我的身份多了个前缀——前端开发工程师,但在我心里,自己其实一直都是那个想要捣鼓出点有趣东西的小白。也许我还在探索、还在成长,但这就是最有趣的部分吧。接下来,就是我一路“打怪升级”、踩坑又爬起来的故事,愿能为还在编程路上努力的小伙伴带去一点欢乐和鼓励~ 💪
一段与代码结缘的青春
回到那个夏天,我刚刚结束了高考,满脑子想着度过一个无所事事的假期。
高考成绩出来前,我曾努力学习过原画、插画、学习摄影,为的就是给自己的职业选择做规划,也曾梦想过成为游戏公司的原画师。
(刚学一个月画的,有没有王者的感觉?幸好没有继续走下去,现在不管是 Mj 还是 SD 画这些不是手拿把掐?)
后来就想着找份兼职边学边赚点零花钱,就走进了“喜茶”的奶茶店,成了店里一名兼职打工仔。
本以为工作轻松,结果发现每天的事情还真不少。店里的奶茶早已火遍大街小巷,但火爆归火爆,内部系统却还是半手工的古早模式。尤其让我惊讶的是,有个职位叫“食品安全卫生员”,专门负责标记奶茶中的小料(波波、芋圆、芝士等)有效期。
每隔一两个小时,同事们就要手写一批新的标签贴在小料碗盖上。这一切看似简单,然而当周末爆单,他们手写标签的速度简直堪比流水线,但还是会跟不上需求。现场堪称人满为患时,手写有效期标签几乎成了不可能完成的任务。
有一次在周末大爆单中,我一边奋力手写标签,一边内心不断OS:“有没有一种工具,能自动设置时间、管理小料,还能接入打印机,定时自动打印这些标签呢?”
我本是个门外汉,但从那天起,似乎有种奇怪的动力在推动着我找答案。偶然之间,我接触到了一种叫 Python 的编程语言。心想着或许某种程序可以拯救我, “脚本语言” 、“自动化”、“任务调度”,一系列看似高端的字眼让我产生了些许希望,于是趁着休息间隙,我开始摸索起 Python 来。
我一头扎进了 Python 的世界。靠着找的免费基础教程,那时还没有 AI 的辅助,遇到点问题都得不断查阅各种资料,加上几天的努力,还连着几晚的熬夜,连着夜里对着代码试错,我硬是写出了一个简单的demo。
终于,我可以设置好时间,它能自动打印出符合规定的标签!那一刻,看着屏幕上那些自我运转的代码,我不禁惊呼:“这玩意居然让我写出来了!”
当我怀揣着 demo 交给店长时,他竟然表示支持,并提出可以让总部参考一下这个提议。虽然最终总部请了专业程序员来开发正式版,但我那几天的 “Python 马拉松” 却让我打开了另一扇门:原来,代码真的可以改变世界啊!
经过这次与代码的结缘,我也没再纠结,毫不犹豫地填了计算机专业志愿——代码不仅仅是工具,代码带来的成就感,还可以是另一种实现梦想的方式!
从青涩到逐步成长的编程路
大学生活带来了无数转折,而最幸运的转折,是遇见了我的舍友与我的 技术引路导师——鱼皮。这个舍友是个 Java 后端的 “狂热分子”,我和他一拍即合,我们约定了今后合作的 “技术边界”:他搞后端,我负责前端。这份默契成了我专注前端的起点,而实验室里的各位学长学姐则给了我持续成长的力量。
每周的实验室技术分享会,成了我最期待的时光。我们会聚在一起聊一周学到的技术,大二大三的学长们早已涉足了卷积神经网络领域,个个看起来像大佬,不出意外的是,那两位大佬,也如愿先后进入了阿里、字节。而我也逐渐在他们的熏陶下成长着。
随着技术积累,我跟舍友先后参加了软件杯、挑战杯、互联网+,甚至字节跳动主办的创客马拉松,个中酸甜苦辣也让人回味无穷。
最让我刻骨铭心的,是那场创客马拉松比赛。我们得知字节飞书要办比赛时兴致勃勃地报名了,因为这次的挑战规则相当硬核:24小时之内,基于飞书内部文档做出一个飞书小程序!
当时飞书刚起步,很多东西其实都不是很完善,而且一开始报名的时候,约定的是五个人一起来,谁曾想,个个临阵逃脱,唯独剩下我和我的后端舍友过来参加比赛了,不为别的,只为了能获取到一个字节实习的 offer。
比赛当天,偌大的赛场里都是来自清北的技术大佬,而我和舍友这对技术新兵,硬是顶住了压力,24小时几乎不眠不休地写代码,终于做出了一个图文阅读的沉浸式小程序。
然而,公布比赛结果的时候,却让我们备受打击。评委老师直接告诉我们,“这个项目没用,现在短视频大行其道,谁还看你们的图文小程序?而且别人的项目,都是软硬件结合,你们这个项目没有丝毫亮点”
我和舍友无缘奖项,还被判了 “没用” 的 “罪名”,那天真的很失落,甚至觉得自己的努力不值一提。这种感觉,仿佛一下子跌进了深渊。
好在我们没有放弃,在接下来的软件杯比赛中,我们调整心态、奋力前行,靠着数学建模赛题拿到了国赛三等奖。
之后,我们又在 “挑战杯” 和 “互联网+” 中卷土重来,结合口罩时期做了一款公益小程序,目标是帮助乡村小朋友更便捷地上网课。免费提供在线学习平台,这也算是完成了我们支教乡村的梦想。靠着这个项目,我们在 “挑战杯” 省赛中拿下了广东省一等奖。
在这些比赛中,我们一遍遍磨练技术,也在实践中不断成长。这份从青涩到成熟的蜕变,让我深深爱上了前端的奇妙世界。从那以后,我的编程路上便少不了对代码、对项目、对前端技术的那份执着,直到走出校园,步入职场……
求职的起点:迈出象牙塔的第一步
踏出校园,满怀期待地走向求职市场,我才发现自己面对的并不是一条直通的坦途。第一次面试时,我几乎把自己准备得无懈可击——自我介绍背得滚瓜烂熟,技术栈也复习得扎扎实实。结果坐到面试官面前,那种被审视的感觉让我瞬间慌了神。
其中一次面试,对方是个特别干练的女面试官,女面试官冷静地问我:“我们需要一位全栈开发,薪资每月5000,不过工作时间要求比较高。”
我连忙点头,毕竟刚踏入职场,心想着经验才是最重要的。
面试官接着补充道:“每天十点左右下班,周末可能也需要加班,我们是大小周。” 我当时脑袋一懵,还没从这工作时间中缓过神来,便被告知“如果能接受,那我们这周就可以发试用合同”。那一瞬间,似乎明白了 “试用期” 要试的可能不仅仅是技术。
终于在几次面试后,我得到了一个实习机会,公司挺大在深圳,但所在的是一个小型开发团队,项目不多。在这个实习中,我参与开发了一款酒吧卡座售卖小程序,专门负责展示酒水、在线点单,也能实时查看酒吧的活动信息。
之后又做了一款叫“搭子组局”的小程序(类似于鱼皮的伙伴匹配系统),让志同道合的朋友可以更方便地组局约会,一起去看展、爬山、甚至 K 歌等。这些项目虽然只是 “边缘业务”,但作为新手开发者,能亲手负责这些项目让我充满成就感。
然而,现实总是比预想更 “戏剧化”。因为这类小程序并没带来预期的盈利,公司的战略也在调整,整个开发部门被裁掉了。
......
还记得那天的场景,领导临时通知开会,突然宣布:“从下周开始,不再需要开发部门了。大家原本还在专注地写代码,结果听到消息后有些不可置信。会后,我和同事们面面相觑,几位资深的开发同事甚至有点无奈地笑了笑:“职场第一课就这么刺激啊。” 回想起这个实习生涯,真有点啼笑皆非。
虽然遇到的波折不少,但每次面试、每次开发的项目,都让我在不断成长。初出茅庐的我,对职场渐渐多了几分理解,也学会了更全面地看待未来的选择。这一系列求职中的 “闹剧”,不仅教会了我适应变化,也让我更加坚定要不断提升自己。
至此,2024 伊始,我快有大半年都在家里度过,刷力扣,刷算法,每天打开面试鸭背八股,跟着鱼皮做编程导航的项目,不断优化完善简历,一次机缘下,我的职业道路迎来转机。
鱼厂,我来啦!!!
......
初入鱼厂:实习生的新奇与挑战
在此之前,我就已经加入编程导航快两年半了,实习的机会往往来得意外,谁能想到,曾经代码学习路上的导师——鱼皮,居然成为了我的老板!
当时我并没有正式申请,机缘巧合之下,小 Y 在编程导航里发布了一个小任务,想找个线上的前端助手。后续主要负责编程导航以及剪切助手的开发,抱着试一试的心态,我参加了考核任务。
任务是开发一个树形结构的目录组件,有点类似于编程导航课程下的目录树。
我命名为 kola-tree, 技术栈是 Vue3 + TailwindCSS + Vite + TypeScript,虽然做起来有些挑战,但最后的成品还挺稳定,并顺利部署到了线上。有机会的话我会单独写一篇文章来介绍下实现原理 ~
预览地址:
开源地址:
鱼皮与多喝热水同学看了我的代码之后,决定再进一步测试我,向我抛出了一个线上实习的橄榄枝。
刚开始实习时,鱼皮并没有立刻给我核心任务,而是给了一些编程导航和面试鸭的边角功能,比如页面调整、逻辑修复之类的小需求。这种分配让我感觉轻松也有点遗憾——我希望能早日接触一些 “大工程”,证明自己的实力。
不过我的机会很快就来了。在工作中,鱼皮给了我一个需求:在 ByteMD 的Markdown 编辑器里实现图片拖拽调整大小的功能,类似于语雀中的图片编辑操作。
我阅读了 codeMirror 以及 ByteMD 的源码后,才发现实现这个功能并非我一开始想的那样简单,需要写一个插件以支持该功能。这个需求不仅涉及到前端UI设计,还需要兼顾 Markdown 的解析逻辑和拖拽的交互体验。功能看似不复杂,但在开发过程中,我意识到自己需要一个清晰的技术实现方案,并且提前做一些调研,看看同行的类似产品是怎么做的。否则会浪费很多时间!
目前编程导航中与面试鸭中大家能够流畅的进行图片大小编辑就是得益于这款插件的开发 ~
这一周的历练,不仅让我顺利完成了功能开发,也让我养成了在开发前撰写技术文档的良好习惯。
线上的任务进行得很顺利,大约半个月后,鱼皮向我提出了一个新提议:如果我愿意去上海线下实习,他愿意为我提供更多的机会,让我负责面试鸭 web 端的主要开发。
那一瞬间,我感到既兴奋也有些犹豫。作为应届毕业生,我已经错过了 “校招黄金期”,想要稳定的工作也不容易。经过两天的思考后,我决定接受这个挑战,去线下见识见识这位代码学习路上的导师,去线下继续这段不平凡的实习旅程 ~
成长的加速器:光速转正的故事
到了上海,进入鱼厂的线下实习之后,我的任务就不再是小需求的小打小闹,而是全面投入到面试鸭 web 端的开发中。这是公司准备新上线的重点项目,鱼皮对这个项目倾注了很多精力,用户关注度也高,对我来说既是机会也是挑战。
白天拼尽全力工作,晚上常常和鱼皮加班讨论新需求,他工作的拼劲甚至让我有点追不上,不过正是这种环境,让我快速成长。
这种 “拼搏模式” 甚至让我几乎没时间去找房子——最初几天,我不得不住在青旅和各宾馆民宿,每天拉着行李来回在公司和宾馆之间跑。鱼皮劝我 “住个舒适的地方,别急着加班”。
更让我意外的是,鱼皮劝我下班早些回去休息,但我总想着既然来了,就要尽可能多学点东西。鱼皮后来开玩笑说看到我身上有他“当年卷腾讯实习时的影子”,甚至劝我别熬坏身体。但我心里知道,能有这样一个机会去接触到面试鸭这种核心项目,努力拼一把值得!
面试鸭项目的推进过程中,我自主设计了不少优化方案,尤其是在用户反馈和需求方面,积极响应。团队对用户的反馈非常看重,有时用户提出的小小改动,我也会琢磨,觉得简单可行的话,就直接实现上线。
虽然这份热心让用户非常满意,但没过多久,鱼皮发现了我的 “偷偷自我加需求” 的习惯,提醒我这样可能影响核心任务的进度。鱼皮的建议让我意识到,有时候 “多做” 并不意味着 “做好”。工作的经验和边界感,或许才是实习生更应该学习的内容。
这段时间的努力,鱼皮都看在眼里。他常常在群里回复用户问题,用户的认可和反馈也让我更有动力投入。经过一个月的努力与版本迭代,面试鸭的各项功能趋于稳定,用户的活跃度和反馈度持续提升。
可能就是因为这种较高的 “匹配度” ,鱼皮竟然破天荒地提前为我转正。鱼皮后来分享说,这样的转正速度在很多公司中也是不常见的,让我想起当初鱼皮描述他在腾讯拿到转正Offer的那一刻,似乎职场的幸运都是给那些全力以赴的人准备的。
职场并不是一个单纯“打怪升级”的地方,更是一个锻炼心态和习惯的舞台。我很庆幸在这条路上遇到了一位好导师,既教会我技术,也帮我掌握了一些职场的生存之道。而这段鱼厂的经历,也成了我求职路上最浓墨的一笔。
鱼厂文化:从技术到人文的双重感受
在鱼厂,除了技术,还有温情加持。鱼皮真是一位暖心的老板!不仅关心我们的成长,还总是想方设法让我们在紧张的工作之余享受团队的温暖。入职时他也会上述那样报销几天的住宿费用,给新人腾出时间适应新环境,而在完成一个阶段性目标时,鱼皮更会带着大家去庆祝一番:下午茶、聚餐、剧本杀、密室逃脱,甚至是去杭州参加云栖大会,体验最新的 AI 产品,最新的科技氛围。每一次的团建活动,都会让我们在忙碌中找到放松的机会。
鱼厂的团队文化是包容且富有弹性的,问题面前没有指责,更多的是彼此支持。记得有次我在功能开发中遇到了瓶颈,开发同学们都会耐心听我描述难题,并提供不同的解决思路,几乎每一次请教,每一次交流,都能从他们的建议中找到启发。或许正因为大家对产品有一种“归属感”,每位同学都会全心投入,力求让项目做到最好。
鱼厂的协作精神,在遇到突发状况时更显得尤为珍贵。一次,面试鸭网站遭遇了严重的攻击,导致大量用户无法访问。由于我之前从未处理过类似的事故,多少有些慌乱,但团队的其他同学反应迅速,并立即组织紧急会议,讨论应急措施。开发同事松柏、阿星主动承担了大部分压力,带领我们搭建备用站点,以防后续的攻击影响用户体验。那一次,我见证了一个专业团队在面对压力时的冷静与效率,也学会了如何在关键时刻保障项目稳定运行。
有趣的是,鱼皮对公司的年轻文化理解得也非常到位。中秋节那天,他给大家发了黑神话悟空联名的中秋月饼!当我捧着那盒月饼时,心里忍不住想:对呀,这就是咱们公司的画风嘛,大家都是年轻人,追求潮流,整个公司文化都充满了年轻的气息。那一刻,感觉我们不仅是同事,更像是一群有共同语言的伙伴。
更有趣的是,自己有幸参加了第一届鱼厂的“码王争霸赛”,绝对称得上是大伙秀肌肉的高光时刻。大家在赛场上各显神通。
我原以为自己已在前端技能上有所积累,但比赛过程中才意识到基础的重要性,也体会到 “基础不牢,地动山摇” 的意义。那场比赛让我看到了自己与前辈们的差距,同时也激发了我重新夯实基础的动力。于是,比赛后,我也偷偷给自己加了个练习 “buff”。
在鱼厂,技术上的提升与人文关怀相辅相成,这里的每一位同学不仅保持着对技术的热爱,更有着面对困难时的勇气和互助精神。无论是面对复杂需求的压力,还是意外事故的挑战,大家都展现出一种不轻言放弃的态度。也许正是这种氛围,让鱼厂的团队变得如此特别,每个人都在这里找到属于自己的燃料,让心中的火焰愈发旺盛。我也真心感受到,鱼厂不止是个只会写代码的地方,更是一群有趣有爱的伙伴齐心协力、充满热情的归属地。
最后,再给大家分享下我入职鱼厂以来学习前端开发过程中梳理出的技术栈图总结,同时也是我正在不断精进自身技术的过程图,从基础能力到 React、Next.js 的生态系统,希望能为大家的学习之路提供一些参考。
对我也是对后来者的鼓励与期许
从最初那一份懵懂,到如今独立承担项目,回想这一路在鱼厂的成长,每一步都像是在重塑一个新的自己。代码从来不只是冷冰冰的符号,它是实现思考的路径,是自我提升的桥梁。编程不仅仅是代码的堆叠,更是一场对未知的探索,是不断在“优化”和“重构”中找到更好的自己。那些无数个夜晚,那些不计其数的重试与修改,曾让我困惑、怀疑,但也一次次让我看到,越过山丘,另一片天地总是等待着我们。
我想把这些话,送给正在努力、也在迷茫中的你。实习、求职、打磨技术的路上,难免遇到挫折、焦虑、看不见的未来。我们常常站在今天回望过去,觉得“当初走得很不容易”,也会忍不住站在今天遥望未来,觉得“那条路看起来还是很模糊”。但请记住,史铁生在《务虚笔记》里写过这样一句话:“如果你站在童年的位置瞻望未来,你会说你前途未卜,你会说你前途无量;但要是你站在终点看生命的轨迹,你就只能看到一条路,一条命定之路。”也就是说,所谓的命运,恰恰是那些未知的、不确定的部分赋予了我们生命的独特性。人生唯一的确定,就是它的“不确定性”。所以,大胆地去走,哪怕前途未卜,正因如此才有无限可能。
这一路上,我也曾因挫折停下脚步,也曾在前路迷雾中一度不知方向,但正是一次次的坚持和拼搏,让今天的我比昨天多了一份沉着。每一个深夜的思考、每一段代码的打磨,最后都会汇成我们脚下那条路。希望每一个还在努力的你,不必惧怕不确定,不必因暂时的迷茫而退缩。抓住当下,把今天写进未来,那些眼前的困难、眼中的迷雾,都会在回首时化为通向梦想的路标。
愿你心中的热爱始终炙热,愿你在追求路上不断前行,愿你在风雨兼程中不断成为更好的自己。去勇敢追求你所热爱的吧,因为走到终点时,你会发现,这一路的坚持,正是人生最耀眼的风景!