|
緣起
這兩天,有人讓我做為一個牛人寫點回憶錄。
這件事情吊詭在于:
- 其實我寫過回憶錄,只是那是很早以前,寫在《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門補考。學校本來都要開除我了,后來家里找了很硬的關系疏通,我才得以混到畢業。
整個大學生涯,就是革命史曾經考過優,工程化學是優以外,其他課程大多都是剛剛及格,或者還不及格。
我倒不是多悔恨那么多的曠課,我很悔恨沒有學好高數,令我沒有機會學好物理,工程力學等等我本來是很有興趣的學科。
敬請期待下篇《職業生涯篇》。
it知識庫:在路上—Tinyfool的程序員生涯(大學篇),轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。