前言,
一晃,做了五年多的程序員了,感覺自己應(yīng)該是程序員大軍中比較典型的一個,班科生畢業(yè),直接加入了軟件開發(fā)的行列,先是小公司,然后大公司,走了一條典型的程序員的路線。
雖然我不是大牛,但是感覺在我這樣普通程序員身上所能得出的一些結(jié)論可能更加適合廣大的程序員兄弟們,讓我們在程序開發(fā)的路上,共勉。
話說,五年前,我是一只小小鳥,一頭扎進(jìn)了dot Net開發(fā)的叢林,沒能變成獵手,卻險些變成了獵槍下的亡魂。..
回首往事,曾經(jīng)有過太多的經(jīng)驗和教訓(xùn),現(xiàn)總結(jié)如下:
一、要想飛的更高,我需要一雙有力的翅膀。..
一雙有力的翅膀,是飛行的最基本的支撐和前提。
那什么是程序開發(fā)的最基本的支撐呢,個人感覺是構(gòu)建一個完整的關(guān)于開發(fā)的知識體系和程序員應(yīng)該具備的最基本能力。
1. 知識體系
知識體系無非就是支撐你軟件開發(fā)的那些最基本知識,也可以說是技術(shù)的路線圖。
例如你可以參考園子里的大牛Anytao的路線圖,應(yīng)該會有一些體會。
清楚自己的知識體系的好處是可以時刻提醒自己在哪些方向上有所欠缺,在哪些方向上有相應(yīng)的優(yōu)勢,并且更容易對自己的技能有個良好的把握。
關(guān)于這方面的東西就不多說了,下面說幾個構(gòu)建知識體系時的個人心得。
1.分清楚知識的核心和擴展
每項知識都有其核心價值與相應(yīng)的擴展體系。
核心價值決定了技術(shù)的應(yīng)用方向,而擴展體系決定了技術(shù)的外在表現(xiàn)。個人的意見是抓核心,適當(dāng)?shù)姆艞壞承U展,比如asp.net你更應(yīng)該了解頁面周期而不是某些控件的具體使用。
了解了核心價值有助于我們對某樣技術(shù)有深刻的理解。
拿語言舉例,如果將語言分為命令式和函數(shù)式,那么我們就應(yīng)該知道命令式語言的核心本質(zhì)就是通過操作指令去改變內(nèi)存中的數(shù)據(jù),而函數(shù)式語言的核心就是通過不斷的函數(shù)求值以得到結(jié)果。
明確了這些核心對于我們對語言的了解有顯著的作用,我們也就明白了為什么匯編語言的指令一般都是 “mov ax,1”這樣的語句。
BTW:對于一個dot net程序員而言,如果不理解framework,不了解framework的構(gòu)成,不了解一些基本的概念,比如”CLR,CTS,GAC“之類的東西,很難想象這樣的人會是一個成功的dot net程序員。
記得有一次和一個同事聊天,我說如果沒看過《Microsoft .NET框架程序設(shè)計》這本書,我就不確定你對于dot net能有深入的了解。
其實我的本意是想說,《Microsoft .NET框架程序設(shè)計》這本書,會在某種程度上極大的幫助你構(gòu)建dot net framework的知識體系,這本書好就好在不是講c#或者vb這些語言,而是講framework這個框架。當(dāng)然,不看這本書你也能打造一個良好的framework的知識體系,只是相對來說要麻煩一些,沒有這本書這樣的系統(tǒng)。
2.通過內(nèi)聯(lián)和外延梳理自己的知識體系
技術(shù)與技術(shù)之間都有著相應(yīng)的聯(lián)系,通過互相對比我們能夠清晰的加深對技術(shù)的理解。
比如WPF和HTML都是通過markup的方式構(gòu)建界面,再比如WebService和Remoting都是通信方式,只是具體的方式和信道不同。
再比如Flex和SilverLight的區(qū)別和差異。
甚至你可以通過對比Java和C#兩種語言來看語言設(shè)計上的一些異同,比如java為什么默認(rèn)的就是虛函數(shù),而C#默認(rèn)的不是,通過這些對比,你更容易發(fā)現(xiàn)這兩種語言設(shè)計時的思路。
3.審慎的對待IT技術(shù)的走向和潮流
軟件開發(fā)是個不斷更新的職業(yè),其新技術(shù)更新之快遠(yuǎn)超傳統(tǒng)行業(yè),也經(jīng)??吹胶芏嗳吮г辜夹g(shù)更新過快沒有時間學(xué)習(xí)之類的,其實在我個人看來,新技術(shù)的到來遠(yuǎn)沒有那么可怕。
當(dāng)你有完整的技術(shù)體系,明確其中各種技術(shù)的聯(lián)系,你會發(fā)現(xiàn)你對于新技術(shù)會有更明確的定位與預(yù)判。
舉個例子,微軟出了個新技術(shù)WPF,那么,它是干什么用的呢,一種通過標(biāo)簽描述windows界面的表示技術(shù),這時你自然就會想起Windows Client,想起HTML,在比較它們之間的異同,你就會很清晰的明確WPF這種技術(shù)所適用的場合和大概的優(yōu)缺點,那么到了這個時候你會發(fā)現(xiàn),你缺少的就完全是對于WPF的熟練度和技巧了。
2. 程序員的基本能力
什么是程序員應(yīng)該具備的基本能力呢,下面是我的總結(jié):(這個問題肯定每個人都有自己的看法,下面只是我個人的總結(jié))
對編程語言的掌握能力
一個良好的程序員肯定要熟悉一種或幾種編程語言,同時對各種主流編程語言有一定的了解。
操作文本的能力
最基本的能力之一。
操縱shell的能力
這是證明你是一個程序員而不是一個普通人的最簡單辦法了,你看過一般電腦的操縱者會玩shell嗎?
更何況shell在某些場景下能給我們巨大的幫助。
操縱IDE的能力
IDE類似于戰(zhàn)士手里的槍,玩不好槍你當(dāng)什么戰(zhàn)士?
單元測試的能力
太多的程序員不在乎單元測試了,要知道這是證明你的工作成果是正確的唯一方式,我想,有這一條就足夠說明單元測試的重要性了。
文檔的能力
有人很不在乎這個,其實,想說的是,有很多時候文檔是體現(xiàn)你價值的最重要的工具。不理解?想想你的項目經(jīng)理們是不是都能做出非常漂亮的ppt,你就知道差距了。還不明白,文檔可是交付物之一,也就是產(chǎn)品中的一部分,想想你買個漂亮的家用電器,卻又一個非常丑陋的包裝的情景,你就應(yīng)該明白了。
二、要想飛的更遠(yuǎn),我需要混入一個團隊。..
大雁是我知道遷徙類中飛的最牛b的鳥類了,因為它們總是能在天空中排成美麗的S形,美麗的B形。..:) 我相信在這樣的團隊中,你只要混進(jìn)去,也就可以很容易的排成那些美麗的形狀。
其實這里的團隊不是通俗意義上的團隊,而是圈子的概念,程序員也有程序員的圈子,積極的融入這些圈子,總會有一些好處。
舉個例子,在去年,我想換工作的時候,就得到了園子里面”Nick Wang“和“Lbq”的極大幫助,其實我和他們素未相識,但是不得不說程序員真的是很熱心,很純潔的一幫人,有這樣的一幫人作為同職業(yè)者,對于我們每個人來說,都是一種幸運。
人都是群居動物,社交對于每個人都非常的重要,ok,下面說說我對圈子的一些小看法。
1.在廣義的圈子里
所謂的廣義的圈子,指的是相對而言一個比較大的范圍,可以是網(wǎng)絡(luò),或者一個郵件group。
有一個很重要的事情就是在這樣的一個圈子里,不要做一個只得到不分享的人。
如果你只獲取不分享至少有兩個壞處,
第一 就是你不能收獲最大,這點我深有感觸,我加入博客園是05年,貌似屬于比較早的了,可是最開始的時候感覺自己很是幼稚,不敢分享自己的觀點和體會,于是直到07年我才敢發(fā)自己的第一篇隨筆,如果早早分享的話,我想我會有更大的提高。
第二 對于任意一個組織,當(dāng)獲取超過分享的時候,這個組織也將會走向滅亡了。
2.在狹義的圈子里
這個很簡單,就是你工作的城市,你工作的公司,如果你想在一個城市里面混,程序員的圈子說大很大,說小其實也很小,如何讓這個圈子里的人認(rèn)可你的能力,是很重要的。
記得有個前同事問我說他將來會不會失業(yè),我當(dāng)時就告訴他,以他的能力,他不可能失業(yè),但是以他的人際圈子,他很有可能混不“上”去,因為他的圈子太窄了,如果不能在現(xiàn)在的公司得到認(rèn)可,他很可能連去其它公司展示自己能力的機會都沒有。..
是不是很現(xiàn)實,但是社會往往就是這樣現(xiàn)實,想想吧,如果你想去某個公司,里面有個了解你能力的人,賞識你能力的人對你會有怎樣的幫助。
三、我該朝哪個方向飛,當(dāng)我們面對選擇。..
對技術(shù)迷茫過?動搖過?很正常,每個人都有過這樣的困惑,審慎的對待自己的性格、能力,并作出合理的選擇是我們這代人需要面對的問題之一,我們沒有可以參考的目標(biāo)(對于軟件行業(yè)而言,在國內(nèi)從無到有也才那么10幾年時間,自然沒有什么參考對象),也不像我們的父輩一樣無法選擇,展現(xiàn)在我們面前的是一條更加寬廣的路,也是一條充滿了荊棘的路,所以,選擇也就更加的重要了。
我不知道別人是如何選擇的,說下自己的心路歷程吧,在04年的時候我做出了第一次選擇,
一,選擇.net,其實當(dāng)時的原因很簡單,只是因為看“Microsoft .NET框架程序設(shè)計”時的一句話,微軟為未來的10年準(zhǔn)備了Dot Net,你呢?當(dāng)時被這句話深深的打動,于是毅然決然的選擇了.net。
二,沒有選擇日本外包,而是選擇了當(dāng)時在大連還是才起步的歐美外包,選擇的理由也很簡單,英語永遠(yuǎn)比日語說的人多,在外包一個這樣語言至上的行業(yè)里,學(xué)習(xí)英語遠(yuǎn)比日語來的劃算。
到現(xiàn)在,雖然沒有證明當(dāng)年的選擇是正確的,但是既然是自己選擇的,那么就想一直堅持走下去。
第二次選擇是在08年,從一個小企業(yè)到了一個大企業(yè),雖然對當(dāng)時的團隊也很是不舍,但是我卻知道,按照自己的性格,既然不能走向管理,那么只能走向一個大的團隊,這樣才能保證自己的職業(yè)生涯更穩(wěn)固。
如今,即將面臨第三次選擇,一個正規(guī)化、專業(yè)化的開發(fā)團隊,這樣才能讓自己在職業(yè)的道路上走的更遠(yuǎn)。
最后想說的是,人生,無時無刻不在選擇著,其實選擇不重要,重要的是做出選擇之后按照自己的選擇并堅持走下去。
四、一些額外的東西
1外語能力
作為程序員,沒有出色的英語永遠(yuǎn)是二流的角色,沒辦法,人就要適應(yīng)環(huán)境,而最先進(jìn)的代表生產(chǎn)力的東西貌似現(xiàn)在很多都是E文的,既然沒的選擇,那就學(xué)唄。
2管理能力
在程序員中,感覺想走管理路線的人應(yīng)該占大部分,那么儲備一點管理的知識吧,機會永遠(yuǎn)垂青那些有準(zhǔn)備的人。
還想說句話,其實不是每個人都適合管理的角色,自己也曾經(jīng)參與過一定的管理工作,但是感覺性格上很不適應(yīng),于是放棄,依然選擇在技術(shù)上起伏,某些時候放棄更重要。
3突出重圍
不想泯然眾人,不想永遠(yuǎn)做人后之人?看看xiaotie的這篇文章《突出重圍》,個人感覺很精彩。
最后,
程序員不過是三百六十行中的一行罷了(算不算在三百六十行中我還不知道),無非就是一種職業(yè),它不比其它職業(yè)來的高貴,也不比其它職業(yè)來的低賤,無非是你獲取報酬用來支持你生活的一種方式。
如果你真心的熱愛這個行業(yè),那么就持之以恒的在程序開發(fā)這條路上走下去吧,其實無論你選擇了哪個行業(yè),只要堅定不移的走下去,總會找到屬于自己的那片天空!
-
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29809
發(fā)布評論請先 登錄
相關(guān)推薦
評論