但行好事,莫问前程

一个故事

2006 年,机缘巧合加上突发奇想,我想要开发一个手机上的浏览器。那个时候,还是功能机的天下,手机的屏幕是 1.7 寸,大的 2.2 寸,不能安装应用软件,只能使用手机厂商预置的应用软件。当时还是 2G 网络时代,网速只有几 KB/s 到十几 KB/s。

当时做这个决定时,并没有任何的功利性的目的,也没有想过要通过这个软件赚钱。单纯只是好奇,加上想在技术上挑战一下自己。

说干就干,我开始一步一步地开发软件。先后开发了可以在嵌入式设备上运行的图形系统,可以解析 HTML/WML/SMIL 的 SAX 解析器,开发了各种网络通信协议,如 HTTP, MMS, POP3, SMTP, IMAP4 等等。这些协议其实并不是使用某个开源库,而是从头实现这些协议。同时还做好了跨平台移植的封装。我还记得,当时用到的开源软件很有限,只有 xyssl,libjpeg, libpng 等几个,其他的几乎是自己从头实现的。

那个时候,白天上班,偶尔还要加班。晚上回来就写代码,不停地写代码,有时写到凌晨 1-2 点。第二天又精力充沛地去上班(年轻真好呀)。日复一日,过得充实而快乐。我老婆(当时还是女朋友)很不理解我的行为,觉得我做得这么辛苦,又不能赚钱。我当时也没有好的理由反驳她,只是告诉她,其实我一点都不觉得累,因为我很享受过程。

当时的生活和工作没有边界,做业余项目在我老婆眼里是工作,在我眼里是生活的一部分。每次我实现了一个功能,就会非常地有成就感。每次对着数据报文,发现中国移动的网关没有按标准实现时,就会在心里骂娘,然后顺便鄙视一下他们,再默默地调整自己的实现。调试过程中,还发现了移动和联通使用的不同的技术供应商以及他们之间实现的一些细微的差别。每次因为这些微小的发现而兴奋不已,也让我深刻地体会到,到即使是这种巨无霸公司的产品,也不是完全规范的,仿佛通过数据报文,看到了背后的开发工程师。那是一种很奇妙的感觉。更准确地说,是建立了一种更强大的自信。弱小如我,一个业余开发者,可以直接通过数据报文和巨无霸公司开发的产品进行 PK。

最终,经过大概八个月的努力,所有的基本功能都被实现出来,而且能够在功能手机上运行。那时候,我刚毕业两年多。

现在想想,那真是一段难忘的峥嵘岁月。为了一个事情,全力以赴,不计得失,拼尽全力的感觉。最最重要的,过程中没有任何焦虑,全情投入,享受过程。每次长时间编程,都达到物我两忘的心流状态。

后来其实也和几个比较亲近的朋友同事讨论有没有可能商业化,也做了一些偿试,但并没有成功。只是用它作为基础平台,做了一些小项目,赚了一些小钱。

但行好事,莫问前程

今天回头看,这个事情对我的整个职业生涯都产生了巨大的影响。从头实现了浏览器,彩信这种技术复杂度比较高的产品,让我的软件开发能力得到了质的飞跃。后面在工作中,遇到的技术问题,基本上都可以从中找到一些相似的解决方案,能给团队更多的价值输出,自然而然地成长为一个技术领导者的角色。在实现浏览器,彩信的过程中,需要大量的阅读英文文档,包括 OMA 协议,RFC 协议等等,大大提高了自己的英文能力。可以说,这个事情,在我职业生涯的早期,让我用地狱模式,积累了很多人十年都难以积累出来的技术和开发经验。为自己职业生涯的第一级跳跃,打下了坚实地基础。

那个时候没有焦虑么?其实不是,最大的焦虑在于房子,做梦都想有一套房子。但相对于工资,只能望房兴叹。2008 年,我的老领导把邀请我加入他的创业公司,还用公司的钱,给我提供无息贷款,作为买房首付的一部分。我记得,拿到公司钱的那天,我和老婆兴奋地一夜没睡。这件事,更多的当然是老领导的信任和照顾,但不能否认,个人价值在这里面也扮演了重要的互惠角色。

站在当下,我们很难判断一件事情的长远意义,其难点在于未来的不可预测性。当年乔布斯在里德学院学习了衬线字体和无衬线字体,站在当时,纯属一种爱好,谁能想到这个爱好,后来在开发麦金塔电脑时会用上?他在 2005 年斯坦福大学毕业典礼上的演讲里还讲了这个故事,并用最简洁的语言概括了出来。

生命里的每一个点都会最终连成线。

但行好事,莫问前程

PS. 对于这个故事中的代码感兴趣的人,可以移步 https://github.com/kamidox/sfox 。今天回头来看,作为一个刚毕业两年的年轻人的作品,确实还略显稚嫩。但当时的我,包括现在的我,依然为当时能写出这样的代码而感到自豪。

(完)


Post by Joey Huang under daily on 2022-03-08(Tuesday) 23:44. Tags: 每日随笔,


Powered by Pelican and Zurb Foundation. Theme by Kenton Hamaluik.