他們管我們叫“碼農(nóng)”,我們管自己叫“程序員”,出差的時候被叫做“工程師”,我們到底是什么? 對于我自己,我只想告訴每個人,我不是一個程序員,I’m not coder。
程序員到底怎么了,我們當(dāng)然不否認(rèn)有很多出色的程序員,他們生活的好,賺的也多,可是畢竟大多數(shù)都還是一般水平,很多還是掙扎在基本滿足吃住的水平。特別深的問題,比如國家社會問題(總有人會說我們的社會把我們搞成了這個樣子),我這里不想談,我來結(jié)合自己的體會來講講我所認(rèn)識的一些程序員都在怎 樣工作和生活。
(@程序員的那些事 微博配圖)
我周圍的程序員大都不喜歡程序員這個行業(yè),總希望如果未來可能,一定要跳出這個圈,去做別的行業(yè),有的說去做銷售,有的說回老家開個小超市,有的說 的更是離譜。我不知道為什么他們都在這么說,原因在于我從未見過他們努力過,如果沒有努力過如何知道這個職業(yè)就是沒有前途的呢?工作的時候,他們大都在談 論社會問題,昨天看了什么電影,誰也買了個iPhone,她的爸爸給她在北京買了套房子等等無聊的問題,后來他們談?wù)撌裁次揖筒恢懒耍規(guī)狭硕鷻C(jī),暢 游在代碼的世界里,享受著原來100行完成的功能,經(jīng)過我重寫,只要50行就能運(yùn)行的比以前好,而且效率更高。第一個問題,程序員和其他行業(yè)一樣,最起碼需要一個態(tài)度。如果你連基本的態(tài)度都沒有,不要談程序員沒有前途,以為每個行業(yè)對這樣的人來說都沒有前途。
我做完一個功能,演示給我的同事看,然后告訴他我是怎么實(shí)現(xiàn)的,以及這樣做的好處是什么。他的一句話像一盆涼水一樣潑在我的臉上,“你費(fèi)這么大勁干 嘛啊,你不要想這么多,領(lǐng)導(dǎo)又看不見你是怎么設(shè)計的。”,“哦”。我很無語,也更不知道怎么答復(fù)他。聽完那句話我徹底明白程序員沒前途的原因了,和其他很 多行業(yè)相比,軟件不容易發(fā)現(xiàn)問題,也許你做個特效,讓一個東西蹦來蹦去反而得到領(lǐng)導(dǎo)的賞識,而你自己花費(fèi)了很多自己私有的時間來設(shè)計的結(jié)構(gòu)沒有人會采用, 因為你的領(lǐng)導(dǎo)要向他的領(lǐng)導(dǎo)交差,他也希望能拿的出一點(diǎn)能看得見的東西。很多程序員被這樣的領(lǐng)導(dǎo)強(qiáng)奸了,只做哪些表面工作來取悅領(lǐng)導(dǎo),2,3年過后,發(fā)現(xiàn)自 己什么都不會了。也就看不見前途了,做那點(diǎn)破東西,可以讓你得到一會兒的“賞識”,計算機(jī)是個技術(shù)活,需要技術(shù)和經(jīng)驗的積累。第二個問題,程序員的前途是程序員自己造就的,如果你覺得你現(xiàn)在沒有前途,那只能說明你做的不夠好。
計算機(jī)業(yè)界有很多好書,非常著名的書,比如《黑客與畫家》、《Unix編程藝術(shù)》,我不想說《算法導(dǎo)論》這種書,因為它確實(shí)枯燥無比,我自己也從未完整的看過一遍。但是像《黑客與畫家》 此類的書是不同的,它能打通你的思路,告訴你問題出在哪里,未來的方向在哪里。如果你想看看一個程序員的視野是否還算開闊,問問他是否聽說過某本書,聽說 過,那就還可以,說明自己懂點(diǎn)門道,如果讀過,那就太好了,可以問問關(guān)于書中的一些觀點(diǎn),這里沒有對或錯,完全是自己的觀點(diǎn)。我問過我身邊的同事,讀過這 些著作的人屈指可數(shù),而讀過的確實(shí)不一樣,眼界比較開闊,不回局限在非常狹小的范圍內(nèi),更不會跟你扯閑天。第三個問題,要多讀書,讀好書,而且不要只讀一遍。讀書應(yīng)該像高中老師說的那樣,從厚讀到薄,從薄讀到厚。
我去年認(rèn)識了一個朋友,這個人三句話離不開寫程序,我們吃午飯談程序,我們在電梯里談程序,只要我們在一起我們就討論如何實(shí)現(xiàn)某個系統(tǒng),如何然讓這 個系統(tǒng)運(yùn)行的更快,某個新技術(shù)的機(jī)制是怎樣的,在什么情況下采用是比較好的選擇。和他在一起待了3個月,我感覺自己的眼界比以前開闊了一倍。這三個月我感 覺每天都非常充實(shí),完全沒有了以前浪費(fèi)生命的感覺,因為感覺每天都在補(bǔ)充知識,懂的更多了,更有信心了。第四個問題,如果你是個程序員,你必須認(rèn)識一些在這個領(lǐng)域里比你強(qiáng)的人,并和他們交談,去開闊眼界,去了解未來是什么樣子的,哪怕只是聽他們說,都能有很多收獲。
公司來了個新同事,他還沒有畢業(yè),但是當(dāng)我跟他討論一些問題時,發(fā)現(xiàn)他知道的事情非常多,盡管技術(shù)不是非常好,但是他的方向很明確,而且基礎(chǔ)知識掌握的非常好,比如位操作(讀到這里的朋友,你能用你最熟悉的編程語言進(jìn) 行位操作嗎?)。有一次他遇到一個問題,我過去幫助他,偶然間發(fā)現(xiàn)他的一個文件夾,這個文件夾的名稱是Daily Reading,里面都是一個個按照日期分好的文件夾,從他來公司的那天起,一直都記得很好,我簡單的看了看,里面都是每天看了哪些網(wǎng)上的文章,以及他對 這些文章的一個總結(jié)。這種方式也許不是最好的方式,用一些軟件可能更好,比如evernote,但是不是不得不說的是,他把自己曾經(jīng)閱讀過的資源都整理起 來了。第五個問題,你每天都會遇到問題,每天都會在網(wǎng)上查資料,或者查書,但是否總結(jié)過這些問題呢?偨Y(jié),真的能讓人進(jìn)步。方式多種多樣,比如寫博客。
老板總說我沒有計劃,我也不懂的如何計劃,老板說很簡單,不需要太復(fù)雜,只需要一個excel文件,早晨來了以后,想想昨天的工作完成的什么樣,今 天要做哪些工作,然后添進(jìn)excel,把所有任務(wù)的背景色設(shè)置成紅色的,代表未完成;下班的時候,完成的,背景色換成綠色的。第二天接著這樣做。我跟一個 朋友說了這個方法,這個朋友立馬要我把這個excel的模板給他,我頓時無語了,然后告訴他,沒有模板。第六個問題,學(xué)會計劃和安排。不需要太復(fù)雜,先從簡單的開始,但是不要把自己局限死,再強(qiáng)大人都需要安排和計劃,你應(yīng)該聽說過bug管理系統(tǒng),它本身就是一種計劃與安排工具,但是它更高級,你可以隨時知道軟件的bug。當(dāng)你每時每刻知道自己需要做什么的時候,你的效率會是最高的。
做到這幾點(diǎn),我相信你就是一個比較合格的程序員了,記住,也只是合格而已。程序員不是沒有前途,而是很多程序員葬送了自己的前途。