這篇文章是在雷總個人博客看到的,裡面聊到了他作為程式師的一些經歷、初衷以及思考。 寫的不錯,轉來給大家看看。
如果程式人生的話,這條路太漫長。
我並非天生喜歡寫程式,上高中時也沒有想過程式師的生活。
我學電腦非常偶然,小時好友上大學時選擇了計算機系,為了和這個朋友有更多的共同語言,我也選擇了計算機系,開始步入程式人生的道路。
當我學會一些后,發現自己特別喜歡寫程式。 我是八七年上的武漢大學計算機系,大一下學期才有專業課。 當我有資格上機的時候,發現電腦世界太美妙,就一頭扎進去。
當時用的是 Motorola 540 (相當 於 Intel 0), 0K 的記憶體,運行的 UNIX 操作系統,八個人一起用。
大二學PC,又過了一學期,開始出現在老師的實驗室,幫忙幹活,當時就寫了現在很多人用的 RI (RAMinit, 清記憶體的小工具, 看來我還是最早一批寫 Shareware 的人)。
又過了一個學期,開始和校外的公司接觸。 大二暑假,也就是99年0月,和一個朋友組建了 Yellow Rose 軟體小組,寫了我第一個商品軟體 BITLOK 0.0。 後來自己創業辦過公司,也寫過一些其他的軟體。
大學畢業后,分到研究所,不太適應那裡的氣氛,就在1992年初加入金山軟體,開始了職業程式師的生涯。 後來成了金山軟體研發部門的主管,但我一直都是一線的程序師。
程式員活在自己想像的王國里
我剛接觸電腦就發現電腦的妙處,電腦遠沒有人那麼複雜。 如果你的程式寫得好,你就可以和電腦處好關係,就可以指揮電腦干你想幹的事。
這個時候你是十足的主宰。 每你坐在電腦面前,你就是在你的王國里巡行,這樣的日子簡直就是天堂般的日子。
電腦裡的世界很大,程式設計人是活在自己想像的王國里。 你可以想像到電腦里細微到每一個字節、每一個比特的東西。
我愛程式設計這個工作,可以肯定我會幹上一輩子
不少人認為程式師最多干到三十五歲就可以收山換環境了,腦子也差不多該歇歇了,體力也不支了。 並認為寫程式是年輕人的事情,到了一定歲數,估計沒什麼人再當程式師了。
當我剛有一點本事的時候,我也和大家一樣覺得程式設計辛苦,也想三十歲後干別的。 當我年長一點后就發現了自己的無知。
一個人大學畢業就二十一二歲,有點水平的時候可能二十五,接著就是過日子諸多事情。 一切搞掂的時候,也許就是三十五歲。 如果這樣的話,我們就不用選擇程式人生的道路。
電腦進入中國時間並不短,但真正大規模開始用,還是八五年 PC 開始的,因此國內真正寫電腦程式的人最長也就寫了十幾年(不知道是否還有這樣的人)。
由於電腦應用在國內時間比較短,國內開發的主力是三十五歲以下的年輕人為主。 但這不表示程式師如同紅粉佳人般的容易衰老。 美國主力工程師以三十四十多歲的人為主。
開始的時候,我們覺得我們沒有什麼不能做的(現在還能聽到這樣的豪言壯語),而且更要命的是好象我們特別聰明,特別適合開發軟體,比老外強得多。
當我們真正接觸那些傑出的開發人員的時候,發現他們太厲害了,都有十多年的開發經驗。 雖然也有很多年輕人做了很多好東西,但決大多數的產品出自這些有豐富開發經驗的程式師的手。
剛畢業的時候,程式設計不僅僅是愛好,而且也成了一輩子的工作。 整天不知道寫些什麼東西,覺得特別沒勁,找不到感覺,特別灰心。
後來,才明白,只有全身心地投入,程式才會有感覺。
寫程式的活特別費腦子,也特別累,但我喜歡,可以肯定我會幹上一輩子,雖然我沒有打算一生只幹這一件事。 用一生來編程式是一件既容易又困難的事。
如果碌碌無為,為交差寫點程式,這樣的日子太好混了。 但如果想全身心地寫程式,寫十年就不是一件容易的事。
現在我不少朋友都洗手了,有時我也想“用什麼電腦呀,Windows 外的世界不是也很大嗎? ”。
面對電腦的時候,立刻頓悟:寫程式還是自己最擅長的事,也是最喜歡的事。
高級程式師不是追求的目標
有的人學習程式設計技術,是把高級程式師做為追求的目標,甚至是終身的奮鬥目標。 後來參與了真正的商品化軟體開發後,反而困惑了,茫然了。
一個人只要有韌性和靈性,有機會接觸並學習電腦的程式設計技術,就會成為一個不錯的程式師。 剛開始寫程式,這時候學得多的人寫的好,到了後來,大家都上了一個層次,誰寫的好只取決於這個人是否細心、有韌性、有靈性。 掌握多一點或少一點,很快就能補上。
成為一個高級程式師並不是件困難的事。
當我上學的時候,高級程式師也曾是我的目標,我希望我的技術能得到別人的承認。 後來發現無論多麼高級的程式師都沒用,關鍵是你是否能夠出想法出產品,你的勞動是否能被社會承認,能為社會創造財富。 成為高級程式員絕對不是追求的目標。
有人認為程式設計是一種熟練工種,也有人把程式設計說成是藝術創作。 這兩種意見爭論比較激烈。 我們換個工種來看,石匠應該是熟練工種,屬於工人,更和藝術似乎沾不上邊。 但正是這些石匠,給我們留下多少文物古跡,如樂山大佛、莫高窟等等。 應該說這些石匠給我們留下了無窮的文化財產。
現代軟體工業已具相當規模,很多軟體的完成需要的是大兵團作戰。 一名普通程式師接受編寫某一模組的任務后,往往只是寫代碼,發揮的餘地很小。
在大專案中,很多程式師只能瞭解到和自己所編模組相關的很局部的細節,另外還受到開發環境的限制,真的很難體會到自己在從事”藝術”創造,更多的時候是感到自己在從事重體力勞動。
有的時候還擔心自己苦苦參與的這個專案究竟有沒有意義,是不是在同類產品中有競爭力,會不會開發出來以後就因為硬體的發展,操作系統的換代而過時……
我認為程式設計的工作和石匠比較相似,有技術活,更多的是體力活。 不管怎麼說,寫出一個好軟體不是一件容易的事。
這兩種想法都有片面性,程式設計應該說兩種屬性都有。
程式設計不僅僅是技術,也還是藝術。
程式設計是技術活,才有可能大規模進行,才會有軟體工程和軟體工廠。
也正是程式設計是藝術,才會有如此多的好產品,讓大家如癡如醉。