“主動(dòng)程序員”與“被動(dòng)程序員”[1]

字號(hào):

我覺(jué)得這個(gè)世界上的程序員可以分為兩種:"主動(dòng)程序員"和"被動(dòng)程序員"。"主動(dòng)程序員"可以自己選擇開發(fā)方式,開發(fā)語(yǔ)言和框架,"被動(dòng)程序員"被動(dòng)接受公司指定的語(yǔ)言和開發(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 框架來(lái)完成項(xiàng)目,他應(yīng)該算是個(gè)"主動(dòng)程序員"。Firebird 數(shù)據(jù)庫(kù)的同時(shí)也是 Interbase 數(shù)據(jù)庫(kù)的創(chuàng)始人 Jim Starkey 將自己的公司賣給了 Mysql AB 而不得不給 Mysql 干活,從某方面說(shuō),他應(yīng)該是個(gè)"被動(dòng)程序員"。大多數(shù)第三世界國(guó)家的程序員應(yīng)該屬于"被動(dòng)程序員",他們編程只是為了一份養(yǎng)家糊口的工作,他們無(wú)權(quán)選擇自己喜歡的編程語(yǔ)言或者框架,因?yàn)檫@是公司給他選擇的,因?yàn)槿绻x了其他,他可能就找不到工作了。曾經(jīng)有個(gè)即將離職的同事讓我給他推薦一個(gè)比較好的編程框架,可以很容易完成一個(gè)網(wǎng)站的制作,我給他推薦了 Zope, 還有 Rails, 他聽我的介紹覺(jué)得不錯(cuò) ,當(dāng)我告訴他必須學(xué)習(xí) python 和 Ruby 編程語(yǔ)言時(shí),他顯得很驚愕,"那能找到工作嗎?"。這話其實(shí)也表達(dá)了大多數(shù)國(guó)內(nèi)程序員的想法??纯凑衅妇W(wǎng)站就知道,現(xiàn)在最需要的程序員是 Java 程序員,最需要了解的框架是 Struts。如果不會(huì)你很難得到面試的機(jī)會(huì),所以就算你不會(huì)也要在自己的簡(jiǎn)歷中"修飾"一下。
    有些自己創(chuàng)業(yè)的人可以自己選擇喜歡的編程語(yǔ)言和框架,當(dāng)然那畢竟是少數(shù)。如果我能夠選擇的話,我肯定不用 Java 來(lái)做網(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 框架的人都是來(lái)自 Java 陣營(yíng)的程序員,而轉(zhuǎn)向Python 框架Zope,django 的程序員大多有 ASP,PHP 背景。因?yàn)?Ruby 是一個(gè)真正的面向?qū)ο蟮恼Z(yǔ)言, 它同時(shí)具備了腳本語(yǔ)言的特點(diǎn),而 Python 首先是一個(gè)腳本語(yǔ)言,它具備了一些 OO 的特征。Java 程序員 很難忍受走回頭路,所以他們選擇了一個(gè)比Java更面向?qū)ο蟮恼Z(yǔ)言 Ruby ,而PHP,ASP程序員沒(méi)有那么重的思想負(fù)擔(dān),他們選擇 Python 可能是因?yàn)樗拇a更 Beauty ,遠(yuǎn)比他們以前寫的"意大利面條"式的PHP,ASP 代碼要干凈的多。
    無(wú)論是 python, 還是 Ruby 這些非主流程序語(yǔ)言開發(fā)的框架,使用起來(lái)都異常的簡(jiǎn)便,他們可謂是真正從程序員角度考慮的框架。為什么 Ruby 一出,攪的 Java 的世界一片混亂,我想原因還是出在 Java 這里,當(dāng) Java 程序員想當(dāng)然地認(rèn)為程序開發(fā)應(yīng)該如此麻煩的時(shí)候,Rails 的出現(xiàn)讓他們立刻覺(jué)得被這些所謂的 Java 流行框架和 Sun 給欺騙了,這種欺騙是如此之深,以至于他們中間有的人"頭也不回"的離開了 Java, 轉(zhuǎn)而攻擊 Java 的種種不是。這其中比較有名的人就是 Bruce Tate ,這位老兄寫了兩本轟動(dòng) Java 世界的書,Spring: A Developer's Notebook 和 Better, Faster, Lighter Java (該書可是獲得 Jolt 大獎(jiǎng)的,恰好我還都讀過(guò)),隨著 Rails 的流行,這位仁兄立刻叛逃出 Java 陣營(yíng),寫了 Beyond Java 一書,著重介紹了一些非Java 框架,比如 Smalltalk 的Seaside, 和 Rails。
    Java 為什么這么復(fù)雜,我想了很久,得出這么個(gè)結(jié)論:這是因?yàn)?Sun 希望它那么復(fù)雜。為什么這么說(shuō)呢?Sun 不是一個(gè)好的軟件公司,它最擅長(zhǎng)做的是制定規(guī)范,這很類似Java 編程中的 Interface, 經(jīng)常編寫 Java 程序的人,會(huì)發(fā)現(xiàn) Interface 可能是出現(xiàn)最多的一個(gè)詞匯了,任何框架中都充滿了Interface —接口,大多數(shù)編程書都推薦面向接口編程(當(dāng)然這不是Java的錯(cuò),是設(shè)計(jì)模式要求的,不過(guò) Java 將此發(fā)揮的)。首先定義接口,然后針對(duì)接口編寫不同的實(shí)現(xiàn),至少提供默認(rèn)的實(shí)現(xiàn)。Sun 也是如此,看看 J2ee 的規(guī)范包含了多少 J 打頭的技術(shù), JDBC,JNI,JCA,JDO,JPA .... ,現(xiàn)在的 JCP 組織更加如此,每隔一段時(shí)間,就有大量的規(guī)范問(wèn)世,Draft 的,還是 Final 的,充斥著Java 世界,這是 Sun 希望的, 每定義一個(gè)規(guī)范,就會(huì)有很多廠商來(lái)實(shí)現(xiàn)它,Java 的軟件市場(chǎng)就做大了,這樣 Sun 就可以靠授權(quán),認(rèn)證拿更多的錢,你看 Sun 的股票那么低迷,而卻擁有那么雄厚的流動(dòng)資金,原因再明白不過(guò)了,只要 Sun 還擁有 Java ,它就擁有了一切。