行者无疆·2025 —— 回望我的 Ruby 程序员元年
多年前,我在颐堤港凛冬微温的玻璃幕墙后谈笑风生,也惴惴不安;在中关村人潮汹涌的创业作坊虚度高薪,更满心惶恐;在暮色苍凉的时间国际啜着雄浑的八二年冰美式,任那草莽岁月困于阴翳,终未拨云见日。
巨型机器里的一颗螺丝钉,最痛苦的不是经年累月的磨损,而是妄图窥探螺孔之外的世界。
单元测试的 Mock 恰如其分,Swagger 的文档也大体标准,产研协作的每一次推进都有条不紊。可钢铁丛林的逻辑纵横里,那日渐浓稠的迷茫早掩埋了来路归途。我不知道前端如何调用接口、运维如何部署代码、架构师如何权衡方案;遑论产品如何设计、用户体验几何、而工资又源自何处。
写几行代码假装勤奋,挣一吊薪水聊以生存。北京像折叠的阴影,而我被日复一日锁死在窄狭的螺孔。
我很想做点什么,但不知道该做什么。
1. 单点失败:入梦魔法城
所有难走的路都不过是一步步抵达的。于开发者,最难走的路莫过于逃离“单点失败”。 塔勒布说,极致的专业往往意味着系统性的脆弱。而我天资庸常,在后端尚未精进,纵然心有丘壑,也不若先粗通全栈。
曾有一度,我在 Go 的清贫之地东拼西凑、乐此不疲。自觉进步很大,实则庸庸碌碌——甚至没能交付一个完整的后端 API,更遑论踏足那片血腥野蛮的前端疆域。
十数年应试教育刻下的对标准答案顶礼膜拜的僵化思维,在需要独自探索的荒原上处处都是死穴。仅就技术,我尚且不知道该出于什么考量、选择哪个库实现什么功能才是所谓“最佳实践”,在产品细节上叩问求索更像是一场遥不可及的梦。这种求而不得的焦灼让我长期陷于痛苦和停滞。
多年后,我仍然记得那个辗转反侧的深夜,论坛上那行文字如何惊鸿一跃:“如果你想体验 Web 开发的顶峰,Rails 仍然是不二之选”。顶峰和不二之选勾勒出的万千气象,一如“会当凌绝顶,一览众山小”般直击心底。彼时我尚是新手村里坐而论道、唯性能论的井底之蛙,对效率慢 Go 数十倍的框架不仅深以为谬,更是满心轻视。
但这句极具诱惑的断言三日萦绕,终是在我脑海里挥之不去。回望过去,习惯了 Go 的铁律森严、秩序井然,Ruby 更像一座魅力无限的魔法城,而 Rails 则是城里最璀璨的殿堂。
入城之路,难称坦途。引向那里的门是窄的,路是小的,寻见的人也少。而窄门之后,2.days.ago 竟可以幻化出前日;元编程像不曾听闻的点石成金术;Go 中永远也凑不完整的 Web 拼图,是 Rails 早已流动了许多年的盛宴。
若是当年听李笑来,对比特币而非割韭菜也这般心存好奇,也许我现在已经在某个私人小岛过上了枯燥无味的退休生活。
2. 冥冥之中:当机会来敲门
取法于中,故为其下。All in Ruby 是一场孤注一掷的冒险,更是一次深思熟虑的抉择。所谓“人生天地间,忽如远行客”,若不忠于所求,浮生一梦,又何堪虚度。
职位多寡,Go 与 Ruby 或有十百之殊,但我坚信求索经年,也未必大道如青天,我独不得出。伞哥在更寂寥的 CL 世界尚且风生水起,躬耕 Ruby 又何必忧心曲高和寡。
或许冥冥之中自有定数,我在去年岁末写完年终回顾,尚未开始准备八股,便在某天的凌晨因那篇文章收到工作邀约。后来和 L 哥一见如故、共事至今。
3. 夙兴夜寐:Ruby 一年
过去很长一段时间的超额学习和曾经工作中的积累,让我以为对这份即便从未做过的新岗位也当是驾轻就熟、信手拈来;但眼高手低、知易行难,不外如是。
去年春节,我在此起彼伏的鞭炮声中,为一个 CSS 问题困顿竟日;曾因固守 Rails 默认的 importmap,在无谓的兼容报错中虚耗良久,最终不得不折返 jsbundling;曾因对产品一无所知,在两个月后重构了轻率的路由设计;亦因对业务认知尚浅,在数月后彻底重塑了数据库方案;甚至在国庆期间,用 SolidQueue 替换了早期仓促上马、已然不堪重负的调度任务。
我总想让代码更洗炼,让实现更优雅,让设计更典范。我固执地认为只有优美的代码才可维护,而唯有可维护的系统才撑得起长久的事业。我不喜欢任何速成易失的投入,如昙花一现,烟花易冷。
但想要的总是暂时超出能力。我知道有些代码可以写得更好,却不知道如何写成更好。
适逢黑五,我购入了 PragmaticStudio 的 Hotwire 课程,Fizzy 的开源更令社区气象一新。稍加探寻,我便从这片瑰宝之地获益良多。上个月,我趁热打铁,在原计划之上,历时三周夙兴夜寐,将项目主体进行了彻底的重写。
重写即便只是数月前自己亲手产出的垃圾代码,也是一场绝妙的心理旅行和极致的精神享受。当 2000 多行满载状态维护、权限验证及令人自卑的 DOM 操作的 Stimulus 被精简成 200 行的纯粹渲染交互;当前端甚至还要两次额外请求的 400 余行代码被完全删除,取而代之的是 ERB 里的寥寥一行;当 500 行杂糅的 Controller 被拆解为数个职责单一的资源,我才在 2025 年的尾巴上告慰自己今年不曾虚度。
除去隐居乡野、远程协作的自由,这份工作更予我一种意料之外的纯粹:产研线上,唯我二人。L 哥掌舵需求,我则独力负责从前后端开发、测试验收、文档补充到云服务部署的全流程。没有冗长的需求评审,没有僵硬的接口文档,无需追问测试进度,也从不打听何时上线;技术上从心所欲,社区中偶得的代码技巧,旋即就能被付诸上线。
前公司一位架构师说过:“最舒服的公司就是只有十几、且不超过二十人的团队”,也许在公司达成完全的独立开发能更胜一筹。
4. 洞察本质:天才的思维图谱
大老板是清本藤硕,核心团队也几乎全员清北,如我一般的二本小伙侧身其间,多是 L 哥力荐下的运气。然而并肩之后感激之余,我更感慨名校光环外深不可测的精英思维。
L 哥是我职业生涯迄今所遇最天才的人。生于“地狱模式”的河南,沉迷网游却能保送 C9;研博期间仅凭外包便攫取了人生第一桶金;更是早在蛮荒时代,就已洞察比特币独特价值的极少数人之一。
由于公司结构特殊,我和 L 哥负责的业务正值垦荒期,两人便构成了这个偏安一隅的迷你部门。但这业务不过是 L 哥事业版图的冰山一角。日理万机的他,每次通话不是在会议中就是在高铁上,每日拨给产品的精力屈指可数,代码更是只在 rails new 时留过一抹痕迹。
记得去年刚认识时,他说自己极少写码,不过之前任技术总监,团队里前后端和移动端的问题都是他来兜底。我当时不以为然,以为年轻人心高气盛,可以理解。
直到有一次,我用的第三方模板和 Hotwire 存在兼容问题,一些操作会使前端组件失效,尝试了一天没有任何进展。他问我有什么问题时,我突然想起他的私人项目甚至还跑着 Rails 3,对新技术定然一无所知,就随口搪塞一下。但他执意问我几句 Hotwire 的原理,便给出判断:“你这是在钻牛角尖,如果你说的原理是对的,那你对 Hotwire 的用法就一定错了,直接用 Frame 替换变化的部分,保持其他组件不动,状态就不会失效。“
我很震惊!因为我从未见过以如此方式解决问题的人。接下来的一年我遇到的任何技术问题都不过是一次又一次的证明:没有 L 哥解决不了的问题。他什么都不会,但什么都能解决。他解决技术问题的思路从来都不是从某个技术点出发,而永远是直抵常识与本质,一针见血。
L 哥最常说的话是:“你应该先想一想这个问题的本质是什么?”
“我们生活中也是这样,你先要做一个对这个世界的认知,通过不断的实践来做一个对自己认知的判断,当我们发现一些新的状况出现,并且和我们的认知有偏差时,当时就应该想明白它的原理。”
我有时候怀疑 L 哥是不是研究透了老子的“一生二、二生三、三生万物”,因为他的思想无处不达,又无所不适,甚至用在 AI 上都能节约很多 Token。从前我每次恨不得写一篇千字文仍然换来答非所问,而他总是寥寥数语就得到想要的答案。L 哥说:“你不要把 AI 当作神,你要把它当作一个工具,只有你先想明白自己想要什么,想让它干什么,它才能给你想要的,如果你自己都想不明白,那你指望它能怎么回答?”
我常常有一种恍惚的错觉,我大约不是找了一份工作,而是在 L 哥门下读研。
5. 取而代之:梯子、缰绳与方向盘?
近年来席卷全球的 AI 狂潮似乎让每个人都成了超人,“小白也能一天上线应用”的标题充斥网络,“程序员已死”的声音甚嚣尘上。
L 哥曾提醒我不要过于看重技术,认为在 AI 时代,技术是最容易被替代的。乔布斯也曾说:你需要从用户体验出发,然后倒推用什么技术。
他们说的都对。但对现阶段的我而言,技术不仅是饭碗,更是通往“本质”的唯一梯子。我既达不到 L 哥的高度,也成不了乔布斯。居安思危,我必须面对一个现实:假如明天失业,我生存的底气依然只可能来自手中的代码。
“学而时习之,不亦说乎”,《论语》示下的理念仍是不二法门;“日光之下并无新事”,《传道书》描述的规律亦未曾过时。
偶尔,当 AI 取我而代之的喧嚣令人心浮气躁,我喜欢躲进《史前星球》里寻一份宽释。看着亿万年的变迁在眼前徐徐铺展,无数辉煌从盛极一时到次第湮灭,我忽然领悟:在进化的长河里,正如任何现代性的成就都无法否定,任何现代性的颠覆也都不失为狂妄。
内燃机的发明让驭马术不再重要,而运输业从未消失;无人驾驶也许会取代司机,但也一定会创造新的坐标。没有那么多突如其来的毁灭,只有因时而变的进化。重要的是,我们能否在放下缰绳后,及时握住方向盘。
6. 奔赴 2026:别了,二极管思维
如果说今年除了终于成为 Ruby 程序员之外还有什么收获,那就是受 L 哥“本质论”的影响,我开始意识到从前对世界的八卦态度和二极管思维不仅对认知提升毫无帮助,反而是永远被围困在底层的枷锁。成功,只属于那些勇于剥离表相、追寻本质的人。
网络时代让我们看到很多耀眼的光环,也给了如我一般的普通人很多错觉,仿佛一句运气不好就能解释一切,而优秀的人不是运气爆棚就是骗术高明。
郭宇恰好拿了字节的期权又阴差阳错买了几个山寨币,肖弘不过是在别人的模型上套了个壳,孙宇晨更是一个劳斯莱斯加长版的骗子。
但今天,我开始学会问自己:有没有可能是郭宇的投资眼光独到,且不论他即便退休多年仍是比大多数人优秀的程序员?有没有可能是肖弘对时机把握精准,且不说他事实上每一次创业都盆满钵满?有没有可能 25 岁就身价过亿的孙宇晨其胆识和魄力在任何一个时代都能成为枭雄?
多年前笑潘石屹落荒而逃,有多少人能雾里看花看透那远见卓识?马云说未来房价会贱如白菜,有多少人一边疯狂嘲笑一边又买一套?王兴说 2019 是未来十年最好的一年,谁在声色犬马中笑骂那个大脑门无形装逼、最为致命?
对强者的成功祛魅,亦是对自己的人生定位。
从前读史时,我喜欢把自己代入封狼居胥的霍去病、致君尧舜的杜甫、或是再造大明的于谦;今天我终于明白,自己应更是无定河边的白骨、逾墙而走的老翁、城下瑟瑟的炮灰。古往今来,所谓历史,不过是英雄们的恢宏史诗,交织着无数失忆牛马身上的回旋镖。
不过是补服换成了厅局风,人力车改装为滴滴,祥子穿上了黄马褂,淋尖踢斛进化成了三十年合同。一代又一代的提线木偶如被时代榨尽的甘蔗渣,却在余温未凉里,仍热泪盈眶、自命不凡。
看清本质,并非走向虚无。当喧嚣散尽,标杆隐去,更该拷问自己:于我而言,这个世界的本质是什么?
是行者无疆;
是奔赴 2026,遇见下一场山海。