一、關于編程
相信有很多人和我一樣在今年走上了工作崗位,和其他的畢業生不一樣,我們成了程序員,這個注定了要和別人不一樣的職業,一個意味著加班、寂寞、不斷學習、時刻變化的職業。通過這幾個月的工作,我感覺到了從前和現在的不同,這些不同促使我想寫點什么。
最大的不同是現在的編程和從前在學校里的編程不同了。那時候一個程序代碼頂多幾百行(恐怕很多人還達不到),主要是為了應付老師的作業。為了能夠趕快向老師交差,代碼大多上來就直奔主題,沒有出錯檢查和健壯性保證的代碼。所以一個程序很可能只能輸入數字,輸入字母就會崩潰。由于那些小程序都只是一些練習,而且很小,所以我們就可以把它交給老師就算完,不去考慮后面的改進和維護。那時候不會去寫文檔(不知道實驗報告算不算),為了顯得自己很牛,連代碼的注釋也很少些。其結果就是,過了一段時間自己寫的代碼自己都看不懂了。
現在不一樣了,寫出來的東西會變成商品,商品就要有市場,沒有人買就會變成垃圾,所以我改變了,盡管這種改變是很辛苦的。現在寫的代碼里處理錯誤的代碼甚至要比完成正常功能的多,因為要保證健壯性;變量的命名要符合規范,注釋要盡可能的詳細,因為現在代碼是公司的,會有很多人來維護它;復雜和讓人難以理解的所謂“經典算法”已經不被提倡了,因為可讀性使然(某些嵌入式系統可能例外)。其實,當初如果多在學校里參與一些項目,或者自己承接一些軟件模塊的編寫工作,這種改變就會不是那么難了。
韓日世界杯剛結束,高考的題目也出來了,大家都在講規則,規則成了現在熱門的話題。其實從學生到程序員的轉變何嘗不是這樣?從普通學生向程序員的轉化過程就是一個適應不同規則的過程。你也可以把這種適應規則稱之為格式化。
在學校里就要遵守學校的規則,那時候我是以考試不被斃為中心的。不追求高分是因為我不想把有限的經歷浪費到無聊的試題中去,但是又必須讓自己的成績〉=60,否則……大家都知道吧。不可否認,學校教育為我建立了走向軟件開發之路的基礎,但是存在很多的問題,它太不適應現在社會中的真實的軟件開發過程了(關于這個話題要說的可就多了)。還好,我的老師對這批學生進行了一些有益的嘗試性的教學。他嚴格的按照軟件工程的方法指導我們完成了一個比較大的項目,讓我對軟件工程有了比較深的理解,而不僅僅是狂背概念然后抄在試卷上。這也使我被格式化的過程變得不是那么的痛苦。那些從小被應試教育打造出來的同學就會很麻煩,他們可以在考試中得到高的令人咋舌的分數,但是卻沒有分析問題、解決問題和計劃過程的能力。到了公司里,規則變了。公司的中心是盈利,對他來說,使用什么技術并不重要,重要的是能夠利用已有的技術在規定的時間內完成規定的任務,然后拿到錢,否則死亡。這里的規則不鼓勵你去廣泛的采用最新的技術,因為它不穩定;這里的規則要求你的代碼規范化,因為這樣的代碼才符合“工廠標準”,你跑了自然會有人來代替你;這里的規則也同樣給我帶來了壓力,程序開發的過程在項目進度的壓力變得不再有樂趣。我現在還清楚地記得主管在項目會上說的話“大家都要加把勁,否則別說工資,我們大家都要走人!”這就像足球場上的中心是進球一樣,無論你踢得有多么漂亮多么流暢多么具有觀賞性,進不了球一樣滾蛋。大家都說德國人機械化的足球太難看,可是他進了四強你行么?我們必須努力去適應這個行業,物競天擇,哪個畢業生都一樣。
二、關于學習
上了這么多年學了,如果還說不會學習,那就有點搞笑了。學習的方法每個人的不一樣,各有千秋吧。有一點我不得不承認,在學校里的學習和成為程序員后的學習很不一樣。
學校教育是基礎教育,目的是建立軟件開發的最基礎的概念。過程不外乎聽課—做筆記—寫作業,然后就是狂背老師畫出來的那些所謂知識點,最后參加考試。當然還有另一條路:上課睡覺,下課后泡美眉/打牌/踢球,考試前粘著老師套題,外加小條,最后參加考試,考完后登門拜訪。我比較笨,又沒有錢,所以屬于前者。這樣被訓練出來的我好象很多的概念都很清楚,可是如果讓我把他們運用到實踐中去,那我就傻眼了,而且很容易就會把這些概念丟在風里。這是我在大三的時候的真實狀況。感謝motorola提供的實習機會,感謝《軟件工程》老師給我的實踐機會(盡管他已經不再是教師了),感謝學校的科技立項經費,我的大四總算沒有被荒廢,我被初步地改造了。被動學習慢慢地向主動學習轉變。
到了公司就發現了自己的不足是巨大的。以java為例,在學校里我就知道rmi是遠程方法調用,可是到了這里你就必須要用它來寫程序了。學習就變成了自然而然的事情。這里的學習方式與學校有很大的不同。還是以rmi為例,我先到書店去買關于rmi的書籍,如果你能站著看幾個小時并且記憶力好并且不怕店員白眼的話,你就可以省了這筆錢了。這個過程里我對rmi有了基礎的知識。然后開始在網上到處搜索關于rmi的文章,那些文章里有很多的技巧性的東西。最后自己編碼實踐,通不過就上各大技術論壇去發“救救我,我的……”之類的求救貼,呵呵,我發現現在這樣的貼子不少哦,可能和擴招有關系。現在才對某些網友說的“網絡上最先實現共產主義”的言論有了深刻理解。
程序員是個注定了要擁抱變化的職業,不斷的學習是我們立足的根本。看著那些機械系的學弟還抱著78年定稿的課本,我覺得有點好笑,那一年我才剛剛出世,我現在算是上了賊船了。
三、關于非計算機專業
我是計算機專業的學生,也就是別人說的所謂“科班出生”吧。在上學的時候就接觸過很多非本專業的同學,因為共同的愛好成了好朋友。他們喜歡計算機,絕大部分畢業后也做了和計算機相關的工作,所以我一直認為,其實爭論科班不科班的沒有多大的意義,關鍵在你的態度,你愛不愛軟件開發這個職業。
說白了,計算機就是工具,如果你沒有某一方面的專業知識,這工具也不會用得太好。不懂財務的軟件設計人員永遠也設計不出好的財務軟件,不懂化工的軟件設計人員永遠也設計不出好的化學分析軟件,沒有美術基礎,你的繪圖軟件也不會好到哪里去。從這個意義上說,我其實挺羨慕非計算機專業的同學的,他們比我多了一項技能。
目前和計算機專業課程交叉比較大的專業是電子、自動化,我從來不敢在這些專業的學生面前吹噓自己的那點專業知識,也沒有把他們當作外系的,他們可是畢業時很強悍的競爭對手。我還有一個好朋友,他對操作系統很感興趣,對市面上能夠搞得到的操作系統都非常熟悉(solarise這個東東還是當年他告訴我的),他的機器裝了好幾塊硬盤,有8、9種操作系統。你們猜他是哪個專業的?------機械工程。最后畢業時,他憑借對電腦軟硬件的熟悉去了一個專門搞小型機的單位,現在還在向我大談ibm370的好處。
如果非要說非計算機專業的學生變成程序員的過程和我們這些人有什么不同的話,我感覺最大的不同在一門課上,這就是《數據結構》。這門課可能是對編程影響最大的一門課了,而且非計算機專業幾乎不會開。大家都會寫代碼,可是學過這門課的學生(我說的是認真學習并且理解)和沒有學過的學生編出來的代碼絕對是不一樣的。如果你沒有學過,和我的看法相左,我不想無謂地爭論,你可以去看一看再說話。
專業并不重要,關鍵在你的態度,你愛不愛軟件開發這個職業。
四、關于未來
你有沒有在瘋狂加班的夜里感覺到編程的枯燥?
你有沒有陷入過無窮無盡的錯誤里,感覺到產品發布的遙遙無期?
你有沒有對層出不窮的新技術感到眼花繚亂,無所適從?
你有沒有發現自己的身體好像越來越差,爬幾層樓都氣喘吁吁?
你有沒有發現自己越來越依賴電腦,生活圈子越來越小,連女朋友都要從網上找?
你有沒有考慮過自己的未來?
這些我都有,盡管我才工作了四個多月。我承認,我不想永遠做一個程序員,我向往自由和有創造性的生活方式,我不想當代碼工人。可是我的未來在哪里呢?
我在彷徨和思索著。小時候,我的理想是成為一個偉大的科學家,建造飛船探索宇宙。再大一點,想當一個軍人征戰沙場,成為英雄。初中畢業才發現原來錢是那么重要的,于是就想,以后一定要做一個富甲天下的有錢人,至于怎么掙錢還沒有想過。沒想到那時候就那么俗。上了大學后,我不像人家那樣意氣風發妄圖改造世界,我覺得以后有房有車有個愛自己的人就足夠了。我的未來在貶值。現在呢?北京的房價那么高、汽車那么貴、女孩又那么地挑剔,連這都有問題了。這時候的心情就像鄭智化的那首老歌《中產階級》里的歌詞一樣。 這種迷茫期可能每一個人都有,不僅僅是程序員。幸運的是,我的迷茫期已經結束了。我熱愛軟件開發這個行業,可是中國現在的軟件行業水平不高,不是因為中國沒有好的程序員,而是好的程序員沒有被有效地組織起來。我希望成為這樣的組織者。盡管我還是個毛頭小子,盡管我還沒有經驗,盡管我還很笨。可是我有我的資本,我年輕,我不怕失敗。 我的未來有點模糊,可現在腳下的路很清楚。不想高喊什么豪言壯語,我只要把現在的事情做好。繼續寫代碼積累經驗,提高自己的水平,畢竟這是自己的本行;注意行業內外的動向,不僅僅是一個人埋頭苦干;不斷學習,并嘗試著用別的東西來檢驗自己的能力(比如物美價廉的國家軟件水平考試,我報了系統分析員);畫畫,玩模型,看電影,繼續做我喜歡的事,畢竟編程不是生活的全部;堅持鍛煉身體,身體好能做很多事的,不用我多說了吧,各位單身的程序員哥哥們?!呵呵。
-
工程師
+關注
關注
59文章
1570瀏覽量
68516 -
編程
+關注
關注
88文章
3615瀏覽量
93719
發布評論請先 登錄
相關推薦
評論