缘起
这两天,有人让我做为一个牛人写点回忆录。
这件事情吊诡在于:
- 其实我写过回忆录,只是那是很早以前,写在《Tinyfool 的开发日记(静态已不更新)》里,叫做《我这10来年 (Tinyfool的程序人生)》,写于2004年。以现在的我看来,那是一篇很装屄的东西,跟我写过的大多数东西都一样,刚写好的时候沾沾自 喜,几年后再看的时候羞愧难当。
- 此外,我也不是牛人,虽然随着年纪越来越大,朋友慢慢都变成了牛人,也认识了一些新的牛人朋友,但是我仍旧不是一个牛人,也谈不上成功。
不过,我还是愿意写点东西,原因之一是我有点微观历史情节,总希望自己的东西未来可以给某段历史做个注脚。此外,成功经验我虽然没有,失败教训我是 有的,可以分享下,也不算是白失败一下。
题自
几年前,XuYou老师(@mathena)假期回国的时候 送了我一本英文原版的《Founders at Work》,他说希望我和Huoju(@ virushuo )可以学习书里面的伟大的公司的创始人们作出伟 大的事业来。说起来惭愧,我连第一节,也就是PayPal创始人的故事都没看完,这可能也是我们的事业并没有伟大起来的原因之一吧。但是这个书名,这种聚 一堆大牛来忆苦思甜的模式,我都喜欢得非常。所以,当图灵准备引进姐妹篇《Coders at Work》的时候,我就很自不量力的申请了其中Joshua Bloch访谈的部分的翻译。谁知道,居然申请成功了,翻译的一个月非常痛苦,我当时才迟钝的发现,翻译技术文章是一回事儿,翻译技术大牛的访谈完全是另 外一回事儿。
这两天,图灵开始征集这本书的译名,我想到的是《码农在路上—大牛们的程序员生涯》,估计不会被采纳,所以自己先废物利用下,用做此文的标题吧,不 过请大家注意,我不是大牛,看此文时千万注意这点,此外,我不是在讲成功经验,我基本上是告诉大家我是怎么一路二把刀下来的,希望大家不要走我的弯路,有 些是因为没有人指引,有些是自己执迷,有些是运气不好,有些是愚蠢。
我的成功评价标准
每个人有不同的成功标准,文章既然是我写的,我就从我的角度谈起,我的维度很多,一一考量。
吃方面,我每天想吃肉,想吃菜,想吃巧克力,想吃米饭,甚至想吃大虾,螃蟹,反正是能满足我口味的东西,我都吃的起。偶尔请老婆请朋友吃顿人均 50-100的也请得起。那么就算成功了,暂时我对价位更高的食品也没有什么急切的渴求。
穿方面,我没有讲究,衣服裤子舒服就好,鞋子不漏就好,有了老婆以后,这点也很成功,很幸福,总是穿合身的衣服和鞋子。
住方面,我们家在天津有房子,虽然是父母的,但是还算够大,我和老婆还有孩子跟父母一起住,也能住下。不过自从03年离开天津以后,我就没有在那边 长期居住过了。03年刚到北京的时候住在公司的宿舍(就是公司在东北旺租的民房,三室住五人那种),后来跟大牛yayv老师(@yayv)同住过一年左右。后来我父母来过北京住过2-3年,直到最近我搬到了 上海,老婆也来了,我们两人现在住70多平米的一个两室。说起来,租的房子大多数时候都满足了我所有的需求,唯一的烦人在于这么多年来搬家次数太多,而我 一到搬家的时候就会患得患失的,扔东西不舍得,搬东西又懒得搬,经常会痛苦很久。03年到找到老婆前,我曾一度以为自己可能会单身一辈子,所以,从来没有 考虑过买房子的问题。同期,我的一些朋友买了房子,有些还住在里面,安顿了很多年,有些最近卖了房子套了很多现(比如huoju)。如果从投资角度来看, 我没有投资房产是失败了,于是即使自己的收入虽然一直增长,但是总资产的增长总是大大低于身边朋友的CPI,当然也低于整体社会的CPI。然而这是必然 的,我当时觉得会单身,所以不买房也是一个我认为很好的选项。其次,我一直没存下什么钱,当时家里也没有多少能力资助我,所以,即使我穿越时空回到 03-05年,对自己大喊“记得买房子啊”也是没用的。当然同理,对我自己大喊“要买百度/google/Apple股票”也不会有任何用处。所以,此项 我失败到家,有了老婆孩子,但是还没有房子,不能让她们跟我安定的待在一个地方,总是搬来搬去。
行方面,我现在的主要交通工具是自行车,每天骑着上班骑着下班。偶尔打车,或者蹭huoju和yusheng老师的车。最近几次大雨,我都坚持了骑 车来回,有一次连雨衣都没有,浑身湿透;而最近一次,虽然穿了暂新的从迪卡侬买的短款雨衣,但是因为没有雨裤,上半身完全没事,裤子的大腿部分全部湿透。 汽车以我的收入来算,还是可以买得起的,尤其是如果以yusheng老师作为榜样的话(他的二手切诺基才两万买的)。但是,我和老婆都没有驾照,我懒得去 学,她也不想去。而且在上海,上牌照貌似是很贵的。而且,按照我老婆的消费观念,不买房是不能买车的。所以,这项也只能算失败的。
消费方面,单身汉的时候,我的消费能力还是很强的,买过16M,32M,128M,256M的各色mp3,都是在最贵的时候买的。买过GBA,买过 一个Moto手机,6-7个Nokia手机。买过一个iPod Nano,两台台式PC,一台笔记本PC,一个Macbook。有了老婆后,给她买了一个Macbook,两个手机,给自己买过一个Nokia E61i,买过一个Wii,最近买了一个很贵的iMac27,还买了一个iPhone 3G(之前参加TechWeb年会,抽奖抽了一个iPod Touc,要感谢主持人炳叔)。这项难说成功与否,总之,买不起房子的很大原因在这里面,当然最重要是房价一直在飞涨,稍等等不买,然后不发大财就不会再 有机会了。因为有了老婆孩子,以后可能要抑制一下这些消费了,不过很难,我最近不是买了iMac27么?之前还买了个佳能的450D,虽然我顶住诱惑,什 么镜头都不买,只用标头。
技术方面,我的技术路线一直都很摇摆,从高中算起,94年到现在15年多,我换了无数的技术,最近比较关注Mac/iPhone/iPad平台。没 有一个技术钻研到了足够的深度,也没有作出任何被广泛使用的程序。所以只能说很失败。
挣钱方面,我刚毕业的时候工资是1200,后来一直在涨,目前为止还没有在职工资下降,或者换了工作,工资下降的情况。但是,CPI在一直飞涨,虽 然一般生活也算是越来越好,不过房子完全没可能买起。工作快10年,从来没在一个即将上市的公司待过,也就没有得到过期权套现之类的好处。外包程序没做过 几个,收益总体也很少。自己创业的公司也没有被收购的,也没有被VC的,也没有上市的,所以,基本上还是很失败的。
所以,总体来说,我的工作生涯10年,还算是挺失败的;写程序15年,也挺失败的。
我的程序员生涯(大学篇)
高一(94年)正式接触电脑的时候,学习的是GWBASIC,在闭塞的环境里,不知道有PASCAL也不知道C/C++。当时天津计算机奥赛选拔, 我参加的时候,没有BASIC的题目只有PASCAL,我一个关键字没没见过,胡乱答完了题目,而且得了第一。哦,不是,那是逗你们的,如果是大牛的回忆 录有可能,我的不会有那么牛屄的,很简单,我根本没有名次。高三临毕业的时候家里给我买了电脑,那时候看到的最亲切的就是Visual Basic 3.0,因为它也是Basic,因为它可以很简单拖拖拽拽,加上点代码就可以写出个程序,当然最重要的是它有中文的帮助,学习起来比较简单。当时,同时买 的盗版盘里面,还有Delphi2.0,虽然看着更酷,我也很喜欢,但是我实在是没有学过PASCAL,总是用不惯Delphi。
高中三年,我都和一个同学一起看一本叫《Borland C++ 3.0中文手册》的巨厚无比的书,然而我真正看到Borland C++ 3.0的时候,已经是在大学了(97年)。
整个大学里,我主要是在用Visual Basic写程序,自觉是Visual Basic绝顶高手。那时候,有位师兄叫李阳东(他现在在支付宝做架构师),天天说我用Visual Basic不长进,应该学习Visual C++,我当时不明就里,因为他最爱看的书是《深入浅出MFC》,我被彻底弄糊涂了,这东西到底是Visual C++呢?还是MFC呢?用VC写过几次程序,不习惯里面的很多概念,MVC啊,序列化啊等等,最后也没有真正碰过。不过因为Visual Basic有诸多限制,而且我喜欢看手册,所以大学期间我是吧Win32API手册看了无数遍的,算是把Win32API的逻辑搞得比较清楚了吧。也许我 一直学不进去Visual C++原因就在于它的手册无法让我学会它吧。
大学的时候,比较有意思的是,有一次我用Visual Basic写了一个程序,图标跟Visual Basic开发环境完全一样,然后有一个随机数来选择,有1/3的概率会弹出一个对话框说,“警告:微软正版检查程序发现,您正在使用的Visual Basic是盗版,一切法律责任自负”;2/3的几率是执行我改过名字的真正的开发环境的可执行文件。然后,我把这个东西安装到另外一个也用Visual Basic的师兄机器上,他真的被我骗了,很正经的分析这个软件是怎么检查出来盗版的,还大惊小怪的跟我们每个人说。其实我们那时候还没有接入互联网,局 域网也玩的不熟(我参加学校的一个计算机知识比赛的,因为不知道同轴电缆的T型头叫什么而令我们机械系惜败的,而那次比赛后我倒是挺有名,因为机械系三个 参赛人员,只有我说话…),那时候其实微软也没有激活之类的机制。
去信息中心混之前,中间有一个阶段我非常痴迷Borland C++ 3.0,那时候,世界上很多著名的东西都是用它写的。Borland最早提供的DOS下的图形库很差,有人写文章说明怎么用320×200的256模式画 图,那时候多激动啊。现在的年轻人可能无法理解,DOS时代巨多流行的游戏都是这个分辨率下的,知道怎么在这个模式下画图就等于知道怎么做游戏了。于是我 在那个模式下重复发明了很多轮子,自己的画线函数,方块函数等等,但是就是没做出来游戏。后来,又有了DOS下VESA显卡的驱动方法,每个人就更激动 了,你的DOS程序也可以像Windows那个样子了,每个人都在写自己的窗口库。最有名的是UCSDK,我当时自己也在写,从头研究,研究一个方块的四 个边框和背景的颜色差异,怎么作出Windows的按钮的效果。我当时写了一个仿Windows界面的画板的程序,为了保存文件,我还去找BMP和PCX 的文件格式说明,那时候找点资料好难啊。所以那时候CSDN出的《程序员大本营》光盘大家都非常喜欢,觉得是无价之宝一样的东西。
现在想那时候真是愚蠢,很多同学没见过Win95(学校机房默认都是DOS,当然很流行自己裁减Win95,然后用最少的磁盘带到学校机房,安装上 去,玩上面的记事本和画图程序。我们学校最高记录是三张软盘搞定。很多同学,2年后,学校机房大面积换代以后才真的用过Win95),在学校痴迷DOS下 模仿实现窗口效果,我高三毕业前有了电脑就见了Win95,我也痴迷在DOS下模仿实现窗口。那时候每个人都以为自己可以写个Windows出来,那下面 有多少底层服务,多少内核代码,多少图形界面代码,多少人月,我们都天真的漠视,甚至想都没想过。那时候,我们国家整个软件行业都以为软件强国梦就在眼 前,觉得UCDOS/Super DOS远胜微软的PDOS,觉得WPS在,微软的Word就没戏。
98-99年左右,我们有个师兄给化工系做网站(他现在是腾讯的高层),得到了一个拨号上网的帐号,启了我的互联网的蒙,那时候第一次知道了 Google,ICQ,OICQ(现在的QQ),163等等。
于是我就开始学习php3和Asp,貌似是先学php3的,那时候拓展名默认还是php3。但是因为我有Visual Basic的基础,我更喜欢Asp一些。当时还学习了一点Flash,那时候也是Flash的早期版本,4.0好像是。那时候学校搞了一个网站设计比赛。 我就用Flash画了一个城墙,找了一个矢量的鸟,网页一打开鸟会从一头飞到另外一头,然后,城门左边有个告示,大概说我这是个什么什么网站,好像是叫微 尘网城之类的(我很喜欢微尘这个词,大学的时候装屄的方式就是什么什么都叫微尘,当然没有几个人看到了能想到这个词源自佛教中一粒微尘中也有三千大千世界 的无限装屄的境界,直到后来出现了个青岛微尘),城门右边是一个登陆框,输入帐号密码后,进入后面一个界面,是一个简单的论坛的样子。实话说,做的还是挺 好看的。
不过可悲的是,那时候都是用台式机,我用软盘带着我的网站去参赛的时候,学校的机器Flash版本比我的机器的低,貌似是3.0。动画效果都在,样 子也基本对,但是输入框之类的都看不到,大概好像是Flash 3.0还不支持那些输入控件。我演示的很失败,本来很灰心,不过下面有个和蔼的略胖的男老师说,兼容性有问题没事儿,你就说说你要实现的效果就好了。于是 我人工跳转到了后面的论坛,把我所有的设计都讲了一下。
最后得了一个最佳技术奖,因为除了我以外,所有的参赛作品都是纯页面,虽然有的还真的算好看。那个男老师是信息中心的主任刘老师,他甚至想让我拿整 体第一,因为在他眼中,只有我那个能叫网站,其他的都是网页。不过其他老师都不同意,所以给我专门单开了最佳技术奖。比赛后,他找我聊天,让我参观信息中 心,问我有没有兴趣搞学生网站。那时候,我们已经知道四川的一些学生网站,比如成电的一个网站(当时暴有名,现在记不得叫什么了,离开学校就没再关注 了),川大的望江楼等等。
于是在大学的后三年左右,我就一直泡在信息中心的一个办公室里面,24小时有网络,带领了几个同学搞起来了一个学生网站我心飞扬(曾经也是教育网排 得上号的不错的学生网站,唉),我甚至经常逃课,一天到晚泡在里面,甚至晚上不回宿舍等等。
那是一段非常野蛮的成长,非常快意,也非常迷惘,我也没真的学会太多技术。因为完全没有人管束,自由自在的想学什么学什么,学过3DMax,当时想 做变形金刚的动画,……没做出来。当时学校没有学生邮件系统,我又搞不懂Exchange Sever,当时老师们考虑过一个邮件软件,不过性能貌似不好,名字我已经记不得了。而当时Win2k默认带有一个Smtp服务,可以接收邮件。我就用 Visual Basic写了一个pop3服务,可以把Smtp服务收下来的信通过pop3收走。整个程序是跑通了的,不过那时候我连多线程都不懂呢(毕竟Visual Basic当时不支持,我又没有玩Visual C++),所以程序是基于事件模型的,同时只能有一个人收信,其他人只能等待服务处理完另外一个人。学校最后当然没用我这个方案,当然我也没有真的那么提 案过,只是想想而已。
那时候,我们的网站提供了校内新闻,电子书(刘老师用离线浏览器抓下来,用sed处理的。几年前,我用类似方法帮朋友做过垃圾站),mp3下载,论 坛等等。除了论坛用了ubb,其他都是自己开发的程序。我们有3-4个人做程序,一个美工,一个外联。外联的这位美女现在在某卖电脑的世界五百强公司做客 服方面的工作,当年,我对她可寄以厚望,以为她在那家五百强至少可以做到亚太区销售总监之类的呢。我们做mp3下载的时候,一度没有新歌的mp3来源,她 单枪匹马的在逛街之余让当地最大的一家音像店,同意免费给我们提供所有新歌的CD,而我们在下载页面给他们做点小文字链广告就成了。那时候,国内网站靠广 告能盈利应该还不多,我觉得她当时简直就是个商业天才,可惜现在只作客服方面的工作了。
当时我们还提供免费空间服务,为了解决免费空间和mp3下载的空间问题,老师还把一台100G硬盘的sun5000服务器的管理权限给了我。那是多 么巨牛无比的机器啊,它待的屋子二十四小时有空调吹着,而我们学生宿舍到了我毕业那年才有的风扇。可惜那时候我几乎一点Linux/Unix的经验都没 有,就把一堆mp3上传到了sun5000了事儿,真是暴殄天物。
我的学业
我小时候对一切机械都感兴趣,据我父母称我2-3岁就把家里缝纫机给拆坏了,我完全不记的,我记忆中,拆掉的闹钟,收音机就不计其数了。上学对物 理、化学、最感兴趣,后来对电学开始感兴趣,再到后来喜欢上计算机,一切实体的东西都不感兴趣了,就喜欢那个屏幕和背后的逻辑。
从小学到高中,我都还可以算做成绩优秀的好孩子,中考的成绩,如果不计算体育和政治的话,我可以排到全校第一。曾有不少老师对我寄予厚望,不过我高 中后面一年实在是太逍遥,高考下来自己的估的分数连专科都没有过。不过好在下来了一看还在本科线内,填志愿也完全懵懂,那时候我爸带我找了个明白人去问, 人家问我喜欢什么。我说计算机,他说计算机和英语以后是工具,人人都要用的,还是报点实在的专业好。于是最后报了机械系,选了西南石油,因为我家是石油系 统的。当然也怨不得人家,现在不了解,反正我上大学的年代,报考计算机类专业的分数要求都是很高,我的分数报考计算机专业的话,绝无可能录取。
上了大学,一开始还好,我上高数课前半年,如鱼得水,发现凭着高中的底子,一点不听讲,中期就考了第三名。然而这是大悲剧的开始,后半年我也不好好 听讲,经常旷课,最后完全没有弄明白微积分。最后,补考了。这一门没有学好的结果是,所有需要微积分基础的课程,比如公式里面有微积分符号的课程,我几乎 都要补考。大三那年,貌似累计了11门补考。学校本来都要开除我了,后来家里找了很硬的关系疏通,我才得以混到毕业。
整个大学生涯,就是革命史曾经考过优,工程化学是优以外,其他课程大多都是刚刚及格,或者还不及格。
我倒不是多悔恨那么多的旷课,我很悔恨没有学好高数,令我没有机会学好物理,工程力学等等我本来是很有兴趣的学科。
原贴地址:http://tiny4.org/blog/2010/05/coder-on-the-road-tinyfool-story/
延伸阅读: