TheEdge推薦 [2007-6-10] 我 覺得這個(gè)世界上的程序員可以分為兩種:“主動(dòng)程序員”和“被動(dòng)程序員”。“主動(dòng)程序員”可以自己選擇開發(fā)方式,開發(fā)語言和框架,“被動(dòng)程序員”被動(dòng)接受公 司指定的語言和開發(fā)方式。其實(shí)在現(xiàn)實(shí)生活中,這種分類并不絕對(duì),一個(gè)程序員可能在不同的時(shí)候擔(dān)當(dāng)不同的角色,“被動(dòng)程序員”也可能享有有限的主動(dòng)權(quán)。這么 分類并不以程序員本身的知名度,財(cái)富多少,是否自己創(chuàng)業(yè)還是受雇于人有關(guān)。 David Heinemeier Hansson 受雇與 37 Signal ,但是仍然可以自己選擇建立自己的 Rails 框架來完成項(xiàng)目,他應(yīng)該算是個(gè)“主動(dòng)程序員”。Firebird 數(shù)據(jù)庫的領(lǐng)導(dǎo)者同時(shí)也是 Interbase 數(shù)據(jù)庫的創(chuàng)始人。Jim Starkey 將自己的公司賣給了 Mysql AB 而不得不給 Mysql 干活,從某方面說,他應(yīng)該是個(gè)“被動(dòng)程序員”。大多數(shù)第三世界國(guó)家的程序員應(yīng)該屬于“被動(dòng)程序員”,他們編程只是為了一份養(yǎng)家糊口的工作,他們無權(quán)選擇自 己喜歡的編程語言或者框架,因?yàn)檫@是公司給他選擇的,因?yàn)槿绻x了其他,他可能就找不到工作了。曾經(jīng)有個(gè)即將離職的同事讓我給他推薦一個(gè)比較好的編程框 架,可以很容易完成一個(gè)網(wǎng)站的制作,我給他推薦了 Zope, 還有 Rails, 他聽我的介紹覺得不錯(cuò) ,當(dāng)我告訴他必須學(xué)習(xí) python 和 Ruby 編程語言時(shí),他顯得很驚愕,“那能找到工作嗎?”。這話其實(shí)也表達(dá)了大多數(shù)國(guó)內(nèi)程序員的想法??纯凑衅妇W(wǎng)站就知道,現(xiàn)在最需要的程序員是 Java 程序員,最需要了解的框架是 Struts。如果不會(huì)你很難得到面試的機(jī)會(huì),所以就算你不會(huì)也要在自己的簡(jiǎn)歷中“修飾”一下。 有些自己創(chuàng)業(yè)的人可以自己選擇喜歡的編程語言和框架,當(dāng)然那畢竟是少 數(shù)。如果我能夠選擇的話,我肯定不用 Java 來做網(wǎng)站應(yīng)用。因?yàn)樗瓿梢粋€(gè)簡(jiǎn)單的工作太麻煩了,很難快速適應(yīng)需求的變化。當(dāng)然我也不會(huì)去用 PHP ,因?yàn)槲乙呀?jīng)習(xí)慣了面向?qū)ο蟮木幊谭绞搅?。我發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象:大多數(shù)轉(zhuǎn)向?qū)W習(xí) Ruby on rails 框架的人都是來自 Java 陣營(yíng)的程序員,而轉(zhuǎn)向Python 框架Zope,django 的程序員大多有ASP,PHP 背景。因?yàn)?Ruby 是一個(gè)真正的面向?qū)ο蟮恼Z言,它同時(shí)具備了腳本語言的特點(diǎn),而 Python 首先是一個(gè)腳本語言,它具備了一些 OO 的特征。Java 程序員很難忍受走回頭路,所以他們選擇了一個(gè)比Java更面向?qū)ο蟮恼Z言 Ruby ,而PHP,ASP程序員沒有那么重的思想負(fù)擔(dān),他們選擇 Python 可能是因?yàn)樗拇a更 Beauty ,遠(yuǎn)比他們以前寫的“意大利面條”式的PHP,ASP 代碼要干凈的多。 無論是 python, 還是 Ruby
這些非主流程序語言開發(fā)的框架,使用起來都異常的簡(jiǎn)便,他們可謂是真正從程序員角度考慮的框架。為什么 Ruby 一出,攪的 Java
的世界一片混亂,我想原因還是出在 Java 這里,當(dāng) Java 程序員想當(dāng)然地認(rèn)為程序開發(fā)應(yīng)該如此麻煩的時(shí)候,Rails
的出現(xiàn)讓他們立刻覺得被這些所謂的 Java 流行框架和 Sun 給欺騙了,這種欺騙是如此之深,以至于他們中間有的人“頭也不回”的離開了
Java, 轉(zhuǎn)而攻擊 Java 的種種不是。這其中比較有名的人就是 Bruce Tate ,這位老兄寫了兩本轟動(dòng) Java
世界的書,Spring: A Developer‘s Notebook 和 Better, Faster, Lighter Java
(該書可是獲得 Jolt 大獎(jiǎng)的,恰好我還都讀過),隨著 Rails 的流行,這位仁兄立刻叛逃出 Java 陣營(yíng),寫了 Beyond Java
一書,著重介紹了一些非Java 框架,比如 Smalltalk 的Seaside和Rails。 Sun 希望 Java 變得復(fù)雜,就如同程序員希望 Perl 代碼難看一樣,這樣做是可以帶來好處的。Java 的復(fù)雜性也帶來了產(chǎn)業(yè)鏈上其他行業(yè)的繁榮,比如咨詢,在 Php ,Perl 流行 Internet 的年代,網(wǎng)站開發(fā)似乎還不需要咨詢師,包括 C/S 盛行的時(shí)候,企業(yè)開發(fā)也不需要咨詢師,然而隨著 J2EE 逐步主宰企業(yè)級(jí)開發(fā),咨詢行業(yè)也開始興旺起來。企業(yè)大把大把的把錢投入到開發(fā)咨詢中,究竟效果如何,不得而知。我想對(duì)大多數(shù)程序員,尤其是那些有自己想法 的程序員來說,請(qǐng)求咨詢公司,還不如自己去了解來得清楚。軟件開發(fā)咨詢師在我看來,有點(diǎn)象是“律師”—“代表貪婪的公司,讓這個(gè)世界變得更糟糕一些”(中 Alex 的對(duì)白)。如果說國(guó)外的咨詢師是希望通過主觀的努力來解決客觀存在的開發(fā)復(fù)雜性的話,那么國(guó)內(nèi)的咨詢行業(yè)可能把原本復(fù)雜的軟件開發(fā)變得更加復(fù)雜了。我不相 信他們,我寧可選擇某個(gè)軟件的培訓(xùn),而不希望有人來從頭到尾指點(diǎn)你如何開發(fā),因?yàn)閲?guó)內(nèi)咨詢師的水平比你從書本上了解的高不到哪里去,公司又何必花費(fèi)這筆冤 枉錢呢。 那么如果你是個(gè)“主動(dòng)程序員”,你會(huì)跟著 Sun 的指揮棒走嗎? 我想離開 Java 世界,你選擇的機(jī)會(huì)應(yīng)該很多,但是前提是:你愿不愿意離開 Java 。因?yàn)榇蠖鄶?shù)人覺得改變現(xiàn)狀其實(shí)并不是個(gè)好事情,學(xué)習(xí)一個(gè)新語言和框架意為著你過去所有的經(jīng)驗(yàn)就消失了,這其中有風(fēng)險(xiǎn)。對(duì)大多數(shù)程序員來說,編程其實(shí)就是 份工作,跟賣盒飯,裝機(jī)器沒什么區(qū)別,只要搞好本職工作就可以。試圖改變現(xiàn)狀的人很痛苦,了解差異的人也是如此,就如同 Neo 在接受紅藥丸和藍(lán)藥丸。 我在當(dāng)年學(xué)習(xí) Perl 的時(shí)候曾經(jīng)買過一本《Learning
perl》,書的作者曾經(jīng)這么說,學(xué)習(xí) Perl 是為了讓自己把更多的時(shí)間用在去滑雪, PHP 的創(chuàng)始人 Rasmus Lerdorf
也曾經(jīng)這樣表示過,他希望自己能夠減少盯著電腦的時(shí)間,可是這么多年過去了,他發(fā)現(xiàn)自己還是要繼續(xù)盯著該死的電腦。其實(shí)我對(duì)選擇框架語言也并沒什么興趣,
我只是希望能夠以簡(jiǎn)單的方式完成工作,而把時(shí)間省下來去聽聽音樂,看看電影。實(shí)際上我跟不希望改變現(xiàn)狀的人沒什么不同,他們不希望學(xué)習(xí)新的東西,因?yàn)楝F(xiàn)有
的東西很熟悉了,學(xué)習(xí)新框架,還不如把時(shí)間放到玩上去,我的目的一樣,我學(xué)習(xí)只是希望自己的工作更輕松一點(diǎn),這樣可以用更多的時(shí)間來玩。所以每當(dāng)我看到各
種技術(shù)論壇上充斥著Java, .net , ROR ,Python
之類的爭(zhēng)吵,我都覺得很好笑。其實(shí)為了維護(hù)一個(gè)語言而爭(zhēng)吵最沒有意義。編程語言就和英語,計(jì)算機(jī)一樣,就是個(gè)工具,選擇它們只是為了盡可能簡(jiǎn)單地完成工
作,提高生活質(zhì)量。為了語言而語言,為了框架而框架都是沒必要的。“主動(dòng)程序員”可以選擇自己的方式來工作,這是大多數(shù)人做不到的。如果有可能,我也希望
做一個(gè)“主動(dòng)程序員”。 轉(zhuǎn)載網(wǎng)址:http://www./doc/SP/SPExperience/TheEdge318.htm |
|