|
緣起
這兩天,有人讓我做為一個牛人寫點(diǎn)回憶錄。
這件事情吊詭在于:
- 其實(shí)我寫過回憶錄,只是那是很早以前,寫在《Tinyfool的開發(fā)日記(靜態(tài)已不更新)》里,叫做《我這10來年(Tinyfool的程序人生)》,寫于2004年。以現(xiàn)在的我看來,那是一篇很裝屄的東西,跟我寫過的大多數(shù)東西都一樣,剛寫好的時候沾沾自喜,幾年后再看的時候羞愧難當(dāng)。
- 此外,我也不是牛人,雖然隨著年紀(jì)越來越大,朋友慢慢都變成了牛人,也認(rèn)識了一些新的牛人朋友,但是我仍舊不是一個牛人,也談不上成功。
不過,我還是愿意寫點(diǎn)東西,原因之一是我有點(diǎn)微觀歷史情節(jié),總希望自己的東西未來可以給某段歷史做個注腳。此外,成功經(jīng)驗(yàn)我雖然沒有,失敗教訓(xùn)我是有的,可以分享下,也不算是白失敗一下。
題自
幾年前,XuYou老師(@mathena)假期回國的時候送了我一本英文原版的《Founders at Work》,他說希望我和Huoju(@ virushuo )可以學(xué)習(xí)書里面的偉大的公司的創(chuàng)始人們作出偉大的事業(yè)來。說起來慚愧,我連第一節(jié),也就是PayPal創(chuàng)始人的故事都沒看完,這可能也是我們的事業(yè)并沒有偉大起來的原因之一吧。但是這個書名,這種聚一堆大牛來憶苦思甜的模式,我都喜歡得非常。所以,當(dāng)圖靈準(zhǔn)備引進(jìn)姐妹篇《Coders at Work》的時候,我就很自不量力的申請了其中Joshua Bloch訪談的部分的翻譯。誰知道,居然申請成功了,翻譯的一個月非常痛苦,我當(dāng)時才遲鈍的發(fā)現(xiàn),翻譯技術(shù)文章是一回事兒,翻譯技術(shù)大牛的訪談完全是另外一回事兒。
這兩天,圖靈開始征集這本書的譯名,我想到的是《碼農(nóng)在路上—大牛們的程序員生涯》,估計不會被采納,所以自己先廢物利用下,用做此文的標(biāo)題吧,不過請大家注意,我不是大牛,看此文時千萬注意這點(diǎn),此外,我不是在講成功經(jīng)驗(yàn),我基本上是告訴大家我是怎么一路二把刀下來的,希望大家不要走我的彎路,有些是因?yàn)闆]有人指引,有些是自己執(zhí)迷,有些是運(yùn)氣不好,有些是愚蠢。
我的成功評價標(biāo)準(zhǔn)
每個人有不同的成功標(biāo)準(zhǔn),文章既然是我寫的,我就從我的角度談起,我的維度很多,一一考量。
吃方面,我每天想吃肉,想吃菜,想吃巧克力,想吃米飯,甚至想吃大蝦,螃蟹,反正是能滿足我口味的東西,我都吃的起。偶爾請老婆請朋友吃頓人均50-100的也請得起。那么就算成功了,暫時我對價位更高的食品也沒有什么急切的渴求。
穿方面,我沒有講究,衣服褲子舒服就好,鞋子不漏就好,有了老婆以后,這點(diǎn)也很成功,很幸福,總是穿合身的衣服和鞋子。
住方面,我們家在天津有房子,雖然是父母的,但是還算夠大,我和老婆還有孩子跟父母一起住,也能住下。不過自從03年離開天津以后,我就沒有在那邊長期居住過了。03年剛到北京的時候住在公司的宿舍(就是公司在東北旺租的民房,三室住五人那種),后來跟大牛yayv老師(@yayv)同住過一年左右。后來我父母來過北京住過2-3年,直到最近我搬到了上海,老婆也來了,我們兩人現(xiàn)在住70多平米的一個兩室。說起來,租的房子大多數(shù)時候都滿足了我所有的需求,唯一的煩人在于這么多年來搬家次數(shù)太多,而我一到搬家的時候就會患得患失的,扔?xùn)|西不舍得,搬東西又懶得搬,經(jīng)常會痛苦很久。03年到找到老婆前,我曾一度以為自己可能會單身一輩子,所以,從來沒有考慮過買房子的問題。同期,我的一些朋友買了房子,有些還住在里面,安頓了很多年,有些最近賣了房子套了很多現(xiàn)(比如huoju)。如果從投資角度來看,我沒有投資房產(chǎn)是失敗了,于是即使自己的收入雖然一直增長,但是總資產(chǎn)的增長總是大大低于身邊朋友的CPI,當(dāng)然也低于整體社會的CPI。然而這是必然的,我當(dāng)時覺得會單身,所以不買房也是一個我認(rèn)為很好的選項(xiàng)。其次,我一直沒存下什么錢,當(dāng)時家里也沒有多少能力資助我,所以,即使我穿越時空回到03-05年,對自己大喊“記得買房子啊”也是沒用的。當(dāng)然同理,對我自己大喊“要買百度/google/Apple股票”也不會有任何用處。所以,此項(xiàng)我失敗到家,有了老婆孩子,但是還沒有房子,不能讓她們跟我安定的待在一個地方,總是搬來搬去。
行方面,我現(xiàn)在的主要交通工具是自行車,每天騎著上班騎著下班。偶爾打車,或者蹭huoju和yusheng老師的車。最近幾次大雨,我都堅(jiān)持了騎車來回,有一次連雨衣都沒有,渾身濕透;而最近一次,雖然穿了暫新的從迪卡儂買的短款雨衣,但是因?yàn)闆]有雨褲,上半身完全沒事,褲子的大腿部分全部濕透。汽車以我的收入來算,還是可以買得起的,尤其是如果以yusheng老師作為榜樣的話(他的二手切諾基才兩萬買的)。但是,我和老婆都沒有駕照,我懶得去學(xué),她也不想去。而且在上海,上牌照貌似是很貴的。而且,按照我老婆的消費(fèi)觀念,不買房是不能買車的。所以,這項(xiàng)也只能算失敗的。
消費(fèi)方面,單身漢的時候,我的消費(fèi)能力還是很強(qiáng)的,買過16M,32M,128M,256M的各色mp3,都是在最貴的時候買的。買過GBA,買過一個Moto手機(jī),6-7個Nokia手機(jī)。買過一個iPod Nano,兩臺臺式PC,一臺筆記本PC,一個Macbook。有了老婆后,給她買了一個Macbook,兩個手機(jī),給自己買過一個Nokia E61i,買過一個Wii,最近買了一個很貴的iMac27,還買了一個iPhone 3G(之前參加TechWeb年會,抽獎抽了一個iPod Touc,要感謝主持人炳叔)。這項(xiàng)難說成功與否,總之,買不起房子的很大原因在這里面,當(dāng)然最重要是房價一直在飛漲,稍等等不買,然后不發(fā)大財就不會再有機(jī)會了。因?yàn)橛辛死掀藕⒆?,以后可能要抑制一下這些消費(fèi)了,不過很難,我最近不是買了iMac27么?之前還買了個佳能的450D,雖然我頂住誘惑,什么鏡頭都不買,只用標(biāo)頭。
技術(shù)方面,我的技術(shù)路線一直都很搖擺,從高中算起,94年到現(xiàn)在15年多,我換了無數(shù)的技術(shù),最近比較關(guān)注Mac/iPhone/iPad平臺。沒有一個技術(shù)鉆研到了足夠的深度,也沒有作出任何被廣泛使用的程序。所以只能說很失敗。
掙錢方面,我剛畢業(yè)的時候工資是1200,后來一直在漲,目前為止還沒有在職工資下降,或者換了工作,工資下降的情況。但是,CPI在一直飛漲,雖然一般生活也算是越來越好,不過房子完全沒可能買起。工作快10年,從來沒在一個即將上市的公司待過,也就沒有得到過期權(quán)套現(xiàn)之類的好處。外包程序沒做過幾個,收益總體也很少。自己創(chuàng)業(yè)的公司也沒有被收購的,也沒有被VC的,也沒有上市的,所以,基本上還是很失敗的。
所以,總體來說,我的工作生涯10年,還算是挺失敗的;寫程序15年,也挺失敗的。
我的程序員生涯(大學(xué)篇)
高一(94年)正式接觸電腦的時候,學(xué)習(xí)的是GWBASIC,在閉塞的環(huán)境里,不知道有PASCAL也不知道C/C++。當(dāng)時天津計算機(jī)奧賽選拔,我參加的時候,沒有BASIC的題目只有PASCAL,我一個關(guān)鍵字沒沒見過,胡亂答完了題目,而且得了第一。哦,不是,那是逗你們的,如果是大牛的回憶錄有可能,我的不會有那么牛屄的,很簡單,我根本沒有名次。高三臨畢業(yè)的時候家里給我買了電腦,那時候看到的最親切的就是Visual Basic 3.0,因?yàn)樗彩荁asic,因?yàn)樗梢院芎唵瓮贤献ё?,加上點(diǎn)代碼就可以寫出個程序,當(dāng)然最重要的是它有中文的幫助,學(xué)習(xí)起來比較簡單。當(dāng)時,同時買的盜版盤里面,還有Delphi2.0,雖然看著更酷,我也很喜歡,但是我實(shí)在是沒有學(xué)過PASCAL,總是用不慣Delphi。
高中三年,我都和一個同學(xué)一起看一本叫《Borland C++ 3.0中文手冊》的巨厚無比的書,然而我真正看到Borland C++ 3.0的時候,已經(jīng)是在大學(xué)了(97年)。
整個大學(xué)里,我主要是在用Visual Basic寫程序,自覺是Visual Basic絕頂高手。那時候,有位師兄叫李陽東(他現(xiàn)在在支付寶做架構(gòu)師),天天說我用Visual Basic不長進(jìn),應(yīng)該學(xué)習(xí)Visual C++,我當(dāng)時不明就里,因?yàn)樗類劭吹臅恰渡钊霚\出MFC》,我被徹底弄糊涂了,這東西到底是Visual C++呢?還是MFC呢?用VC寫過幾次程序,不習(xí)慣里面的很多概念,MVC啊,序列化啊等等,最后也沒有真正碰過。不過因?yàn)閂isual Basic有諸多限制,而且我喜歡看手冊,所以大學(xué)期間我是吧Win32API手冊看了無數(shù)遍的,算是把Win32API的邏輯搞得比較清楚了吧。也許我一直學(xué)不進(jìn)去Visual C++原因就在于它的手冊無法讓我學(xué)會它吧。
大學(xué)的時候,比較有意思的是,有一次我用Visual Basic寫了一個程序,圖標(biāo)跟Visual Basic開發(fā)環(huán)境完全一樣,然后有一個隨機(jī)數(shù)來選擇,有1/3的概率會彈出一個對話框說,“警告:微軟正版檢查程序發(fā)現(xiàn),您正在使用的Visual Basic是盜版,一切法律責(zé)任自負(fù)”;2/3的幾率是執(zhí)行我改過名字的真正的開發(fā)環(huán)境的可執(zhí)行文件。然后,我把這個東西安裝到另外一個也用Visual Basic的師兄機(jī)器上,他真的被我騙了,很正經(jīng)的分析這個軟件是怎么檢查出來盜版的,還大驚小怪的跟我們每個人說。其實(shí)我們那時候還沒有接入互聯(lián)網(wǎng),局域網(wǎng)也玩的不熟(我參加學(xué)校的一個計算機(jī)知識比賽的,因?yàn)椴恢劳S電纜的T型頭叫什么而令我們機(jī)械系惜敗的,而那次比賽后我倒是挺有名,因?yàn)闄C(jī)械系三個參賽人員,只有我說話…),那時候其實(shí)微軟也沒有激活之類的機(jī)制。
去信息中心混之前,中間有一個階段我非常癡迷Borland C++ 3.0,那時候,世界上很多著名的東西都是用它寫的。Borland最早提供的DOS下的圖形庫很差,有人寫文章說明怎么用320×200的256模式畫圖,那時候多激動啊。現(xiàn)在的年輕人可能無法理解,DOS時代巨多流行的游戲都是這個分辨率下的,知道怎么在這個模式下畫圖就等于知道怎么做游戲了。于是我在那個模式下重復(fù)發(fā)明了很多輪子,自己的畫線函數(shù),方塊函數(shù)等等,但是就是沒做出來游戲。后來,又有了DOS下VESA顯卡的驅(qū)動方法,每個人就更激動了,你的DOS程序也可以像Windows那個樣子了,每個人都在寫自己的窗口庫。最有名的是UCSDK,我當(dāng)時自己也在寫,從頭研究,研究一個方塊的四個邊框和背景的顏色差異,怎么作出Windows的按鈕的效果。我當(dāng)時寫了一個仿Windows界面的畫板的程序,為了保存文件,我還去找BMP和PCX的文件格式說明,那時候找點(diǎn)資料好難啊。所以那時候CSDN出的《程序員大本營》光盤大家都非常喜歡,覺得是無價之寶一樣的東西。
現(xiàn)在想那時候真是愚蠢,很多同學(xué)沒見過Win95(學(xué)校機(jī)房默認(rèn)都是DOS,當(dāng)然很流行自己裁減Win95,然后用最少的磁盤帶到學(xué)校機(jī)房,安裝上去,玩上面的記事本和畫圖程序。我們學(xué)校最高記錄是三張軟盤搞定。很多同學(xué),2年后,學(xué)校機(jī)房大面積換代以后才真的用過Win95),在學(xué)校癡迷DOS下模仿實(shí)現(xiàn)窗口效果,我高三畢業(yè)前有了電腦就見了Win95,我也癡迷在DOS下模仿實(shí)現(xiàn)窗口。那時候每個人都以為自己可以寫個Windows出來,那下面有多少底層服務(wù),多少內(nèi)核代碼,多少圖形界面代碼,多少人月,我們都天真的漠視,甚至想都沒想過。那時候,我們國家整個軟件行業(yè)都以為軟件強(qiáng)國夢就在眼前,覺得UCDOS/Super DOS遠(yuǎn)勝微軟的PDOS,覺得WPS在,微軟的Word就沒戲。
98-99年左右,我們有個師兄給化工系做網(wǎng)站(他現(xiàn)在是騰訊的高層),得到了一個撥號上網(wǎng)的帳號,啟了我的互聯(lián)網(wǎng)的蒙,那時候第一次知道了Google,ICQ,OICQ(現(xiàn)在的QQ),163等等。
于是我就開始學(xué)習(xí)php3和ASP,貌似是先學(xué)php3的,那時候拓展名默認(rèn)還是php3。但是因?yàn)槲矣蠽isual Basic的基礎(chǔ),我更喜歡ASP一些。當(dāng)時還學(xué)習(xí)了一點(diǎn)Flash,那時候也是Flash的早期版本,4.0好像是。那時候?qū)W校搞了一個網(wǎng)站設(shè)計比賽。我就用Flash畫了一個城墻,找了一個矢量的鳥,網(wǎng)頁一打開鳥會從一頭飛到另外一頭,然后,城門左邊有個告示,大概說我這是個什么什么網(wǎng)站,好像是叫微塵網(wǎng)城之類的(我很喜歡微塵這個詞,大學(xué)的時候裝屄的方式就是什么什么都叫微塵,當(dāng)然沒有幾個人看到了能想到這個詞源自佛教中一粒微塵中也有三千大千世界的無限裝屄的境界,直到后來出現(xiàn)了個青島微塵),城門右邊是一個登陸框,輸入帳號密碼后,進(jìn)入后面一個界面,是一個簡單的論壇的樣子。實(shí)話說,做的還是挺好看的。
不過可悲的是,那時候都是用臺式機(jī),我用軟盤帶著我的網(wǎng)站去參賽的時候,學(xué)校的機(jī)器Flash版本比我的機(jī)器的低,貌似是3.0。動畫效果都在,樣子也基本對,但是輸入框之類的都看不到,大概好像是Flash 3.0還不支持那些輸入控件。我演示的很失敗,本來很灰心,不過下面有個和藹的略胖的男老師說,兼容性有問題沒事兒,你就說說你要實(shí)現(xiàn)的效果就好了。于是我人工跳轉(zhuǎn)到了后面的論壇,把我所有的設(shè)計都講了一下。
最后得了一個最佳技術(shù)獎,因?yàn)槌宋乙酝猓械膮①愖髌范际羌冺撁?,雖然有的還真的算好看。那個男老師是信息中心的主任劉老師,他甚至想讓我拿整體第一,因?yàn)樵谒壑?,只有我那個能叫網(wǎng)站,其他的都是網(wǎng)頁。不過其他老師都不同意,所以給我專門單開了最佳技術(shù)獎。比賽后,他找我聊天,讓我參觀信息中心,問我有沒有興趣搞學(xué)生網(wǎng)站。那時候,我們已經(jīng)知道四川的一些學(xué)生網(wǎng)站,比如成電的一個網(wǎng)站(當(dāng)時暴有名,現(xiàn)在記不得叫什么了,離開學(xué)校就沒再關(guān)注了),川大的望江樓等等。
于是在大學(xué)的后三年左右,我就一直泡在信息中心的一個辦公室里面,24小時有網(wǎng)絡(luò),帶領(lǐng)了幾個同學(xué)搞起來了一個學(xué)生網(wǎng)站我心飛揚(yáng)(曾經(jīng)也是教育網(wǎng)排得上號的不錯的學(xué)生網(wǎng)站,唉),我甚至經(jīng)常逃課,一天到晚泡在里面,甚至晚上不回宿舍等等。
那是一段非常野蠻的成長,非常快意,也非常迷惘,我也沒真的學(xué)會太多技術(shù)。因?yàn)橥耆珱]有人管束,自由自在的想學(xué)什么學(xué)什么,學(xué)過3DMax,當(dāng)時想做變形金剛的動畫,……沒做出來。當(dāng)時學(xué)校沒有學(xué)生郵件系統(tǒng),我又搞不懂Exchange Sever,當(dāng)時老師們考慮過一個郵件軟件,不過性能貌似不好,名字我已經(jīng)記不得了。而當(dāng)時Win2k默認(rèn)帶有一個Smtp服務(wù),可以接收郵件。我就用Visual Basic寫了一個pop3服務(wù),可以把Smtp服務(wù)收下來的信通過pop3收走。整個程序是跑通了的,不過那時候我連多線程都不懂呢(畢竟Visual Basic當(dāng)時不支持,我又沒有玩Visual C++),所以程序是基于事件模型的,同時只能有一個人收信,其他人只能等待服務(wù)處理完另外一個人。學(xué)校最后當(dāng)然沒用我這個方案,當(dāng)然我也沒有真的那么提案過,只是想想而已。
那時候,我們的網(wǎng)站提供了校內(nèi)新聞,電子書(劉老師用離線瀏覽器抓下來,用sed處理的。幾年前,我用類似方法幫朋友做過垃圾站),mp3下載,論壇等等。除了論壇用了ubb,其他都是自己開發(fā)的程序。我們有3-4個人做程序,一個美工,一個外聯(lián)。外聯(lián)的這位美女現(xiàn)在在某賣電腦的世界五百強(qiáng)公司做客服方面的工作,當(dāng)年,我對她可寄以厚望,以為她在那家五百強(qiáng)至少可以做到亞太區(qū)銷售總監(jiān)之類的呢。我們做mp3下載的時候,一度沒有新歌的mp3來源,她單槍匹馬的在逛街之余讓當(dāng)?shù)刈畲蟮囊患乙粝竦?,同意免費(fèi)給我們提供所有新歌的CD,而我們在下載頁面給他們做點(diǎn)小文字鏈廣告就成了。那時候,國內(nèi)網(wǎng)站靠廣告能盈利應(yīng)該還不多,我覺得她當(dāng)時簡直就是個商業(yè)天才,可惜現(xiàn)在只作客服方面的工作了。
當(dāng)時我們還提供免費(fèi)空間服務(wù),為了解決免費(fèi)空間和mp3下載的空間問題,老師還把一臺100G硬盤的sun5000服務(wù)器的管理權(quán)限給了我。那是多么巨牛無比的機(jī)器啊,它待的屋子二十四小時有空調(diào)吹著,而我們學(xué)生宿舍到了我畢業(yè)那年才有的風(fēng)扇。可惜那時候我?guī)缀跻稽c(diǎn)Linux/Unix的經(jīng)驗(yàn)都沒有,就把一堆mp3上傳到了sun5000了事兒,真是暴殄天物。
我的學(xué)業(yè)
我小時候?qū)σ磺袡C(jī)械都感興趣,據(jù)我父母稱我2-3歲就把家里縫紉機(jī)給拆壞了,我完全不記的,我記憶中,拆掉的鬧鐘,收音機(jī)就不計其數(shù)了。上學(xué)對物理、化學(xué)、最感興趣,后來對電學(xué)開始感興趣,再到后來喜歡上計算機(jī),一切實(shí)體的東西都不感興趣了,就喜歡那個屏幕和背后的邏輯。
從小學(xué)到高中,我都還可以算做成績優(yōu)秀的好孩子,中考的成績,如果不計算體育和政治的話,我可以排到全校第一。曾有不少老師對我寄予厚望,不過我高中后面一年實(shí)在是太逍遙,高考下來自己的估的分?jǐn)?shù)連專科都沒有過。不過好在下來了一看還在本科線內(nèi),填志愿也完全懵懂,那時候我爸帶我找了個明白人去問,人家問我喜歡什么。我說計算機(jī),他說計算機(jī)和英語以后是工具,人人都要用的,還是報點(diǎn)實(shí)在的專業(yè)好。于是最后報了機(jī)械系,選了西南石油,因?yàn)槲壹沂鞘拖到y(tǒng)的。當(dāng)然也怨不得人家,現(xiàn)在不了解,反正我上大學(xué)的年代,報考計算機(jī)類專業(yè)的分?jǐn)?shù)要求都是很高,我的分?jǐn)?shù)報考計算機(jī)專業(yè)的話,絕無可能錄取。
上了大學(xué),一開始還好,我上高數(shù)課前半年,如魚得水,發(fā)現(xiàn)憑著高中的底子,一點(diǎn)不聽講,中期就考了第三名。然而這是大悲劇的開始,后半年我也不好好聽講,經(jīng)常曠課,最后完全沒有弄明白微積分。最后,補(bǔ)考了。這一門沒有學(xué)好的結(jié)果是,所有需要微積分基礎(chǔ)的課程,比如公式里面有微積分符號的課程,我?guī)缀醵家a(bǔ)考。大三那年,貌似累計了11門補(bǔ)考。學(xué)校本來都要開除我了,后來家里找了很硬的關(guān)系疏通,我才得以混到畢業(yè)。
整個大學(xué)生涯,就是革命史曾經(jīng)考過優(yōu),工程化學(xué)是優(yōu)以外,其他課程大多都是剛剛及格,或者還不及格。
我倒不是多悔恨那么多的曠課,我很悔恨沒有學(xué)好高數(shù),令我沒有機(jī)會學(xué)好物理,工程力學(xué)等等我本來是很有興趣的學(xué)科。
敬請期待下篇《職業(yè)生涯篇》。
it知識庫:在路上—Tinyfool的程序員生涯(大學(xué)篇),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。