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

一位程序員的五年工作感悟
評(píng)論