周六上午十点,陈远站在西二旗一家共享办公空间的玻璃门外,手里攥着手机,屏幕上显示着一条确认短信:“陈远先生,您预约的‘开发者社区技术沙龙’座位已保留,地址:海淀区西二旗X号X座3层。时间:4月27日(周六)10:30-12:00。”
沙龙的主题是“云原生时代的中台架构实践”。他犹豫了三天才决定报名。失业以来,他本能地抗拒一切“行业活动”,怕遇到前同事,怕被问“最近在哪儿高就”,怕在那些朝气蓬勃、高谈阔论的年轻人中间,显得自己像个误入的、过时的古董。
但他需要出来。需要接触点“活”的东西,需要听听别人在做什么,在想什么,哪怕只是作为背景噪音,也好过在家里对着电脑和四面墙,被越来越深的焦虑和自疑吞噬。而且,这个主题和他正在学的K8s相关,也许能学到点东西,或者,至少能确认自己学的东西没跑偏。
他深吸一口气,推开玻璃门。前台是个年轻的女孩,抬头看了他一眼,公式化地微笑:“请问是参加沙龙的吗?请这边签到。”
陈远签了名,拿到一个印着“开发者社区”logo的纸质手环,戴在手腕上。沿着指示牌往里走,空间很开阔,loft风格,裸露的水泥墙和管道,原木色的桌椅,随处可见的白板和绿植。已经来了不少人,大多很年轻,二三十岁的样子,穿着休闲的帽衫、格子衬衫、牛仔裤,三三两两地聚在一起聊天,手里端着主办方提供的免费咖啡。空气里弥漫着咖啡香、电子设备散发的微热,以及一种熟悉的、属于技术圈的活跃氛围。
陈远找了个靠后的角落位置坐下,尽量降低存在感。他拿出手机,假装看信息,实则用余光打量周围。讲台背景板上是本次沙龙的标题和几个赞助商的logo。旁边立着易拉宝,上面印着几位讲师的简介和照片,都很年轻,头衔响亮:某大厂高级技术专家、某知名开源项目Committer、某创业公司CTO。
他一个都不认识。或者说,这个圈子里活跃的面孔,他越来越不认识了。技术迭代太快,明星人物也换得太快。他想起五六年前,自己也参加过不少类似活动,有时甚至作为讲师上台,讲星云的服务化实践,台下坐满了人,提问环节很热烈。那时他意气风发,觉得技术世界尽在掌握。
现在,他像个旁观者,坐在后排,看着台上即将开讲的、可能比他年轻十岁的人,心里涌起一股复杂的滋味:羡慕他们的年轻和机会,怀疑自己是否还能理解他们讲的东西,也有一点不甘——如果没被裁,他是不是也可能站在某个讲台上,分享“星云科技”的“宝贵经验”?
十点半,沙龙准时开始。主持人是个活泼的年轻人,简短开场后,第一位讲师上台。是个看起来不到三十岁的男生,戴着黑框眼镜,语速很快,PPT做得简洁现代。他讲的是他们公司基于Service Mesh的中台治理实践,用了Istio,讲流量管理、可观测性、安全策略。很多概念陈远在学K8s时接触过,但对方讲得更深入,结合了真实生产环境的案例和踩坑经验。
陈远听得认真,在手机上记着笔记。有些细节他不太明白,但整体思路是清晰的。他意识到,自己过去在星云那套“土法炼钢”的服务治理方案,虽然解决了当时的问题,但和现在这种基于成熟开源方案、标准化的做法相比,确实显得笨重和过时了。这不是他技术不行,是行业范式在快速迁移,而他没有跟上这波迁移。
第二位讲师是个女生,讲他们如何用GitOps实现持续部署。这个概念陈远听过,但没实践过。女生讲得很清晰,从代码提交到自动构建、镜像打包、部署到K8s集群的全流程自动化。陈远一边听,一边在心里默默对比:星云的发布流程还是半手工的,虽然也有脚本,但远没达到这种程度。效率、可靠性、可追溯性,差距明显。
他感到一阵紧迫感。不是焦虑,是一种更清醒的认知:他要补的课,比想象中更多。不仅仅是学会K8s的命令和概念,更要理解这套全新的研发运维理念和工具链。否则,即使找到工作,也可能很快再次掉队。
提问环节,台下很活跃。有问技术细节的,有问选型考量的,有问团队协作痛点的。提问的人大多年轻,问题很具体,甚至有些尖锐。陈远坐在后排,没有举手。他有问题,但觉得自己的问题可能太“基础”,或者太“陈旧”,问出来会暴露自己的“落伍”。
沙龙结束后,是自由交流时间。人群散开,各自找感兴趣的人聊天,或者去茶歇区拿点心饮料。陈远没动,依然坐在角落。他看着那些年轻人聚在一起,交换名片,加微信,热烈地讨论着什么,脸上带着光。那种光,他曾经也有过——对技术纯粹的热情,对未来的无限憧憬,相信用代码可以改变点什么。
现在,那光黯淡了。被KPI、绩效、办公室政治、房贷、裁员、年龄焦虑,一点点磨蚀掉了。他坐在这里,像一块被潮水留在沙滩上的石头,看着新的浪头带着新的沙粒和贝壳,欢快地涌上来。
“老师,能请教您个问题吗?”
一个声音在旁边响起。陈远回过神,看见一个男生站在他旁边,大概二十五六岁,穿着印有某编程语言logo的T恤,戴着眼镜,表情有些腼腆。
“我?”陈远有些意外。
“嗯,”男生点点头,指了指陈远旁边空着的座位,“看您刚才听得很认真,笔记也记得很详细。想问问,您对刚才讲的GitOps流水线里,多环境配置管理那块,是怎么看的?我们公司也在搞,但老是出问题,不同环境配置串了。”
陈远愣了一下。他没想到会有人主动来问他问题。他看着男生诚恳的眼神,那眼神里没有打量,没有比较,只有对知识的渴求和对“前辈”本能的尊重——尽管这“前辈”可能只是个坐在角落、面容疲惫的中年男人。
“坐。”陈远往旁边挪了挪。男生坐下,拿出手机,点开记事本,准备记录。
陈远整理了一下思路。他确实思考过这个问题,在星云时也遇到过类似麻烦。“多环境配置管理,核心是解耦和版本化。”他慢慢开口,尽量让自己的表述清晰,“我们的做法是,把配置和代码分开,用独立的配置仓库管理。通过不同分支或者目录区分环境。部署时,根据不同的环境变量,拉取对应的配置。关键是要有严格的权限控制和变更流程,避免手动修改。”
他讲了一些具体实践,比如用ConfigMap和Secret管理K8s的配置,用Helm Chart做包管理,以及如何做配置的灰度发布和回滚。男生听得很专注,不时点头,在手机上快速打字。
“还有一个问题,”男生又问,“如果配置项很多,依赖关系复杂,怎么保证一致性?”
“可以用配置中心,比如Apollo,或者Nacos。”陈远说,“但引入新组件也有复杂度。我们当时评估后,选择了相对简单的方式,靠流程和工具链保证。但长远看,配置中心是趋势。”
他讲了自己在星云时做配置治理的经验,踩过的坑,以及后来的改进方案。男生听得眼睛发亮:“原来如此!我们就是没做好流程,老出问题。您说的这个方案,感觉更贴合我们现状。太感谢了!”
“不客气,互相学习。”陈远说,心里那点因为“落伍”而产生的自惭,稍微消散了一些。至少,他过去的经验,对某些场景、某些人,还是有价值的。
“老师,能加您个微信吗?”男生有些不好意思地问,“以后有问题,还想向您请教。”
“……好。”陈远拿出手机,两人加了微信。男生的微信名叫“阿飞”,头像是个卡通程序员。
“我叫李飞,在一家做教育SaaS的创业公司做后端开发。”男生自我介绍,“您怎么称呼?”
“陈远。暂时……自由职业。”陈远说。他用了“自由职业”这个词,比“失业”好听,也符合他目前接外包的现状。
“自由职业好啊,羡慕!”李飞眼睛更亮了,“能自己安排时间,接喜欢的项目。我也想以后试试。”
陈远笑了笑,没解释“自由职业”背后的焦虑和不稳定。年轻人有憧憬,是好事。
又聊了几句,李飞被同伴叫走了。陈远坐在原地,看着李飞离开的背影,心里有点奇异的温暖。被需要,被请教,被认可的感觉,哪怕只是来自一个陌生的年轻人,也像一束微光,照进他这些日子以来阴霾重重的心境。
他站起来,走到茶歇区,拿了杯咖啡和一块小蛋糕。咖啡是速溶的,蛋糕有点甜腻,但他吃得很慢,感受着这点简单的、免费的馈赠带来的微小满足。
“陈远?”
又一个声音,带着不确定。陈远转头,看见一个有些面熟的男人,四十岁上下,穿着Polo衫,微胖,头发稀疏。
“你是……陈远吧?星云科技的?”男人走过来,脸上带着笑,“我是刘强,以前在极光科技,我们合作过那个客服系统对接项目,记得吗?”
陈远在记忆里搜索。想起来了,刘强,极光科技的一个项目经理,五六年前合作过,人还不错,做事靠谱。“刘经理,好久不见。”陈远伸出手。
“哎呀,什么经理不经理的,早不在极光了。”刘强用力握了握他的手,压低声音,“我也出来了,去年的事。现在在一家做物联网的初创公司混着。你怎么也来了?也对云原生感兴趣?”
“过来听听,学习学习。”陈远含糊地说。
“学啥啊,咱们这岁数,学不动了。”刘强摆摆手,凑近些,声音更低,“我是来找机会的。看看有没有项目可以合作,或者……有没有坑。你呢?还在星云?”
陈远摇摇头:“出来了,最近在看机会。”
“理解理解。”刘强一副了然的表情,拍了拍他的肩,“这年头,都不容易。我那边公司倒是在招人,但要求高,钱还少,估计你看不上。不过我可以帮你留意着,有合适的告诉你。”
“谢谢刘哥。”陈远说。他知道刘强这话多半是客气,但心里还是感激。至少,在这个场合,还有人记得他,愿意说句“帮你留意”。
两人又寒暄了几句,交换了微信。刘强被人叫走,陈远重新坐回角落。他看着周围的人群,心态似乎发生了一些微妙的变化。他不再觉得自己是完全的局外人。这里有像李飞那样渴求知识的年轻人,也有像刘强那样在寻找出路的中年生。每个人都在自己的轨道上挣扎、探索、试图抓住点什么。
他打开微信,看到李飞发来的消息:“陈老师,今天太感谢了!受益匪浅!以后多向您学习!”
陈远回了个“客气了,互相学习”的表情。
他又看到“江湖再见”群里,老王发了一张他女儿画画的照片,说“周末陪娃,岁月静好”。下面几个人点赞。陈远也点了个赞。
沙龙彻底散场了。人群陆续离开。陈远最后一个走出共享办公空间。午后的阳光很好,暖洋洋地照在身上。他站在路边,看着西二旗街道上熙熙攘攘的人流和车流,那些穿着各色公司文化衫的年轻人,行色匆匆,奔赴各自的工位或下一个聚会。
他忽然想起,自己已经很久没有在周末的下午,这样毫无目的地站在街头发呆了。以前,周末要么加班,要么累得只想瘫着。失业后,要么焦虑地在家投简历,要么被家庭的琐碎和责任填满。像这样,单纯地参加一个活动,听点新东西,和人聊几句,然后站在阳光下,感受春天的风和温度,竟成了一种奢侈。
他慢慢往地铁站走。心里那片沉重的、板结的焦虑,似乎被刚才那场沙龙、那两次短暂的交谈,撬开了一道细微的缝隙。有光照进来,虽然微弱,但毕竟是光。
他意识到,他不能一直躲在家里。他需要走出来,接触人,接触信息,接触这个行业依然在奔涌向前的活水。哪怕只是坐在后排听,哪怕只是和陌生人聊几句技术,哪怕只是知道这世界上还有人和他一样在迷茫、在寻找、在努力不被抛下。
这本身,就是一种治疗。
地铁上,他打开手机,搜索刚才沙龙里提到的几个开源项目:Istio,Argo CD,Crossplane。他订阅了它们的官方博客和社区动态。又搜了一下“GitOps实践案例”,收藏了几篇看起来不错的文章。
然后,他打开笔记软件,新建了一个笔记,标题是“技术沙龙收获与TODO”。他记下今天听到的关键点,自己理解不透的地方,以及下一步要深入学习的方向。他列出了下周的学习计划:看完Istio的核心概念,在本地Minikube集群上实践GitOps流程,写一篇学习笔记。
他写得很认真,像在规划一个重要的项目。事实上,这确实是他当前最重要的“项目”——自我更新,重新建立与这个行业的连接,找到自己新的位置。
回到家,朵朵扑上来要他抱。林薇在厨房做饭,探出头问:“沙龙怎么样?”
“还行,听了些新东西。”陈远说,把朵朵抱起来,“遇到个年轻人,问了我点问题。”
“看你这表情,比前几天好多了。”林薇笑了,“出去走走是对的,别老闷着。”
“嗯。”陈远点头。他把朵朵放下,走到厨房门口,看着林薇忙碌的背影。油烟机的轰鸣,锅铲碰撞的声音,食物下锅的滋啦声,混合着朵朵在客厅玩玩具的笑声。这是他的生活,具体,琐碎,充满烟火气。
“薇薇,”他开口,“我打算……开始写点技术博客。”
林薇转过头,有些惊讶:“博客?写什么?”
“就写我学的东西,比如K8s,云原生。还有以前的一些项目经验,踩过的坑。”陈远说,语气比想象中坚定,“反正现在有时间,整理一下,发出来。也算是个输出,逼自己学得更系统。而且,万一……万一有人看,说不定也是个机会。”
林薇看着他,眼神柔和下来:“好啊,我支持。你技术那么好,是该写写。需要我帮你看看文章吗?虽然我不懂技术,但文字通不通顺我能看。”
“好。”陈远笑了,心里那点因为决定做一件“不直接赚钱”的事而产生的不安,消散了许多。
晚饭后,他哄睡了朵朵,坐在电脑前。没有立刻打开外包项目的代码,而是新建了一个文档,标题是“从零开始理解Kubernetes Service”。他思考了一下结构,开始写。
写得很慢,很仔细。他不仅要讲清楚概念,还要结合自己学习的困惑和实践中的理解,尽量让文字易懂。遇到不确定的地方,他就去查官方文档,看别人的文章,确保准确。
写了几百字,卡住了。他觉得自己的表述太啰嗦,不够精炼。他删掉重写。又写了几百字,还是不满意。他有点烦躁,怀疑自己是不是根本不适合写东西。
但想到对林薇说的话,想到下午沙龙上李飞请教他时认真的眼神,他又强迫自己静下心来,继续。
凌晨一点,他写完了第一部分,大约两千字。从头读了一遍,虽然还有很多可以优化的地方,但至少逻辑是清晰的,内容是有用的。他把它保存到本地,没有立刻发布。他想再打磨一下,再多写几篇,攒一攒,再考虑发到哪个平台。
关掉文档,他没有立刻去睡。他打开GitHub,搜索“Kubernetes beginner-friendly issues”。他想找点简单的、适合新手参与的开源项目,或者提个PR(Pull Request),修个文档错别字也好。参与开源社区,是另一个接触行业、证明自己“还在线”的方式。
浏览了一会儿,他找到一个国内开源的微服务框架项目,文档里有一处描述不太准确。他Fork了项目,在本地修改,提交,发起Pull Request。动作很生疏,因为他很久没有以个人身份参与开源了。以前在公司,代码都贡献给公司内部仓库了。
做完这些,已经凌晨两点。他站起来,走到阳台。夜色深沉,但远处写字楼的灯光依然亮着不少。城市永不眠,代码永不眠。
他想起下午沙龙结束时,主持人说的结束语:“技术之路,学无止境。愿我们永远保持好奇,永远热泪盈眶。”
他当时觉得这话有点鸡汤。但现在,在深夜里,在经历了失业的打击、焦虑的折磨、自我怀疑的深渊之后,在决定开始写博客、参与开源、重新学习之后,他忽然有点理解了。
不是“热泪盈眶”那么戏剧化。而是一种更朴素的东西:当你发现,尽管你被打倒了,被抛下了,被宣告“过时”了,但你内心深处,对技术本身,对那些用代码构建逻辑、解决问题的过程,依然残留着一丝不肯熄灭的兴趣和热情。这热情可能被生活的尘埃覆盖了很久,但它还在。像一颗被埋了很久的种子,只需要一点光,一点水,就又颤巍巍地,想要冒出新芽。
陈远看着窗外的灯火,轻轻呼出一口气。
夜还很长,路也还长。但至少,今晚,他朝着有光的方向,又往前挪了一小步。
很小的一步。但毕竟是向前。