老菜鳥(niǎo)致青春,程序員應(yīng)該選擇java 還是 c#
致青春
還記得自己那年考清華失敗,被調(diào)劑到中科大軟院,當(dāng)初有幾個(gè)方向可以選,軟件設(shè)計(jì)、嵌入式、信息安全等等,毫不猶豫地選擇了信息安全。
為什么選信息安全?這四個(gè)字聽(tīng)起來(lái)多牛多有感覺(jué),我本科是學(xué)物理的,記得做一個(gè)光學(xué)實(shí)驗(yàn)的時(shí)候,一個(gè)老師看我做的結(jié)果,說(shuō),學(xué)物理不是什么人都可以的,這個(gè)是需要一點(diǎn)智商的。
好吧,當(dāng)初其實(shí)并非對(duì)我一個(gè)人所說(shuō),但我確實(shí)感覺(jué)到受到了鄙視,同時(shí),我沒(méi)有任何在物理上的精湛技藝可以反擊我的老師。
由于整個(gè)大學(xué)期間,我都在沉迷游戲和小說(shuō),以至于輔導(dǎo)員說(shuō),現(xiàn)在找你都得預(yù)約。
而我的同學(xué)基本在學(xué)期開(kāi)始和考試前能見(jiàn)到我,當(dāng)時(shí)為了應(yīng)付考試,我不得不學(xué)習(xí)復(fù)雜的物理公式和推導(dǎo),有一門課程是激光原理,老師是雙博士學(xué)位,大概是很厲害的,在我考試時(shí),過(guò)來(lái)看我的卷子,說(shuō)你的”背功“很厲害。
考試時(shí)如期通過(guò),但老師大概都對(duì)我評(píng)價(jià)不高。自然,我是感到不愉快的。
回到我的畢業(yè)論文,大概是做一個(gè)電離層特征參量的反演,其實(shí)就是用迭代法解病態(tài)方程。
這個(gè)論文基本是沒(méi)有人選的,因?yàn)轭}目本身可能相對(duì)比較難,也需要編程實(shí)現(xiàn),好吧,當(dāng)時(shí)下載的是盜版的matlab,參考的是一個(gè)日本學(xué)者和我導(dǎo)師的論文,鏗鏗鏘鏘地寫出來(lái)了。還做了個(gè)所謂的參數(shù)優(yōu)化,以使得結(jié)果看起來(lái)更平滑。
當(dāng)時(shí)覺(jué)得很得意,我女朋友(現(xiàn)在的老婆)也很驚訝,我一個(gè)月做完了。
其實(shí)這不是***次領(lǐng)略程序的魅力,在很久之前,高中時(shí)期,為了追一個(gè)女生,我做過(guò)flash,當(dāng)時(shí)我就覺(jué)得拖來(lái)拖去很麻煩,但苦于沒(méi)有基礎(chǔ),看不懂 actionscript,所以難以深入體會(huì)編程的精妙,如果看到網(wǎng)上有一些類似雪花飄落、旋轉(zhuǎn)字等效果,都是直接拷貝修改到完工。
現(xiàn)在回到,為什么選擇信息安全上來(lái),因?yàn)樵诖髮W(xué)時(shí),很喜愛(ài)游戲,尤愛(ài)單機(jī),國(guó)情大家是清楚的,而且我沒(méi)有錢,也不知道哪里可以買到正版,這個(gè)猥瑣了,呵呵。
仙劍、上古、火炬之光、火焰紋章,各種類型都喜歡。也很喜歡生存類游戲。給一個(gè)單機(jī)游戲做的exe補(bǔ)丁和用lua拓展的mod至今看來(lái)仍讓我懷念。
討厭網(wǎng)游是因?yàn)樽约簺](méi)有錢,搞不過(guò)RMB玩家,而且砸裝備總失敗。
唯獨(dú)一個(gè),2006年時(shí),我玩***世界,后來(lái)玩它的SF,為了砸裝備,我 ***次想到寫封包外掛,由于當(dāng)時(shí)已經(jīng)有一些socket、tcp/ip的概念了,雖然C++玩不轉(zhuǎn),還是各種參考,寫hook、寫字節(jié)轉(zhuǎn)換,同時(shí)***當(dāng)時(shí) 打擊WG很厲害,游戲基址容易變,又加了很多防調(diào)試的功能。
但為了不手工砸裝備(SF里的石頭幾乎免費(fèi),就是砸上去的幾率太低),我欲望那個(gè)強(qiáng)啊,所以用OD調(diào)試找網(wǎng)絡(luò)發(fā)送的函數(shù)地址, 然后C++寫代碼hook。
程序最終工作很好,我還分享給了幾個(gè)玩友。
后面也寫過(guò)一些類似跳舞自動(dòng)擊鍵的WG,主要也是為了自?shī)首詷?lè),因?yàn)槲艺娴姆磻?yīng)不過(guò)來(lái)屏幕上瞬間出現(xiàn)太多的key!
與程序?yàn)槲榈娜兆雍苌?,但每一次接觸,似乎都是為了達(dá)到自己的一些目標(biāo)。
所以凌亂的編程體驗(yàn),雖然不系統(tǒng),不精湛,卻讓我快樂(lè)。
再次回到為什么選擇信息安全上來(lái)?也許答案已經(jīng)很清楚。
當(dāng)時(shí)覺(jué)得虛擬機(jī)加密太高深了,聯(lián)網(wǎng)解密也難搞定,所以覺(jué)得信息安全一定是能解決我的問(wèn)題的!
后來(lái)你猜到了,就是C,就是匯編,就是linux,我當(dāng)時(shí)是多么反感l(wèi)inux,當(dāng)時(shí)還用的是ubuntu,但為了課程,實(shí)在是沒(méi)有辦法,為了考 研,自己系統(tǒng)自學(xué)了數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)、組成原理,當(dāng)時(shí)在考研論壇上還和一個(gè)清華搞計(jì)算機(jī)體系的探討問(wèn)題,刷了好幾頁(yè)的帖子,現(xiàn)在看來(lái),多幼 稚!但,快樂(lè)也是固定在那個(gè)過(guò)程之中了。
我討厭匯編,我討厭C,我討厭linux,但他們強(qiáng)大,能夠滿足需求,這就夠了。
#p#
java還是 c#?
其實(shí)這不應(yīng)該是我們真正的主題,而且入了行的也很少會(huì)java還是c#這么比,但初學(xué)的,java和c#往往就代表了兩大流派,java代替了j2ee,c#代替了.net,ok,沒(méi)有關(guān)系,這么作為title,不影響我們說(shuō)事。
如果從語(yǔ)言的角度上來(lái)講,c#毫無(wú)疑問(wèn)勝出,易用、門檻低、優(yōu)雅、較為簡(jiǎn)潔。但java和c#的語(yǔ)言特性是相似的。
在很多類的命名上,它們都如出一轍:
//java
System.out.println("java比C#強(qiáng)!j-a-v-a!"); //C# System.Console.WriteLine("你沒(méi)看到#是4個(gè)+嗎,我比c++還強(qiáng)2個(gè)+,你就歇菜吧!");
c#出現(xiàn)的時(shí)間比java晚,所以自然吸收、借鑒,同時(shí)又有它的創(chuàng)新,比如很早就支持lamda表達(dá)式、比如event和委托,比如var
,比如linq。
但如果從面向接口來(lái)講,java同樣可以做到event和listener,只不過(guò)對(duì)象引用的傳遞比較直接。
而.Net的類庫(kù)和jdk則各有千秋。
如果從應(yīng)用的角度來(lái)看,javaee和.Net體系幾乎都涵蓋了主流的開(kāi)發(fā)方向:
桌面、Web、服務(wù)端、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、移動(dòng)端、中間件。
哪個(gè)方向,哪個(gè)更強(qiáng)?這個(gè)留給讀者自己體會(huì)吧。
微軟給.Net一個(gè)宇宙***的IDE,也給了各個(gè)方向統(tǒng)一而平滑的編程體驗(yàn),不得不說(shuō),微軟的上手要容易的多。
而java則一開(kāi)始就和開(kāi)源分不開(kāi),多如牛毛的框架、引擎、包,blabla,用java開(kāi)發(fā),程序員要懂得東西更多一些。應(yīng)為你大部分情況下得自己整合。但整合的好了就是很強(qiáng)大的,比如SSH。
在近幾年很熱的大數(shù)據(jù)和云計(jì)算領(lǐng)域,hadoop、spark、tez、leveldb、mongodb、mariadb、hive、hbase,還有oracle,都各自在自己不同的層面發(fā)力,大部分的這些都對(duì)java是極為友好的。
很多java程序員,都覺(jué)得搞.net開(kāi)發(fā)的,就是拖拖控件而已,其實(shí)我可以告訴你,說(shuō)出這種話的java程序員一般都還比較小白,如果你是搞.net的,你也可以說(shuō)搞java的都是拷貝別人的開(kāi)源軟件的代碼,然后改改而已。
當(dāng)然改改沒(méi)什么問(wèn)題,誰(shuí)都不喜歡重復(fù)造輪子,比如,google里面也并非全部是創(chuàng)新,經(jīng)常”拿“別人的東西自己改吧改吧,淘寶就很不用說(shuō)了,招了一些能改c、會(huì)點(diǎn)編譯的程序員,經(jīng)常拿各種開(kāi)源框架開(kāi)刀,然后表明是自己的東西。比如雙11的那個(gè)問(wèn)題。
當(dāng)然不是說(shuō)淘寶找的人有問(wèn)題,而是這個(gè)企業(yè)的文化就是銷售和廣告文化,后來(lái)的google也如此。
回到正題,wpf和silverlight(雖然已經(jīng)EOL)中***的創(chuàng)新莫過(guò)于xaml技術(shù),如果你認(rèn)為wpf只是winform的簡(jiǎn)單升級(jí),或者說(shuō)你只會(huì)在wpf中拖控件,說(shuō)明你還是一個(gè)非常初級(jí)的.net程序員,不管你工資上w沒(méi)有,或者你已經(jīng)是項(xiàng)目經(jīng)理了。
xaml天生就是為mvvm模型而生,這一點(diǎn),搞前端的同學(xué),應(yīng)該熟悉,即使你不懂wpf,js和html怎么做mvvm,你也應(yīng)該體會(huì)過(guò)它的好處。
wpf中在xaml中布局控件,并支持INotifyPropertyChanged接口,可以非常容易的實(shí)現(xiàn)界面和數(shù)據(jù)分離,做出一個(gè)mvvm模型出來(lái)。
說(shuō)到標(biāo)記性語(yǔ)言,我們看看jsp的jstl、struts2的tags,還有asp.net mvc3之后的razor引擎:
jstl和aspx的標(biāo)簽類似,自由、強(qiáng)大,可以很容易的穿插交織到html標(biāo)記中;
struts的標(biāo)簽就是個(gè)另類,我個(gè)人反感這種既不遵循主流標(biāo)準(zhǔn)也不簡(jiǎn)潔的東西,雖然好多人會(huì)說(shuō)好用,那是個(gè)習(xí)慣問(wèn)題,我這么說(shuō),不是說(shuō)這東西難學(xué)難掌握,只是比較一下和razor引擎中的標(biāo)簽語(yǔ)法,弱爆了。
razor,強(qiáng)大、簡(jiǎn)潔、優(yōu)雅。
你肯定覺(jué)得我是微軟.net的粉絲,其實(shí)我想告訴你的是,***的標(biāo)簽語(yǔ)言只有兩種,html和xml,穿插動(dòng)態(tài)語(yǔ)句到服務(wù)端頁(yè)面上,然后刷出 html,從來(lái)都不是好的做法,因?yàn)椴恢荒阋粋€(gè)人寫代碼,后面可能會(huì)有其他人維護(hù)這個(gè)頁(yè)面,本來(lái)這是需要由web designer來(lái)做的事情,但是有了語(yǔ)句,他的維護(hù)成本就很高。
規(guī)范的頁(yè)面開(kāi)發(fā),程序員是不會(huì)染指一個(gè)css、style的,動(dòng)態(tài)語(yǔ)言在aspx、view、jsp上面應(yīng)該盡量少用。否則你不如使用php和asp。
這一點(diǎn),你會(huì)在工作中會(huì)深有體會(huì)的。
#p#
青春的你,怎么選擇?
看看現(xiàn)在的招聘吧,動(dòng)不動(dòng)就是
精通j2ee,精通struts、spring mvc、hibernate或者mybatis,對(duì)mysql、oracle有深入理解,精通webservice、精通多線程,能處理高并發(fā),有的還得懂jvm,***有hadoop等開(kāi)發(fā)經(jīng)驗(yàn)。***再來(lái)個(gè)211以上。
.net方面呢?
精通.Net,精通mvc3-5、精通wpf、wcf、多線程,mssql等等等等。
我現(xiàn)在處于離職狀態(tài),所以每天收到獵聘上的一些推薦,都很郁悶,因?yàn)闆](méi)有一項(xiàng)是我精通的。
但是不妨礙我在2012年實(shí)習(xí)中,就拿到了13K的月薪,比一些正式員工可能還要高。
而且,仔細(xì)想想,代碼中經(jīng)常講到要容易維護(hù)、這個(gè)設(shè)計(jì)模式、那個(gè)AOP,這個(gè)大并發(fā),那個(gè)高性能,我個(gè)人沒(méi)有見(jiàn)到容易維護(hù)的代碼。學(xué)習(xí)一個(gè)新公司的 一套模式,一套老產(chǎn)品,比學(xué)習(xí)一門新技術(shù)需要的時(shí)間長(zhǎng)得多,你會(huì)發(fā)現(xiàn),99%的情況下,你最需要的,不是什么代碼,模式,而是對(duì)產(chǎn)品的理解、對(duì)業(yè)務(wù)的理 解,很多情況下,除非太菜太小白,大家的代碼都差不多,誰(shuí)有時(shí)間重構(gòu)代碼?程序員又為何加班?
這是行情,一個(gè)項(xiàng)目接一個(gè)項(xiàng)目,公司需要掙錢的,這是大部分公司的現(xiàn)狀。
為了回答java還是c#的問(wèn)題,我會(huì)從我的經(jīng)歷提供一些參考,既然是我的,那就不會(huì)是全面的和準(zhǔn)確的,你自己判斷。
還是從故事開(kāi)始吧!
在科大軟院(蘇州),因?yàn)槔掀畔牒臀乙黄鹪谕饷孢^(guò)個(gè)年,我不得不去臨時(shí)找實(shí)習(xí),當(dāng)時(shí)c和匯編不行啊,所以得選個(gè)流行的,什么流行呢,當(dāng)時(shí)是web。
所以我遇到了java還是c#的問(wèn)題,確切的是我遇到了j2ee還是.net的問(wèn)題。
因?yàn)榻?jīng)常使用windows,又因?yàn)?net門檻如此低,所以毫不猶豫選擇了.net,當(dāng)時(shí)是不會(huì)寫SQL的,但是卻系統(tǒng)學(xué)習(xí)了數(shù)據(jù)庫(kù)設(shè)計(jì)原理。
進(jìn)入公司就接觸mvc3,覺(jué)得好,外企的技術(shù)確實(shí)比較新呢,比我學(xué)習(xí).net時(shí)學(xué)的aspx優(yōu)雅,那個(gè)時(shí)候開(kāi)始接觸并嘗試?yán)斫鈓vc模式和ddd的概念。
當(dāng)時(shí),時(shí)薪25人民幣。
6個(gè)月的實(shí)習(xí),基本能玩javascript和c#,然后sql還是不行,當(dāng)時(shí)記得一個(gè)高級(jí)開(kāi)發(fā)跟我說(shuō),他以前做delphi開(kāi)發(fā)的時(shí)候,團(tuán)隊(duì)寫sql寫的好就牛,我深以為然。
只會(huì)用Entityframework + mvc3 + javascript,開(kāi)發(fā)網(wǎng)站的我,用理解很淺的.net的web技術(shù)體系,支撐了我和老婆在上海的生活費(fèi)用,當(dāng)時(shí)10年,我們租的拎包式入住公寓1500一個(gè)月,不算生活費(fèi)、水電費(fèi)。
再一次,通過(guò)一項(xiàng)技術(shù),達(dá)到了我的目標(biāo),支撐了我的計(jì)劃,當(dāng)時(shí)對(duì)技術(shù)的理解,但是偏執(zhí)于.Net,對(duì)java陣營(yíng)是不屑一顧的。
后來(lái)很快離開(kāi)了科大軟院和蘇州,考取了中科院,到了北京,房租是1580一個(gè)月,照樣不算生活費(fèi)、水電費(fèi)。
沒(méi)辦法,學(xué)校發(fā)的補(bǔ)貼根本不夠押2付3的。
找實(shí)習(xí),做過(guò)什么呢?office編程,而且當(dāng)時(shí)的老板是從IBM下來(lái)的工程師,項(xiàng)目主要是java開(kāi)發(fā),jsf做頁(yè)面,招我過(guò)去,做word編程,還不能使用.net,你猜到了,我用的是vba。
沒(méi)做多久,公司發(fā)錢就開(kāi)始拖延,兩周后,我沒(méi)有積蓄,只能被迫離職,后來(lái)加入一家公司,從4K到10k,用了8個(gè)月,在這里,我完善了程序員生涯中 sql能力的快速成長(zhǎng),并且廣泛地使用了silvelight、aspx、oracle、mssql技術(shù)。記得當(dāng)時(shí)一個(gè)北郵畢業(yè)的同事,做了6個(gè)月的 office文檔在web展示,因?yàn)樯婕暗搅薱om編程,所以運(yùn)行非常不穩(wěn)定也難于調(diào)試,更重要的是,拉一個(gè)頁(yè)面到展示,需要20秒。
老板是中科院軟件所的博士,架構(gòu)很厲害,但對(duì)于這個(gè)技術(shù)細(xì)節(jié)并不擅長(zhǎng),問(wèn)我有沒(méi)有辦法,我說(shuō)做過(guò)vba,大概了解word的dom結(jié)構(gòu),我試試。那個(gè)同事說(shuō),如果你能做到穩(wěn)定、快速的實(shí)現(xiàn),你可以拿這個(gè)做你的畢業(yè)論文了。
我說(shuō),我試試。
臨危受命,我猥瑣地查找資料,研究百度文庫(kù)如何實(shí)現(xiàn)等等,后來(lái)為了.Net環(huán)境的一致性和可維護(hù),所以拋棄了pdf + flash。
通過(guò)大量看老外的東西,我選擇了aspose.Net框架 + 一個(gè)能把word轉(zhuǎn)為Xaml的框架 + silverlight實(shí)現(xiàn),可惜這兩個(gè)框架都收歐元,公司鐵定不會(huì)出錢,所以我猥瑣地對(duì)其進(jìn)行了破解,也開(kāi)始接觸IL碼。
docx文檔在線編輯 + 展示的功能完成,給老板run了一下,老板點(diǎn)了個(gè)贊,顯示時(shí)間縮短到5秒左右。
后來(lái)做了數(shù)據(jù)庫(kù)的靜態(tài),顯示時(shí)間縮短為1秒內(nèi)。老板又點(diǎn)了個(gè)贊。
后來(lái)帶領(lǐng)團(tuán)隊(duì),從mssql遷移代碼oracle,至今還記得和老板并肩一起寫存儲(chǔ)過(guò)程的情形,并感嘆微軟自身的數(shù)據(jù)庫(kù)外遷還得依靠三方工具的搞笑。
時(shí)光很快,當(dāng)時(shí)回想,.Net是多么的強(qiáng)大,是么?
在工作的同時(shí),學(xué)業(yè),為了湊夠4個(gè)整天來(lái)實(shí)習(xí),也為了自己的未來(lái),我選擇了數(shù)據(jù)挖掘、計(jì)算機(jī)圖像處理、天文數(shù)據(jù)處理、文本檢索、分布式計(jì)算、高性能計(jì)算等所有聽(tīng)起來(lái)很牛的東西。
不求甚解,一段一段的代碼和注釋,將能掌握的注入到自己的技術(shù)骨頭里去。
還記得在學(xué)校周一開(kāi)組會(huì),同一個(gè)組的基本都是博士了,我放棄碩博連讀,因?yàn)槲覍?shí)在年齡大了,得養(yǎng)家糊口。
后來(lái)一家西二旗的距離oracle很近的公司面上了,記得***一輪面試是小屋子壓力面,從董事長(zhǎng)到我的小組領(lǐng)導(dǎo)都在,沒(méi)有水。
***架構(gòu)師是科大少年班的,博士在網(wǎng)絡(luò)所讀的,問(wèn)了一個(gè)問(wèn)題:
你如何實(shí)現(xiàn)google的負(fù)載均衡?
那個(gè)問(wèn)題我答的不好,其實(shí)即使不理解負(fù)載均衡的實(shí)現(xiàn),也該從組成原理的總線仲裁知識(shí)中窺的一點(diǎn)參考。
所以那次又被鄙視了。但那次拿到了13K的月薪,當(dāng)時(shí)的總監(jiān)是漢王以前的副總裁,評(píng)價(jià)是,基礎(chǔ)扎實(shí),思維靈活,實(shí)習(xí)階段就參與公司重大項(xiàng)目研發(fā),值得培養(yǎng)。
直到現(xiàn)在,我,相信也還有很多程序員,遇到了數(shù)不清的技術(shù),我經(jīng)常會(huì)茫然,到底我該何去何從?
一些疑問(wèn):
訪問(wèn)數(shù)據(jù)庫(kù),隨便找個(gè)高效的connector或者driver就行了,一般提供數(shù)據(jù)的廠家,誰(shuí)不提供connector?ORM是很必要,但是追求性能和反框架泛濫的公司不在乎ORM帶來(lái)的那點(diǎn)便利性,用一個(gè)jdbc + sql照樣寫穩(wěn)定高效的數(shù)據(jù)訪問(wèn)。
做web前端,真的需要自己寫一個(gè)框架出來(lái)?真正需要這種開(kāi)發(fā)的項(xiàng)目有幾個(gè)呢?jQuery和d3,原生的javascript就夠了,你寫的也許不叫框架,最多就是個(gè)wrapper。
數(shù)據(jù)庫(kù)的唯一性索引、聚合索引、輔助索引都沒(méi)搞清楚,就開(kāi)始搞hadoop、spark、hbase、mongodb,用人單位也一再這么要求的,你的項(xiàng)目中真的有那么大的數(shù)據(jù)量?在傳統(tǒng)的rdbms下解決不了?
你開(kāi)始知道輪子的概念了,并且知道不要重復(fù)造輪子??墒悄憧觳皇浅绦騿T了,而是框架員了。
所以,回到j(luò)ava還是c#,這個(gè)問(wèn)題,要比我遇到的技術(shù)分裂要簡(jiǎn)單的多。
#p#
一些建議
我的意見(jiàn)是,忘記java或者c#的對(duì)立,如果要做一個(gè)開(kāi)心、有自我追求、同時(shí)滿足就業(yè)的程序員,你需要重視以下方面:
-
函數(shù)調(diào)用棧,這個(gè)很多高級(jí)程序員只知其然不知其所以然。你可以不懂的匯編、函數(shù)入口、返回地址、寄存器,但你需要調(diào)試,你得深刻理解函數(shù)調(diào)用棧,無(wú)論是在dev模式調(diào)試struts開(kāi)發(fā)的jsp頁(yè)面,還是debug模式調(diào)試aspx頁(yè)面,你得看懂調(diào)用棧的信息;
-
基本的數(shù)據(jù)結(jié)構(gòu)和算法,數(shù)據(jù)庫(kù)中索引的組織方式,是B+樹(shù)還是Hash,還是堆,你的公司有Web、桌面、移動(dòng)用戶,有社區(qū),有產(chǎn)品,你可能要做個(gè)推薦什么的,或者研究個(gè)社交圖譜什么的,這門技術(shù)可以幫助你。
-
一門動(dòng)態(tài)語(yǔ)言。lua、python、javascript,都可以,你需要隨時(shí)和系統(tǒng)進(jìn)行交互,或者實(shí)現(xiàn)一個(gè)原型,或者用程序的方式來(lái)畫(huà)點(diǎn)界面、數(shù)據(jù)圖什么,它們夠輕量、夠快捷。
-
一門重量級(jí)語(yǔ)言。比如java或者c#。你靠它們吃飯。
-
理解跨平臺(tái)的含義。掌握一些基本的跨平臺(tái)技術(shù),比如xml、c、html、json。
-
重視網(wǎng)絡(luò)編程的練習(xí)和理解,在你使用URLConnection或者M(jìn)ySqlConnection或者Wepequest的時(shí)候,你是 否理解它們的生命周期和底層實(shí)現(xiàn),用什么語(yǔ)言無(wú)所謂,你要記住tcp/ip協(xié)議和http的基本特性。這樣不至于你寫了幾年程序,還不知道 method=post是什么原理。
-
找一個(gè)順手的IDE,我個(gè)人不是CLI控,雖然不得不CLI,一個(gè)順手的IDE真的可以提高生產(chǎn)效率。搞.Net推薦vs + resharper,搞java推薦intellij IDEA.
-
關(guān)注一些熱門而經(jīng)典的領(lǐng)域,比如機(jī)器學(xué)習(xí)、圖像處理、數(shù)據(jù)挖掘,即使已經(jīng)有了mahout,不代表你不需要了解這些領(lǐng)域,你可能永遠(yuǎn)不會(huì)在工作中使用它們,但它們的思想值得你擁有,因?yàn)槟氵x擇了做程序員,而不是哪個(gè)公司的程序員。
剩下的,就是你的解決問(wèn)題的思路和你實(shí)現(xiàn)的硬功夫(編碼能力),我相信,很多看這篇文章的人,不能夠輕易寫出一個(gè)ftp服務(wù)器,不能夠不參考、不聯(lián)網(wǎng)查詢資料寫出一個(gè)簡(jiǎn)單的快速排序,也不能夠輕易寫出一段通用分頁(yè)SQL,但他們依然可以正常工作。
所以外面的功夫容易忘記,有網(wǎng)絡(luò)就能拾起,內(nèi)功才是入骨的東西。
架構(gòu)不是學(xué)出來(lái)的,是你的理解到位了,恰好工作中有這么個(gè)需求,你就開(kāi)始整合你的已知,然后開(kāi)始選擇輪子。
最重要的是,你千萬(wàn)不要成為一個(gè)只會(huì)熟練使用框架的程序員,那樣,你會(huì)疲于奔命,你也許永遠(yuǎn)只會(huì)使用hadoop,而寫不出一個(gè)hadoop,你只是一個(gè)hadoop程序員,而不是一個(gè)分布式程序員。
你也許永遠(yuǎn)只會(huì)使用struts,而忘記了自己寫filter,你只是一個(gè)ssh程序員,而不是一個(gè)web工程師。
后記
人言三十而立,如今二十有九,反反復(fù)復(fù),雖然買房買車(俗了~),依然一事無(wú)成。
結(jié)婚5年,老婆再次懷孕,她很興奮,我也很開(kāi)心,由于時(shí)常加班,對(duì)她很抱歉。
目前離職,有些感觸,特撰此文。
原文鏈接:http://www.cnblogs.com/foreach-peak/p/java_or_csharp_it_is_not_a_problem.html