4年前的今天恰巧是我第踏入企業(yè)成為一名職業(yè)程序員的日子。短短的4年在很多前輩面前還是“小朋友”的檔次,但自覺對軟件開發(fā)這個行當還是有了一些自己的理解和感悟,在這里很想和大家分享。其中難免有主觀的感受,歡迎有不同的意見。
程序員這個行當究竟有沒有前(錢)途,是不是一個吃青春飯的行當?這個問題我無數(shù)次的在不同的場合聽到和看到人們談起過。我認為這要看你怎么理解“程序員”這個稱謂的含義。我的定義就是從事第一線的軟件設(shè)計和開發(fā)的人員,無論你是為一家企業(yè)服務(wù)還是自己干私活,抑或是純屬愛好的自由軟件作者,你都可以被冠以這樣的稱謂。對于更嚴厲一些的資深人士而言,只有技能達到一定程度后才有資格被冠以“程序員”的稱謂,這有時候讓我想起中世紀歐洲的騎士稱號,不僅僅要諸多條件還要看出身的。當然現(xiàn)代的程序員稱號并不是那么崇高,但也不卑微,軟件從業(yè)者是360行中的普通一行而已。有那么多的程序員,可水平高下相差很多,有很多文章以各種標準對程序員的檔次分類,我就不多說了。就好像搞籃球的,你說有沒有前(錢)途呢,很顯然你只是上過少體校,出來在社區(qū)少年隊里當個教練,看不出太大前途;你能進入省級隊打CBA聯(lián)賽了,前途好很多了;后你達到去NBA的要求了,那世人皆知前(錢)途遠大了。那么程序員這個行當還不是一樣嗎?它和任何行業(yè)一樣都是金字塔型,處在底端的總是有種岌岌可危的感覺。對于真正對這一行有興趣并有志于此的人,要做的是扎實地提高自己的水平,擺脫底端的危機感。
也許很多人會說,在目前的中國沒有軟件業(yè)的NBA,很多企業(yè)無法保障程序員基本的生活必需,使得從業(yè)人員無法安心提高自己的水平。并且很多企業(yè)從事的開發(fā)是技術(shù)含量較低的重復(fù)性開發(fā),干得只是苦力,無法在工作中提高。這話說得沒錯,這也是為什么很多程序員向往去外企工作的原因,在那里提供了相對寬松的環(huán)境,以利于程序員持續(xù)提高自己。而在現(xiàn)在這樣的相對惡劣的大環(huán)境下,個人究竟怎樣選擇?如果堅持選擇了這一行又如何提高呢?
1,追尋內(nèi)心真實的想法,如果你是高考“不幸”踏入了這個不感興趣的專業(yè),現(xiàn)在為了對得起大學(xué)的學(xué)費來做這個行業(yè),那還是勸你想清楚,別到頭來對不起自己。如果你是聽說做軟件賺錢多,那也許你沒聽全,是水平到一定程度才會賺錢多。也許你認為學(xué)軟件開發(fā)好像比學(xué)電機,機械啥的簡單又沒危險,只要一臺電腦,不用擔心高壓電,也不必整天滿手機油。總之你好確認你是喜歡這種為只有軀殼的硬件設(shè)計靈魂的工作,你才應(yīng)該選擇它。
2,有了興趣,你自然會明白去探尋軟件技術(shù)的本質(zhì)。就好像小時候第得到一塊電子手表,迫不及待想拆開看里面的構(gòu)造那樣。軟件技術(shù)的本質(zhì)分布在大學(xué)時那些不太受歡迎的基礎(chǔ)課上,諸如:微機原理,操作系統(tǒng),編譯原理,數(shù)據(jù)結(jié)構(gòu)。更遠一些的可以追述到你中學(xué)時代學(xué)過的那些數(shù)學(xué),主要是邏輯證明。如果在你現(xiàn)在的工作上還看不出這些基礎(chǔ)知識的作用,甚至之前也從沒體會到過,那一種可能是你還在底端掙扎,不得其門而入,另一種可能是你已經(jīng)告別了程序員的生涯,雖然你從未成為過真正的程序員。
3,找一個人作為目標,努力去達到和超過他。在我剛?cè)胄袝r,一位從西安過來給我們培訓(xùn)的工程師,當時已經(jīng)有了7,8年經(jīng)驗,我們財務(wù)告訴我他的月收入有2萬多。在當時的我看來還是很有震動的。在我當時簡單的概念里,我想在我能達到他的技術(shù)和收入水平之前,我沒有理由說遇到什么玻璃天花板,也不應(yīng)該退出。我到底要看看,在這一行能做到什么程度。到現(xiàn)在,我雖然在這兩方面依舊沒有超過這個目標,但我確實也沒有看到有什么攔在我的頭上阻止我繼續(xù)發(fā)展,我依舊看到廣闊的天空。
4,找一個志同道合的伙伴。一個人的探索常常是寂寞的,有時候也比較低效。能夠和一個或幾個水平相近的同事經(jīng)常交流是提高的方法之一?,F(xiàn)在有些人的工作常常是單獨埋頭開發(fā),因為種種原因,并沒有合適的人可以交流,我很能理解這樣的處境。我的建議是盡早離開這樣的工作,到一個有更多開發(fā)人員的公司去。然后學(xué)會有效的從別人那兒學(xué)習(xí)。
5,常常思考你所學(xué)習(xí)的技術(shù)的用處。軟件技術(shù)只有終服務(wù)于人才有它的價值。很多人在爭論哪種編成語言更流行的時候,其實更應(yīng)該思考的是怎樣的軟件應(yīng)用可以為用戶、為客戶、為公司、為老板,為自己創(chuàng)造價值。
6,學(xué)會表達的技巧。程序員大都是偏內(nèi)向的性格,又整天和電腦打交道,有的程序員會覺得自己越來越呆板和不擅交流。程序員也是一個完整的人,需要交流,需要向同事,老板和客戶表達自己的思想。有人覺得學(xué)習(xí)溝通技巧是為了轉(zhuǎn)做銷售或者管理,這根本不對,一個好的程序員既然可以以漂亮的代碼表達自己的設(shè)計理念,就可以寫漂亮的報告,做漂亮的presentation。你應(yīng)該有自信把自己的工作成果,以合適的不讓人反感的方式讓每一個同事和你老板知道。
國內(nèi)的軟件從業(yè)環(huán)境正在不斷地改善,很多報紙上寫未來幾年對軟件人才的需求有多少多少,雖然我不必相信這些數(shù)字,但是中國軟件行業(yè)對高層次軟件人才的需求是實實在在得不斷的增加著。而那些高級人才正是從現(xiàn)在千千萬萬的初級程序員中涌現(xiàn)的。這里我想到另一個也許是成為那么多人選擇這一行的理由:程序員在中國被認為是相對公平的職業(yè),可以以自身的能力,而非出生,來實現(xiàn)自我價值。既然這樣,不要再怨天尤人,找到自己的目標,堅定地朝它邁進,哪怕后實現(xiàn)得不是全部,但沿途一定會順便采摘到豐盛的成果。
程序員這個行當究竟有沒有前(錢)途,是不是一個吃青春飯的行當?這個問題我無數(shù)次的在不同的場合聽到和看到人們談起過。我認為這要看你怎么理解“程序員”這個稱謂的含義。我的定義就是從事第一線的軟件設(shè)計和開發(fā)的人員,無論你是為一家企業(yè)服務(wù)還是自己干私活,抑或是純屬愛好的自由軟件作者,你都可以被冠以這樣的稱謂。對于更嚴厲一些的資深人士而言,只有技能達到一定程度后才有資格被冠以“程序員”的稱謂,這有時候讓我想起中世紀歐洲的騎士稱號,不僅僅要諸多條件還要看出身的。當然現(xiàn)代的程序員稱號并不是那么崇高,但也不卑微,軟件從業(yè)者是360行中的普通一行而已。有那么多的程序員,可水平高下相差很多,有很多文章以各種標準對程序員的檔次分類,我就不多說了。就好像搞籃球的,你說有沒有前(錢)途呢,很顯然你只是上過少體校,出來在社區(qū)少年隊里當個教練,看不出太大前途;你能進入省級隊打CBA聯(lián)賽了,前途好很多了;后你達到去NBA的要求了,那世人皆知前(錢)途遠大了。那么程序員這個行當還不是一樣嗎?它和任何行業(yè)一樣都是金字塔型,處在底端的總是有種岌岌可危的感覺。對于真正對這一行有興趣并有志于此的人,要做的是扎實地提高自己的水平,擺脫底端的危機感。
也許很多人會說,在目前的中國沒有軟件業(yè)的NBA,很多企業(yè)無法保障程序員基本的生活必需,使得從業(yè)人員無法安心提高自己的水平。并且很多企業(yè)從事的開發(fā)是技術(shù)含量較低的重復(fù)性開發(fā),干得只是苦力,無法在工作中提高。這話說得沒錯,這也是為什么很多程序員向往去外企工作的原因,在那里提供了相對寬松的環(huán)境,以利于程序員持續(xù)提高自己。而在現(xiàn)在這樣的相對惡劣的大環(huán)境下,個人究竟怎樣選擇?如果堅持選擇了這一行又如何提高呢?
1,追尋內(nèi)心真實的想法,如果你是高考“不幸”踏入了這個不感興趣的專業(yè),現(xiàn)在為了對得起大學(xué)的學(xué)費來做這個行業(yè),那還是勸你想清楚,別到頭來對不起自己。如果你是聽說做軟件賺錢多,那也許你沒聽全,是水平到一定程度才會賺錢多。也許你認為學(xué)軟件開發(fā)好像比學(xué)電機,機械啥的簡單又沒危險,只要一臺電腦,不用擔心高壓電,也不必整天滿手機油。總之你好確認你是喜歡這種為只有軀殼的硬件設(shè)計靈魂的工作,你才應(yīng)該選擇它。
2,有了興趣,你自然會明白去探尋軟件技術(shù)的本質(zhì)。就好像小時候第得到一塊電子手表,迫不及待想拆開看里面的構(gòu)造那樣。軟件技術(shù)的本質(zhì)分布在大學(xué)時那些不太受歡迎的基礎(chǔ)課上,諸如:微機原理,操作系統(tǒng),編譯原理,數(shù)據(jù)結(jié)構(gòu)。更遠一些的可以追述到你中學(xué)時代學(xué)過的那些數(shù)學(xué),主要是邏輯證明。如果在你現(xiàn)在的工作上還看不出這些基礎(chǔ)知識的作用,甚至之前也從沒體會到過,那一種可能是你還在底端掙扎,不得其門而入,另一種可能是你已經(jīng)告別了程序員的生涯,雖然你從未成為過真正的程序員。
3,找一個人作為目標,努力去達到和超過他。在我剛?cè)胄袝r,一位從西安過來給我們培訓(xùn)的工程師,當時已經(jīng)有了7,8年經(jīng)驗,我們財務(wù)告訴我他的月收入有2萬多。在當時的我看來還是很有震動的。在我當時簡單的概念里,我想在我能達到他的技術(shù)和收入水平之前,我沒有理由說遇到什么玻璃天花板,也不應(yīng)該退出。我到底要看看,在這一行能做到什么程度。到現(xiàn)在,我雖然在這兩方面依舊沒有超過這個目標,但我確實也沒有看到有什么攔在我的頭上阻止我繼續(xù)發(fā)展,我依舊看到廣闊的天空。
4,找一個志同道合的伙伴。一個人的探索常常是寂寞的,有時候也比較低效。能夠和一個或幾個水平相近的同事經(jīng)常交流是提高的方法之一?,F(xiàn)在有些人的工作常常是單獨埋頭開發(fā),因為種種原因,并沒有合適的人可以交流,我很能理解這樣的處境。我的建議是盡早離開這樣的工作,到一個有更多開發(fā)人員的公司去。然后學(xué)會有效的從別人那兒學(xué)習(xí)。
5,常常思考你所學(xué)習(xí)的技術(shù)的用處。軟件技術(shù)只有終服務(wù)于人才有它的價值。很多人在爭論哪種編成語言更流行的時候,其實更應(yīng)該思考的是怎樣的軟件應(yīng)用可以為用戶、為客戶、為公司、為老板,為自己創(chuàng)造價值。
6,學(xué)會表達的技巧。程序員大都是偏內(nèi)向的性格,又整天和電腦打交道,有的程序員會覺得自己越來越呆板和不擅交流。程序員也是一個完整的人,需要交流,需要向同事,老板和客戶表達自己的思想。有人覺得學(xué)習(xí)溝通技巧是為了轉(zhuǎn)做銷售或者管理,這根本不對,一個好的程序員既然可以以漂亮的代碼表達自己的設(shè)計理念,就可以寫漂亮的報告,做漂亮的presentation。你應(yīng)該有自信把自己的工作成果,以合適的不讓人反感的方式讓每一個同事和你老板知道。
國內(nèi)的軟件從業(yè)環(huán)境正在不斷地改善,很多報紙上寫未來幾年對軟件人才的需求有多少多少,雖然我不必相信這些數(shù)字,但是中國軟件行業(yè)對高層次軟件人才的需求是實實在在得不斷的增加著。而那些高級人才正是從現(xiàn)在千千萬萬的初級程序員中涌現(xiàn)的。這里我想到另一個也許是成為那么多人選擇這一行的理由:程序員在中國被認為是相對公平的職業(yè),可以以自身的能力,而非出生,來實現(xiàn)自我價值。既然這樣,不要再怨天尤人,找到自己的目標,堅定地朝它邁進,哪怕后實現(xiàn)得不是全部,但沿途一定會順便采摘到豐盛的成果。

