我的成长:一个非标程序员的独白

2 阅读16分钟

引言:一个非标程序员的独白

算起来,我与编程的第一次亲密接触,是在初中。如果把时间再往前拨,那些在小学微机课上,穿着鞋套,对着大头电脑玩《小蜜蜂》的时光,或许才是一切的源头。

喜欢打游戏——这个简单、纯粹的动机,几乎贯穿了我早期所有的技术探索。 它像一根无形的线,牵引着我从一个懵懂的玩家,一步步走向了程序员这条路。这条路并非坦途,也毫无规划可言,充满了野路子和意料之外的转折。回头看,我更像一个“非标”的程序员,在兴趣的驱动下,跌跌撞撞,野蛮生长。

一、启蒙时代:从红白机到学习机

红白机的诱惑与第一个技术难题

童年最深的渴望,莫过于一台红白机(FC)。因为家里条件有限,每个月最期盼的事,就是去亲戚家借宿,只为能玩上传说中的《坦克大战》和《魂斗罗》。

但快乐总是伴随着痛苦。最大的挫败感来自进度的丢失。《坦克大战》总也打不通关,每次玩到深夜,关机后一切归零;《魂斗罗》和《超级马力欧》一玩就是三四个小时,眼睛酸涩,却依然离通关遥遥无期。

直到有一天,我在新华书店看到店员玩《三国志》,那复杂的玩法,尤其是“存档”这个神奇的功能,彻底震撼了我。为什么有的游戏可以保存进度? 这个看似简单的问题,像一颗种子在我心里发了芽。我开始偷偷翻阅游戏机维修原理的书,终于在一个角落找到了答案——卡带里有一种叫“存储芯片”的东西,有的还需要电池供电。

这个发现,让我第一次对游戏机内部那个神秘世界产生了超越“玩”的好奇。我想搞明白它。

从玩家到“创造者”的初体验

为了拥有一台自己的“机器”,我用连续两次数学考试满分的成绩,换来了人生第一台严格意义上的可编程计算机——小霸王学习机。它附带了一本厚厚的 BASIC 语言说明书。

那是我第一次接触编程。虽然主要用途还是打游戏,但那个藏在卡带里的 BASIC 语言,为我打开了一扇新的大门。后来,在电视节目里看到“裕兴电脑”可以用 G-Basic 编写出类似《超级马力欧》的游戏,我再次被点燃。我知道了“游戏编程”这个概念。

软磨硬泡之下,家里又添了一台步步高学生电脑。它支持磁盘,有 DOS 操作系统。在学校机房里,我已经见识过 Windows 3.2 的图形界面,那种“视窗化”的交互让我对微软产生了最初的崇拜。于是,我在这台步步高上,用 BASIC 语言,写下了人生中第一个“操作系统”——它不过是用 print 命令逐行打印出的菜单和界面,但那一刻,我真切地感受到了一种创造的快乐。

虽然代码笨拙粗糙,但那种从无到有创造一个世界的成就感,是任何游戏都无法比拟的。 这份热情,让我第一次从一个单纯的玩家,开始向一个“创造者”转变。

二、野蛮生长:从文曲星到信息学竞赛

为了“炫耀”而魔改代码

进入高中,文曲星成了同学间的新宠。人手一台,美其名曰学英语,实则主要用来玩游戏,比如当时风靡一时的《英雄坛说》。

看着同学们沉迷其中,我再次燃起了探索的欲望。我了解到,文曲星上的游戏大多基于 GVBASIC 或汇编语言开发,而且很多游戏的源代码是开放的。为了在小伙伴面前炫耀,也为了能更轻松地通关,我开始了对游戏代码的第一次“魔改”尝试。

修改过程并不顺利,经常因为一个小小的语法错误而让整个程序崩溃。但每一次成功修改后,游戏里角色能力值的飙升,或是在同学面前展示自己“创造”的特殊版本时,那种满足感是巨大的。也就是从那时起,为了游戏,为了那份小小的虚荣心,我彻底走上了程序员这条“不归路”。

从“半吊子”到市一等奖

当时学校流行奥林匹克竞赛,凭借着从小霸王时期积累的“半吊子”BASIC 基础,我报名参加了信息学奥赛。第一次参赛,看着 PascalTurbo Basic 的题目,我几乎是靠蒙完成了选择题,最终毫无悬念地名落孙山。

这次失败让我意识到,光有热情和“野路子”是不够的。我开始系统地学习算法和编程语言。第二次参赛时,我顺利拿到了市一等奖。为了奖励我,也为了那个“培训完年薪十万”的广告词,父亲给我报了一个计算机培训班,并许诺考到证书就奖励我一台真正的电脑。

那是一个酷热的夏天,我跟一群成年人挤在教室里,学习 MCSECCNA。当老师说补考一门要350元时,贫穷再次成为了我最强的学习动力。我用三天时间背下了厚厚的题库,最终顺利通过了所有考试,拿到了那张梦寐以求的塑料认证卡片,也拥有了人生第一台方正电脑。

一次“抄袭”引发的转向

真正让我下决心改变方向的,是一次不大光彩的“刺激”。

当时,另一位同学也拿到了微软的认证。通过一些渠道,他得到了一份微软未公开发布的 3D 城市模型 Demo 源代码。他直接用这个项目去参加了全国中学生发明创造奖,并获得了特等奖。评委只问了三个问题:“是你自己开发的吗?”“开发了多久?”“未来怎么打算?”他的回答分别是:“是”,“半年”,“共享给学校,继续开发”。

这件事在小圈子里流传,对我触动极大。我第一次意识到,原来技术可以这样“走捷捷径”,原来那些看似遥不可及的酷炫特效背后,有迹可循。相比于枯燥的算法和网络配置,我被眼前那些花里胡哨、琳琅满目的绚丽特效深深吸引,开始迷上了网页制作。 我觉得,那才是我想要创造的世界。

三、站长岁月:在互联网荒原上刨食

从《拳皇》粉丝到个人站长

我迷恋格斗游戏,从《侍魂》到《拳皇》,SNK 的美学风格和格斗设计让我痴迷。这份热爱,加上之前被同学“特等奖”事件的刺激,让我决心开启自己的个人站长之路。

当时还没有个人博客的概念,我用 CutePage 切图,在一个国外免费空间上,搭建了第一个属于自己的网站——一个《拳皇》主题站。内容很简单,就是一个跑马灯特效,滚动着几张游戏图片,点击后是人物介绍。

网站上线后,前一个礼拜几乎无人问津。挫败感袭来,但我没有放弃。我开始学习什么是搜索引擎提交,手动把网站地址填到当时国内几大门户的表单里。果不其然,流量开始缓慢上涨。

为了和访客互动,我需要一个留言板。但当时的我,还不会 ASP 这样的后端语言。幸运的是,微软的 FrontPage 出现了,它“所见即所得”的编辑方式,以及无需代码就能生成表单交互的能力,在当时简直是神器。靠着它,我慢慢给网站加上了留言板和更多内容。

从流量到“商业帝国”的雏形

随着网站内容越来越丰富,流量也越来越大,我被网易的编辑找到,希望能将我的网站收录到他们的游戏专题下。这为我带来了第一波真正的流量高峰。我的网站在 Alexa 上的排名一度冲进中国区前两千名。

我开始尝试引入 LeoBBS 论坛系统,组织线上比赛录像分享,甚至在论坛里加入了文字 MUD 插件,将它与用户等级挂钩。为了维持运营,我开始模仿当时的一些大站长,通过邮局汇款的方式售卖游戏录像光盘和一些周边产品。

那是一个野蛮生长的年代,我们这群因游戏聚在一起的年轻人,在互联网的荒原上努力刨食。有人后来成了专业的“盗版产业”从业者,有人成了淘宝第一批店主,还有人进入了游戏公司。虽然当时的我年纪尚小,主要负责信息发布,并未深入参与交易,但这段经历,让我第一次对“流量”、“社区运营”和“商业变现”有了模糊而真切的认知。那是属于草根站长的黄金时代,只要你敢想敢做,一个源于热爱的个人网站,也能长成一个微缩的商业帝国。

四、十字路口:从黑客文化到职业选择

“红客”的诱惑与泡沫

2000 年前后,中国互联网发生了很多大事。中美撞机事件后,“红客联盟”的出现,让“黑客”这个词带上了一丝民族英雄主义色彩。当时,X-Focus 这样的安全焦点网站,是所有技术爱好者心中的圣地。

我也曾沉迷其中,研究各种漏洞、攻击手法,用工具扫描肉鸡,甚至窥探过别人的远程摄像头。那是一个技术共享、精神狂热的年代,似乎掌握了某种漏洞利用方法,就拥有了掌控网络世界的力量。

与此同时,PHP 的诞生,让 Web 开发的门槛大大降低。许多基于 CGI 的项目开始转向 PHP,其中就包括大量的网页 MUD 游戏私服。一些站长靠着私服,月入数万,赚到了第一桶金,然后转身投入到《传奇》《奇迹》私服的更大浪潮中。

看着这一切,我开始感到一丝迷茫。黑客技术和私服的背后,是法律的灰色地带和商业的泡沫。 我意识到,这种“野路子”或许能带来一时的快感和收益,但终究不是长久之计。

投身浪潮,成为一名“正规军”

恰在此时,CSDNcnblogs 等专业技术社区开始兴起,以微软 .NET 为代表的学院派技术体系展现出强大的生命力。我开始向往成为一名更专业、更“正规”的工程师。

毕业季,我满怀着进入微软的梦想,奔波于上海、北京参加各种招聘会,却屡屡碰壁。在一次千人选一的笔试中,我旁边坐着一位头发稀疏的博士,那一刻,我深切感受到了现实的残酷。

就在我几乎准备放弃,打算回家啃老的时候,父亲在街边布告栏上看到一则招聘启示——Made-in-China.com(中国制造网)正在招毕业生。我抱着试试看的心态去了。面试我的,是后来的 CTO 成总。他几乎没问我技术问题,只是翻了翻我那份写满了个人网站和折腾经历的简历,便问我是否愿意来做程序员。

就这样,我意外地拿到了第一份正式的 Offer这次偶然的机遇,将我从一个在互联网边缘游走的“非标”青年,真正拽入了职业软件开发的浪潮之中。 我知道,我的“野路子”时代,结束了。

五、职业蜕变:在巨人的肩膀上进化

进入职场,意味着我必须告别过去的随心所欲,开始接受系统、专业的工程训练。这段漫长的旅程,充满了挑战与蜕变。

第一站:中国制造网——从 C# 到 J2EE 的硬着陆

我入职后的第一个任务,是用 Java 写一个 AJAX 校验。而我,之前只会 .NETC#,对 Java 一窍不通。我抱着两块砖头一样厚的 Java 红宝书,开始了痛苦而充实的学习。

当时,公司前端能力薄弱,我的 Mentor 尝试用 GWT(Google Web Toolkit)来生成代码,但晦涩难懂,难以维护。凭借着过去做个人网站时积累的 JavaScript 经验,我主动请缨,花了近两周时间,用原生 JS 重写了 GWT 的功能,并封装成了一个公司内部长期使用的 AJAX 库。

这段经历让我意识到,过去的“野路子”并非一无是处,它们在关键时刻,也能成为解决问题的利器。在中国制造网的几年里,我从前端优化,到参与后端 Oracle 数据库的性能调优,再到负责中美数据中心异地容灾的复杂项目,几乎把软件开发的各个环节都摸了一遍。我甚至为了给富文本编辑器 FCKeditor 增加一个敏感词过滤功能,硬是啃下源码,完成了修改。

这段全栈式的磨砺,为我打下了坚实的工程基础,也为我日后进入更大的平台做好了铺垫。

第二站:淘宝——宇宙最强UED的洗礼

我被淘宝 UED 博客上那句“做宇宙最强 UED”的口号深深吸引,冲动地投了简历。面试从中午12点持续到晚上7点,我见到了传说中的同学A(时任淘宝UED负责人) 。他温文尔雅,却又气场强大,是国内最早引入 YUI 并主导构建 TBra UI 框架的人。

在淘宝,我第一次感受到了什么是真正的前端工程化。我认识了主持碳酸分享会的同学B,也见识了入职笔试就能手写编辑器的同学C,还有一个不太爱说话、却在前端架构上极有想法的同学D。在与同学E同学F等优秀同事的合作中,我像一块海绵,疯狂吸收着最前沿的技术和思想。

刚入职时,为了证明自己,我接下一个紧急的页面制作需求。设计师两天完成 PSD,只留给我一天时间。我几乎一夜没睡,靠着一股不服输的劲头,硬是按时交付了。那时我才明白,所谓的能力,有时不过是“能熬”和“敢拼”。

第三站:腾讯——在荣耀与挫败中反思

在腾讯的经历,可谓跌宕起伏。我凭借着对框架设计的理解,在一次上海与深圳团队的业务 PK 中,为上海团队赢得了前端的主导权。但我也很快意识到,自己设计的七层 H5 架构过于复杂,除了自己几乎没人能看懂。我开始反思:优秀的框架,应该让人易于理解和接受,而不是炫技。

“微信闪购”项目是我职业生涯的一次重要滑铁卢。我执着于一个超越当时手机性能的四向滑动交互方案,在 iPhone 上流畅无比,在安卓机上却卡顿严重。尽管通宵两天,尝试了各种性能优化方案,最终还是不得不妥协,改回了最普通的列表模式。这件事在当时的前端圈子里成了笑谈,但却让我铭记了一个教训:在正确的时间,正确的场景,做正确的事,远比追求技术的完美更重要。

另一次惊心动魄的经历,是半夜两点被拉进一个有公司高层(同学G)也在的群里,紧急处理一个购物车无法下单的线上事故。在排查近两小时无果后,我注意到截图顶端的一抹黑色,大胆猜测是 iOS 的隐私浏览模式导致 localStorage 无法读取。最终,问题在三秒内定位,五分钟内修复上线。这次经历让我明白,面对巨大的压力,冷静的观察和对细节的把控,才是解决问题的关键。

第四站:携程——从业务到架构,再到影响力

离开腾讯后,我加入了正在从 PC 全力转型移动的携程。在机票部门,我用两周时间,通过引入 BigPipe 技术,将首页首屏时间从3秒优化到0.8秒,获得了业务 CTO 的认可,并因此契机接手了 APP 团队,开始带团队。

然而,好景不长,一次“莫须有”的线上事故,让我深陷被动。当时,机票业务转化率季节性下降,后端团队咬定是前端问题,而我们却无法自证清白。为了不再重蹈覆辙,我带领团队搭建了一套用户行为全流程监控和回放系统。技术不仅要创造价值,也要能保护自己。

后来,因公司组织架构调整,我失去了管理岗位,转岗至框架组。面对新环境的排斥和边缘化,我没有抱怨,而是本着“合作你赢”的态度,主动承担起没人愿意碰的小程序方向。我为各业务线提供转化工具和技术支持,在公司内部做技术串讲,逐渐建立起跨部门的技术影响力。

我发现,推动一件事最好的方式,就是敢于承担,敢于拿出方案。当你真心为他人提供价值和信心时,他人也会回馈你以信任。 在离开携程前,我作为核心作者之一,参与编写了《携程架构实践》一书,也算为这段旅程画上了一个圆满的句号。

尾声:新的“自己”

回顾这段漫长的成长之路,我从一个因热爱游戏而一头扎进技术世界的“非标”少年,到一个在互联网荒原上独自求生的个人站长,再到投身于一家家互联网巨头,在荣耀与挫败中不断蜕变、反思。

这条路没有捷径,充满了泥泞和汗水。但每一次挫折,都让我对技术、对产品、对组织、对自己有了更深的理解。如今,来到字节跳动,是一个全新的起点。环境在变,挑战在变,唯一不变的,是那份源于最初的好奇与热爱,以及不断清零、持续学习的心态。

这,就是一个非标程序员的独白,也是一个新的“自己”的开始。