本文入选 《恰同学少年》特刊(See You, 2014)

看着离校手续单上 “结清网络费” 一栏的 “免办”,我思绪万千。我也许是少有的几个从未开通过 “网络通” 的学生之一。因为在少院机房不需要网络通,后来有了 LUG 服务器也不再需要网络通,现在我坐在寝室里,用无线信号放大器蹭东活的 ustcnet。其实我并不真的在乎每月 20 元的网络费,不开网络通,更多是一种符号、一种象征,它串联起支离破碎的记忆,祭奠着悄然逝去的青春。纯属个人 YY,勿喷。

10 年前:编程从谭浩强开始

刚上初中的时候,听说有计算机竞赛这个玩意。不知道是哪里来的消息,我家长以为计算机竞赛就是玩游戏,当时我也不知道百度一下,就信以为真了。开课一个月之后,孟同学跟我说,计算机竞赛里有很多像奥数题,你应该喜欢。我家长于是向班主任核实,才知道计算机竞赛是编程序,其实我当时对编程序的理解就是修电脑的叔叔在黑框框里输入命令。当我上大学之后教同学做网站的时候,她也把 Windows 命令提示符说成是黑框框,我不禁哑然失笑,其实我们都是从那里走来的。

第一次去上计算机竞赛课的时候,40 个机位的机房里挤了 60 多号人,我连座位都没有;老师在黑板上讲 printf,台下的同学昏昏欲睡。看到同学们人手一本绿皮的《C 程序设计》第二版,封面上印着“发行 700 万册”,我就感觉谭浩强是仅次于比尔盖茨的计算机大神了。听说大牛学长还买了《算法导论》,虽然有点贵,还是“请”了一本回来供着;之所以供着是因为上面没有可以直接抄的 C 代码,没有代码的书能叫计算机专业书吗?

计算机房有一些现在看来很令人费解的规矩。比如,进机房必须穿鞋套,如果忘了带鞋套就必须回去取;电脑开机一段时间后,就要关机休息一会儿,一方面是为了让电脑休息一下,另一方面是为了让人体少受辐射。不过在编程语言上,我的入门老师却很有远见。当时计算机竞赛圈子里 Pascal 的源码铺天盖地,我们经常抱怨 C 语言的源码难找,但他说 Pascal 是过时的教学语言,C 才是你们今后能用到的正统。

我的老师大概没做过大学计算机老师,也没做过互联网公司的面试官,但折磨我们的套路与他们如出一辙——纸上编程。程序写完,老师输入到电脑里,只要编译错误或运行结果出错,就罚抄正确程序 50 遍。这种魔鬼训练法让我们对程序里的标点符号异常敏感,这也许是我到现在都对代码编辑器不太感冒的原因吧。我感觉进入大学之后编程的出错率明显提高了,这也许是拜调试器所赐:指望着调试解决 bug,写代码的时候就漫不经心了。

刷题总是无聊的,机房里总要有一些恶作剧才好玩。最流行的玩法是 ARP 欺骗,虽然我们不知道 ARP 是什么东西,但总能从网上下载一些不知道有毒没毒的小工具,一运行,整个机房就上不了网了。坐在讲台上的老师当然也上不了网,于是就会下来查,这时恶作剧者悄悄把小工具关掉,一切就像没有发生过一样。

更“高级”一些的玩法是窃取数据,因为机房里安装着一些报名系统(比如高考考生信息收集系统)和考试系统(比如中考计算机考试练习系统),这些系统的数据往往存储在本地硬盘而且没有加密,我们就尝试打开这些 Visual FoxPro 或者 MS Access 的数据库,你懂的……

UntitledUntitled

6 年前:第一次做网站

转眼就到了高中。计算机竞赛当然要接着搞,不过颇具神秘感的肖同学把我领进了一个新世界。肖同学自创了“宇宙公益组织”,有像模像样的主页,还经常给我们科普杀毒、网络攻防的技术。我立志从他那里学会“黑客”技术,不过“黑客”没学会,倒学会了做网页,其实就是用 FrontPage 做完之后上传到 FTP。

个人网站起源于高一计算机课“制作网站”的作业,大多数同学都是做了一两个网页来应付,我却一口气做了十来个。由于我小学和初中的很多小制作由奶奶爷爷包办,所以刚上线的时候有同学质疑 “这又是奶奶给做的吧!” 不过,我的家人中确实没有会做网站的,相反,他们经常把计算机视为损害青少年身心健康的恶魔。

由于竞赛班缺少一个信息发布和资源共享的平台(当年社交网络可没有这么流行),我把个人网站定位为班级信息门户,还大言不惭地在百度百科建立了 “博杰学习网” 词条。我比较喜欢写文章,胆子也比较大,网站很快就有一堆数学和计算机竞赛的资料、班级信息发布和一些时事评论了。网站还时不时会举办一些专题活动,比如网站上线一个月,就推出了纪念汶川地震专题,全站灰化。

一开始是在一些免费静态网页空间提供的二级域名上折腾,每次免费空间挂了,换域名,都要公告班里同学。后来,肖同学帮我搞了个 boj.pp.ru 的顶级域名,其实本来想要 lbj 的,但 lbj 已经被占用了,于是就用了 boj,我常用的用户名就是从这里来的。网站有“重要新闻”发布时,我从来不缺少宣传渠道,因为肖同学主管班里的黑板报,我的网站经常能在上面占个广告位。

网站看得不爽了,自然要改版。改版分为两种:改样式和改分类。先说改样式。由于网站是 FrontPage 表格布局一个个页面做出来的,改样式就意味着逐个页面修改样式。样式复杂之后,逐个修改非常容易弄错几个像素搞得对不齐,于是做一个模板,复制 N 多份,再把原来每篇文章的内容逐个粘贴到模板里。有时候个别页面忘了更新,就会出现浏览着浏览着突然跳到一个旧版页面的情况。改分类,就是把原来属于 A 分类的文章移动到 B 分类,或者新加分类。这看起来是件很简单的事,但目录页、首页和其他相关页面的链接都要手工修改,稍不注意就会出现死链。当然,当时我是不知道有动态页面的,更不知道文章内容可以结构化地存储在数据库里。

第一次用动态页面和数据库是做一个班级范围的信息查询系统,具体查询什么想不起来了,百度了几段 ASP 代码,把 MS Access 数据库通过 FTP 上传到 Web 目录,就能查询了。(那个免费空间支持 ASP 和 MS Access,我却一直在用静态 HTML!)不过,这个 MS Access 数据库文件的 URL 很快就被肖同学发现并下载下来了——这才是真正的拖库啊!

插播:《骗分导论》的故事

计算机竞赛圈子里有一本著名的《骗分导论》,我就借了这个名字,搞了一本数学竞赛版的,后来换了个冠冕堂皇点的名字。

Untitled1Untitled1

上图:《骗分导论·数学竞赛》封面,下图:部分目录

UntitledUntitled

《骗分导论·数学竞赛》获得好评之后(我把差评选择性地忽略了),我就如法炮制了一本信息学竞赛版的。当然,现在看来有很多可笑的地方。正是因为我在每个阶段都会写一些文字,回头去看的时候就感觉早先的自己就是 “民科”。因此我感觉 “民科” 并不是一个可怕的称谓,五年前的我在现在的我看来是民科,在更资深的人看来为什么就不是呢?“民科” 不可怕,下面两种行为才是可怕的:

  1. 停留在自创的理论中,不学习其他人的理论,不接受有事实依据的批评;
  2. 由于害怕被称为 “民科” 而畏首畏尾,不敢做事。
    UntitledUntitled

上图:《骗分导论·信息学竞赛》某一页

当时我参加了数学和计算机两门竞赛,还偶尔去物理竞赛那里打打酱油,竟然有时间码这么多字,充分体现了我不务正业的本性。2009 年 NOI 前夕,省队里其他同学都在刷题,我却编写了下面这本《数之理》,可惜只出了一期,第二期的内容就再也凑不够了。上大学之后,就更放纵了,大二上学期由于成绩不好从数学方向转到计算机方向,谁知并没有止住成绩下滑的脚步,大二和大三一共挂了三科,由于只有两次覆盖机会,我的毕业成绩单上还留有一门不及格成绩(当然是重修通过的)。不过可喜的是,面试的时候似乎没有人问起我的不及格成绩,面试官更感兴趣的是我大一数学难看的成绩。

UntitledUntitled

上图:《数之理》杂志目录,下图:内容某一页

UntitledUntitled

5 年前:第一次做论坛

个人网站的内容很快就超过百篇了,手工维护起来越来越吃力。于是就在 Discuz! 官方提供的免费空间上搞了个论坛,取名 “数之理”。本来想把所有文章都搬过来的,但论坛的排版不灵活,于是就基本上从头开始了。当然,免费论坛也有它的苦衷,附件大小限制 2 MB,经常需要把资料“分卷压缩”再逐个上传。今天的网站建设者就幸福多了,GAE、SAE 免费用,而且不用担心某天神不知鬼不觉地消失。

CaptureCapture

上图:论坛今天的首页。与 2010 年我停止维护的时候并无多少不同,只是多了一些免费空间提供商强制添加的广告。

保送尘埃落定之后,我就决心开发一个自己的论坛,不再受 Discuz! 论坛排版麻烦的约束。因此我百度了一大堆下图这样的资料,学起 PHP 来。

CaptureCapture

直到大学入学前夕,这个论坛有了两万行代码(其中不到一万行是我自己写的),不过界面非常简陋,远未达到可以使用的标准。这是我第一次开发实际项目的(失败)尝试,也从此认识到软件工程与计算机竞赛的重大区别,不仅仅是代码量多了一两个数量级。

4 年前:从格物致知物理论坛到格物网

进入科大后不到一个月,每个寝室就收到一份《格物致知报》。刚入学的我们正好缺少报纸来包裹东西,《中国科大报》、《恰同学少年》(少年班学院院报)和《格物致知报》正好派上用场。但我看到《格物致知报》上有个征文活动,就写了一篇投到 “编辑信箱”,后来才知道那是格物致知社的创始人和当时为数不多的会员之一。

UntitledUntitled

我希望把高中的学术论坛形式延续到科大来。但有两个困难:首先,学校政策不允许私自搭建论坛;其次,学校没有服务器来搭建论坛。在格物致知社创始人贺学长的指导下,我首先找到了管理少院机房的周学长,他在服务器机房为我找了一台旧 PC,装好了 CentOS 系统和 Apache Web 服务器,但说没有时间为我们搭建和维护论坛,你自己上网查资料。当时我对 Linux 命令的了解,仅仅是 NOI 笔试的时候要背诵的那几条(NOI 是在一个定制 Linux 发行版上考试的,但我只会用 IDE)。折腾了一周时间,终于在 chmod 777 等必杀技的帮助下,把 Discuz! 论坛搭建起来了。

论坛有了一些垫底的内容后,在班主任老师、少年班学院主管网络的赵老师的支持下,终于拿到了院长的签字,申请到了 gewu.ustc.edu.cn 域名。

CaptureCapture

上图:已经废弃的格物致知论坛首页,由于无人维护,成为了垃圾帖子的圣地。

线上的格物致知论坛和线下的物理讨论版交相辉映,我也飘飘然了起来。我们希望让格物致知论坛走出校门,变成全国性质的在线学术讨论区。我们在格物致知社内筹建了网络团队,拟定了下面的 “发展规划”(节选)。我们还拿着计划书兴致勃勃地找览盛(制作海报的公司)寻求赞助,不过被拒了。之后的发展也不顺利,网络团队的同学们对充当水军大多没有兴趣,因此论坛内容的指标没有完成,校内宣传也没有完成。校外访问倒是如期开通了。

UntitledUntitled

没有现实基础的野心是可怕的,接近大一寒假的时候,物理论坛刚刚孵化,我们又开始畅想 “Web 3.0” 了。从下面的目录节选和一张演示文稿,就能看出这个计划的靠谱程度。

UntitledUntitled

CaptureCapture

上图:格物网设计文档和演示文稿

那时的我还没有走出 “自己动手,丰衣足食” 或者说 “重复造轮子” 的思想桎梏,想在高中未完成的那个论坛代码基础上把格物网搞出来。这个寒假,我除了一堆文档和一些勉强能运行的代码之外,没有什么有价值的成果。倒是负责数学公式部分的高同学做了个基于 Flash 的数学公式输入工具,并在 GitHub 上开源了。

这个 “格物网” 最终还是实现了,不过是在半年后。大一暑假,我一边在 “格物者” 队做 Robogame,一边为格物网 “秘密计划” 编程。其实这里真正编程的时间不过两个星期,前面的时间都在设计 “烧烤模型”:“烧烤之所以能被分为多种‘层次’,是因为烧烤是个已经被高度模块化的‘行业’……想吃烧烤的用户可以让专业人士完成这些操作,也可以自行完成其中的任意一部分,将剩余部分留给专业人士完成……让互联网应用也成为像目前分工明确的工业化大生产一样,实现充分的层次化和模块化,这样用户可以从任意的现成通用模块开始,用最少的精力对其余模块进行定制,而无需重新编写整个系统”(出自 2011 年 7 月的文档)。现在想想,这个宏大的构想显然不是一己之力能够实现的,不过在开源的浪潮中,我看到了一缕曙光。

2011 级新生入学前夕,网站的雏形终于建成:

UntitledUntitled

从新生报到开始的十来天里,我们在东区校浴室门口和西区学生活动中心到食堂的路上,分别摆起了投影宣传格物网。从二教门口搬来了物理讨论版充当支架,从少院和实验室借来了投影仪和幕布,从寝室楼搬来了桌子和椅子,从旁边的毁容毁发中心和小黑超拉来了电源和网线,从保卫处拿到了活动批准……在创始人贺同学的动员和协调下,格物致知社在校的同学几乎全员出动,在中午、晚上的高峰期,轮流值守东西区两个阵地。投影上有时放格物致知社的宣传片,有时展示格物网话题直播(类似微博大屏幕),实在没得放的时候就放电影《社交网络》。同学们驻足下来的时候,就分发传单,邀请现场注册格物网。

格物网确实吸引了不少同学注册,不过由于很多功能不完善,同学们登录几次之后发现没什么事可干,就渐渐淡忘了。我们当时主要强化的是社团、班级功能,人人的组织主页当时还是个新生事物也不能满足共享文件的需求,而 QQ 群里的即时消息又是稍纵即逝,不便于积累。这个需求确实存在,也有一些团队发掘出来了,不知道是因为推广的原因而是因为这个需求不够强烈,至今科大人仍然没有社团、班级的在线平台。

3 年前:少院技术部从这里走来

自从大一在少院服务器机房里架起了格物致知论坛,就与主管少院服务器机房的技术大神郭同学结下了不解之缘。郭同学大学入学之前就玩转 Archlinux,甫一进校就被科大计算机技术最强的社团 Linux 用户协会(Linux User Group,LUG)吸纳为会员。他教我注册了 Gmail,加入了 LUG 邮件列表。由于我只会配置 LAMP(后来郭同学改成了 LNMP)和写网页,玩不转 Linux,贴在少院机房里的负责人列表就这样写着:“机房管理:周学长;服务器、网络:郭同学;Web 服务:我”。

大一临近暑假的时候,少院学生会的同学找到我们几个人,说要成立技术部,来管理少院机房和为学生会活动提供技术支持,还要建立少院学生会的网站。管机房的事情我们已经在做了,这个技术部就是给了个头衔。由于我在格物致知社搞过几次活动,我就被推举为部长,郭同学、葛同学、潘同学是副部长,整个部门一共 4 个人。

秋季学期开学的时候,技术部随少院学生会一起招新,招来了很多新入学的大神。随后的一年,我们提出了很多项目,但真正完成的只有学弟们为少年班学院院周活动搭建的 ourscgy.ustc.edu.cn。

CaptureCapture

下图:少院学生会技术部 wiki 上的软件项目,其中 FTP、无盘系统是我入校之前就已经存在的,学生会网站是学弟们做的,scgyshell 是后来我在 LUG 做的 freeshell,App Engine 是后来我在 LUG 做的 blog,科大学生网是后来的大学活动平台,存储阵列师弟们搭建起来了但没用上,离线下载我做了没人用,C 语言在线编译泡汤了。

CaptureCapture

技术部成立不久,赵老师在学院的支持下对做 Robogame 的活动室进行升级改造,建立了动手实验室。2012 年少院院周上震撼东活广场的音乐特斯拉线圈就是在动手实验室里诞生的。

CaptureCapture

3 年前:从科大学生网到大学活动平台

继续说格物网。大一那年暑假,为格物网写代码的基本上只有我一个人,我又完全不懂设计,于是很自然地想到扩充技术团队。社团招新的时候,我加入了校团委网络工作办公室、社团管指委网络中心,以发现更多的技术人才。不过,科大学霸居多,喜欢折腾技术的本来就不多,我个人的影响力也不够大,就更难找了。

我们感觉应该办个网站开发讨论班,以培训的形式吸引技术大神加入格物网的开发。跟谁合作举办呢?因为我当时经常参加 LUG 的活动,也明白 LUG 的技术实力,于是就挂上了 LUG 的招牌。从开学第三周到期末考试周的前一周,除了国庆假期,每周末我们都坚持举行活动,LUG 当时的会长老祝每次都坚持参加。前端设计部分是喵喵同学讲的,他每次都认真准备,讲得也生动活泼;我则没有这方面的经验,后端部分讲得仿佛那些不得不上的水课。讽刺的是,大二在讨论班上讲关系数据库、大四在 MSRA 研究关系数据库在网络中应用的我,大三的数据库课程竟然没有及格。

CaptureCapture

一个学期下来,形成了十几个人的松散团队。我们的目标是建立两个网站,一个是校园百科,另一个是社团、班级活动的一站式平台(校园信息平台)。我们的计划得到了学校网络中心的大力支持,不过我自己的执行力太差,号召力也不够,团队里只有少数几个同学在寒假完成了学习任务。接下来的一个学期,由于我自己在 LUG 这边比较忙,大家的学业也比较忙,两个网站都是只搭了个框架就没有继续下去。

在校团委网工办的撮合下,创业协会和百度俱乐部的几名同学加入到校园信息平台的开发中,重新审视了网站设计和用户需求,砍掉了一些形式化的功能,突出活动信息发布、社团成员管理两个核心功能,把校园信息平台改名为更亲民的 “大学活动平台”。创业协会的王同学负责前端开发,百度俱乐部的王同学、少院技术部的林同学和我负责后端开发,活动平台终于在 2012 年开学之际上线。这就是 huodong.ustc.edu.cn,本来是想把所有社团都拉进来的,但由于开发进度问题,错过了社团招新的大好时机。

CaptureCapture

现在少院的林同学仍然在维护活动平台,越来越多的社团使用活动平台维护通讯录、发布活动通知,我感到了一丝欣慰,这是第一个我发起的至今没有死掉的项目。

活动平台刚刚开发完,格物创业团队(格物致知社的几位老同志搞的)就把我、郭同学、曾同学等叫来,在南门外的瀚海星座租了间办公室,要做 “组织社交网络”,完成 “格物网” 未竟的夙愿。由于有了大学活动平台的开发经验,平心而论,这次的网站定位和功能设计比之前靠谱多了。不过,问题又出在技术上。我们决定用 Python 的 Django 框架开发,郭同学打算设计一个基于控件(widget)的架构。设计技术架构是最“简单”的,我在搞格物网的时候设计过三五次,每次都形成了几十页的文档。这些花架子的后果我们是心知肚明的。不过,技术讨论很容易出现这样一种情况,团队里的技术大神说出一些其他人都不懂的名词,讨论就可以结束了。

于是,郭同学用一两个月的时间把框架设计好(把坑挖好),我花了一周时间把框架看懂,然后一起填坑。这段时间里相对独立开发的前端倒进展比较顺利,不过看后端迟迟没有进展,前端同学的动力也消退了。坑填到一半,科大博客(blog.ustc.edu.cn)的发布日期也快到了,我们又转战那个项目,组织社交网络就算搁浅了。后来,我们感觉社交网络已经是红海,创业团队不好拉投资,也就没有继续做下去。

2 年前:成为 Linux User Group 掌门

大二上学期办完网站开发讨论班之后,大二下学期我们觉得应该把这个每周一次的讨论继续下去,内容也应该跟 Linux 更相关一些。LUG 每周小聚 就从这里走来。社团管指委的同学评论 LUG 每周小聚是 LUG 的招牌活动。不过,这个招牌活动也面临找不到主讲的困难,毕竟不是所有人都有随时可分享的技术,还有一些同学不喜欢分享自己的技术。

我们多次希望把每周小聚改成自由聊天的形式,但尝试之后发现大家聊着聊着就会跑到技术之外的地方,浪费所有参与者的时间。这可能是因为 LUG 成员并非专业程序员,仅仅是因为对 Linux 感兴趣才聚在一起,没有太多技术方面的谈资吧。2014 年,LUG 的新一代领导班子把每周小聚改为入门公开课,相当于向网站开发讨论班这种形式的回归。

大概是由于搞了每周小聚吧,大二下学期我被火箭提拔为会长,在换届会议之前我从未想过要当会长。不过,既然当了会长就要好好干活,我写过一篇文章《我在 LUG 这一年》来总结。

总体来说,我觉得我没有胜任会长这个职位,CTO 可能更合适。这一年我在组织活动和吸纳新人方面不作为,却管了一段科大开源软件镜像并把它玩坏了,与小伙伴们一起新建了科大博客(blog.ustc.edu.cn)、虚拟机服务(freeshell.ustc.edu.cn)、代码托管服务(gitlab.lug.ustc.edu.cn)等网络服务。不过假设我去年不是会长,也不可能力排众议把这些网络服务搞起来,因为协会的几位元老和我那一届的 CTO 都是以稳定和守成为重。我一直舍不得我创建的网络服务,因此在我卸任会长之后长达一年的时间里,虽身不在科大,但行的是 CTO 之实,经常在邮件列表讨论技术问题,还为 LUG 会员新开了 VPN 服务(vpn.lug.ustc.edu.cn)。

CaptureCapture

上图:LUG 服务器维护小组的黑板报

忘不了凌晨两点收到服务器报警,冒着凌冽的寒风,跪在二教门前蹭少院的无线网修服务器(都是本科生寝室没网惹的祸,手机信号也很渣);忘不了 2012 年 11 月刚做完小手术,就星夜兼程赶 Linux User Party 上的 blog 发布,最后还是跳票了两天,在我生日那天早上才与大家见面;忘不了活动场地出问题时马不停蹄地申请新场地、修补海报。

很多人发现我生活不规律,其实我并不是跟着自己的生物钟转,而是跟着机器的时钟转——哪里有故障,哪里就要马上处理;一个 bug、一个功能,表面上一两个小时就能搞定,但真正做起来可能就到第二天天亮了。一年的会长经历培养了我的责任感:我如果不能解决,也不知道谁能解决,这个问题永远就不能被解决。面对日益复杂的问题,这种责任感让我几乎没有自己的生活,但也给了我锻炼的机会。

1 年前:从“工业界”到“学术界”

大三下学期我卸任 LUG 会长的时候,已经加入了格物创业团队,为几个产品写了服务器端的代码。我把报了的 GRE 退掉了,准备保研,一边读硕士一边体验创业的感觉。这时候班主任说有个 “微软小学者” 奖学金,我当然要报名。报了名还要面试,而这个面试是跟 “微软与科大联合培养博士” 项目连起来的。面试通过之后,我不仅拿到了奖学金,还拿到了去 MSRA(微软亚洲研究院)实习的资格。一开始我差点给拒掉了,在咨询学长之后,我觉得应该去试一试。

我被分到了无线与网络组,大老板张导师给我打电话,我问的第一个问题是无线自组网是否可以用来实现室内网络覆盖——因为当时我们创业团队在做智能路由器(我走了之后就搁浅了)。在得到 “无线自组网效率很低” 的回答之后,我觉得自己一无理论基础,二无技术积累,远远不具备带领一个技术团队的能力。

在一个暑假的实习中,我接触到了软件定义网络的新趋势,了解了主流数据中心交换机芯片的硬件架构与编程接口,前者也许在学校的网络实验室能学到,后者却是在学校很难接触到的。学习的机会是难得的,而且 MSRA 有舒适的工作环境和宽松的时间安排,我于是决定留下来。

大四开学之后,各种互联网公司的面试开始了。看到一些同学在投简历,我就想,要是能直接申请进 Google,就不用苦逼地读博士了。不知怎么的,我这个想法被 MSRA 主管联合培养博士班的老师知道了,他警告我如果读博期间中途退出会 “身心俱焚”。我顿时有种签了卖身契的感觉,不过想想也是,读博士需要专注于自己的研究方向,分心了就做不出成果了。

我又是一个不太守规矩的人,如果在大公司里做大项目,说不定会给团队帮倒忙;做研究这种单打独斗的行为倒需要思想纵马奔驰。此后的半年多里,我努力去发现学术研究有意思的地方,提高自己在网络研究和系统研究方面的素养。现在感觉这一年确实上了一个台阶,提高了自身能力的独特性,至少感觉以后能在网络圈里混口饭吃了。

今年初,我们组忙到大年三十赶一篇 SIGCOMM(网络领域顶级会议)论文,结果被拒得非常惨,主要原因是我们对工业界在用的解决方案不够了解。我们组有光辉的历史:Windows Vista 至今每一台 Windows 电脑里的 TCP 拥塞控制算法(CTCP)是我们组设计的;2009 年以来技术指标最先进的软件无线电解决方案 SORA 是我们组做的;第一个把路由器芯片与 x86 CPU 结合,实现在网络内处理数据包的 ServerSwitch 也是我们组的成果。但团队经过了换血,又遇上新的领域,我们又要二次创业了。不过我并不害怕,我接手 LUG 服务器的时候,也是懂行的师兄已毕业,有技术的同学懒得动,自己也非常小白,不还是在一次次试错中解决了问题、积累了经验吗。

0 年前:毕业

终于结束了。不,是新的开始。回首大学这四年,似乎是在浑浑噩噩中度过了,没有留下什么有价值的东西。如果我少写些设计文档、少想些 Web 3.0 之类不靠谱的事情,也许 “组织社交网络” 早就实现了。如果我没有去 MSRA 而留在创业团队,也许我们会成为智能路由器市场的又一竞争者。如果我把在学校的软件工程课、在微软的高级软件工程课中的项目坚持做到可以发布的程度,我的简历上又可以多一两样成果。然而,历史没有如果,有所得必有所失,有所失必有所得,不能被 “沉没成本” 束缚住手脚。

从这些失败的项目中,我的反思是,从小项目做起,尽快写代码、尽快发布产品,不要几十页的计划书,也不要几个人的团队。一个人就够了,一个月就够了。如果做出来没有反响,扔掉这个包袱,轻装上阵。如果真的有好评,再组建团队去完善它也不迟。如果一个产品就是打算靠 “功能丰富” 来取胜,那就不要去做它。

从小白一路走来,我的感受是,永远保持学习的心态,扩充已知的世界;敢于用已知的世界去想、去做,不要害怕 “民科” 的指责;珍惜上帝赐予你的朋友、贵人,他们将引领你,为未知的世界敲开一扇门;永远不要担心自己慢人一步,技术是以摩尔定律的速度发展的,数值的差异取个对数,就不显得那么大了。

带领团队是一件听起来很诱人的事情,但不是每个人都有能力做这件事,我就是没有能力的人之一。大学四年,我尝试了多种多样的团队角色,体味了多姿多彩的项目百态,还是觉得自己最适合做个孔乙己形象的技术专家。韶华易逝,用四年时间证明此路不通,值还是不值,只有留待若干年后去评说了。

谨以此文,祭奠我逝去的青春。

Comments