程式思考:“主動程式員”vs“被動程式員”

來源:互聯網
上載者:User
我覺得這個世界上的程式員可以分為兩種:"主動程式員"和"被動程式員"。"主動程式員"可以自己選擇開發方式,開發語言和架構,"被動程式員"被動接受公司指定的語言和開發方式。其實在現實生活中,這種分類並不絕對,一個程式員可能在不同的時候擔當不同的角色,"被動程式員"也可能享有有限的主動權。這麼分類並不以程式員本身的知名度,財富多少,是否自己創業還是受雇於人有關。David Heinemeier Hansson 受雇與 37 Signal ,但是仍然可以自己選擇建立自己的 Rails 架構來完成項目,他應該算是個"主動程式員"。Firebird 資料庫的領導者同時也是 Interbase 資料庫的創始人 Jim Starkey 將自己的公司賣給了 Mysql AB 而不得不給 Mysql 幹活,從某方面說,他應該是個"被動程式員"。大多數第三世界國家的程式員應該屬於"被動程式員",他們編程只是為了一份養家糊口的工作,他們無權選擇自己喜歡的程式設計語言或者架構,因為這是公司給他選擇的,因為如果選了其他,他可能就找不到工作了。曾經有個即將離職的同事讓我給他推薦一個比較好的編程架構,可以很容易完成一個網站的製作,我給他推薦了 Zope, 還有 Rails, 他聽我的介紹覺得不錯 ,當我告訴他必須學習 python 和 Ruby 程式設計語言時,他顯得很驚愕,"那能找到工作嗎?"。這話其實也表達了大多數國內程式員的想法。看看招聘網站就知道,現在最需要的程式員是 Java 程式員,最需要瞭解的架構是 Struts。如果不會你很難得到面試的機會,所以就算你不會也要在自己的簡曆中"修飾"一下。

有些自己創業的人可以自己選擇喜歡的程式設計語言和架構,當然那畢竟是少數。如果我能夠選擇的話,我肯定不用 Java 來做網站應用程式。因為它完成一個簡單的工作太麻煩了,很難快速適應需求的變化。當然我也不會去用 PHP ,因為我已經習慣了物件導向的編程方式了。 我發現一個奇怪的現象:大多數轉向學習 Ruby on rails 架構的人都是來自 Java 陣營的程式員,而轉向Python 架構Zope,django 的程式員大多有 ASP,PHP 背景。因為 Ruby 是一個真正的物件導向的語言, 它同時具備了指令碼語言的特點,而 Python 首先是一個指令碼語言,它具備了一些 OO 的特徵。Java 程式員 很難忍受走回頭路,所以他們選擇了一個比Java更物件導向的語言 Ruby ,而PHP,ASP程式員沒有那麼重的思想負擔,他們選擇 Python 可能是因為它的代碼更 Beauty ,遠比他們以前寫的"意大利麵條"式的PHP,ASP 代碼要乾淨的多。 無論是 python, 還是 Ruby 這些非主流程式語言開發的架構,使用起來都異常的簡便,他們可謂是真正從程式員角度考慮的架構。為什麼 Ruby 一出,攪的 Java 的世界一片混亂,我想原因還是出在 Java 這裡,當 Java 程式員想當然地認為程式開發應該如此麻煩的時候,Rails 的出現讓他們立刻覺得被這些所謂的 Java 流行架構和 Sun 給欺騙了,這種欺騙是如此之深,以至於他們中間有的人"頭也不回"的離開了 Java, 轉而攻擊 Java 的種種不是。這其中比較有名的人就是 Bruce Tate ,這位老兄寫了兩本轟動 Java 世界的書,Spring: A Developer's Notebook 和 Better, Faster, Lighter Java (該書可是獲得 Jolt 大獎的,恰好我還都讀過),隨著 Rails 的流行,這位仁兄立刻叛逃出 Java 陣營,寫了 Beyond Java 一書,著重介紹了一些非Java 架構,比如 Smalltalk 的Seaside, 和 Rails。

Java 為什麼這麼複雜,我想了很久,得出這麼個結論:這是因為 Sun 希望它那麼複雜。為什麼這麼說呢?Sun 不是一個好的軟體公司,它最擅長做的是制定規範,這很類似Java 編程中的 Interface, 經常編寫 Java 程式的人,會發現 Interface 可能是出現最多的一個詞彙了,任何架構中都充滿了Interface —介面,大多數編程書都推薦面向介面編程(當然這不是Java的錯,是設計模式要求的,不過 Java 將此發揮的最好)。首先定義介面,然後針對介面編寫不同的實現,至少提供預設的實現。Sun 也是如此,看看 J2ee 的規範包含了多少 J 打頭的技術, JDBC,JNI,JCA,JDO,JPA .... ,現在的 JCP 組織更加如此,每隔一段時間,就有大量的規範問世,Draft 的,還是 Final 的,充斥著Java 世界,這是 Sun 希望的, 每定義一個規範,就會有很多廠商來實現它,Java 的軟體市場就做大了,這樣 Sun 就可以靠授權,認證拿更多的錢,你看 Sun 的股票那麼低迷,而卻擁有那麼雄厚的流動資金,原因再明白不過了,只要 Sun 還擁有 Java ,它就擁有了一切。Sun 希望 Java 變得複雜,就如同程式員希望 Perl 代碼難看一樣,這樣做是可以帶來好處的。Java 的複雜性也帶來了產業鏈上其他行業的繁榮,比如諮詢,在 Php ,Perl 流行 Internet 的年代,網站開發似乎還不需要諮詢師,包括 C/S 盛行的時候,企業開發也不需要諮詢師,然而隨著 J2EE 逐步主宰企業級開發,諮詢行業也開始興旺起來。企業大把大把的把錢投入到開發諮詢中,究竟效果如何,不得而知。我想對大多數程式員,尤其是那些有自己想法的程式員來說,請求諮詢公司,還不如自己去瞭解來的清楚。軟體開發諮詢師在我看來,有點象是"律師"—"代表貪婪的公司,讓這個世界變得更糟糕一些"(中 Alex 的對白)。如果說國外的諮詢師是希望通過主觀的努力來解決客觀存在的開發複雜性的話,那麼國內的諮詢行業可能把原本複雜的軟體開發變得更加複雜了。我不相信他們,我寧可選擇某個軟體的培訓,而不希望有人來從頭到尾指點你如何開發,因為國內諮詢師的水平比你從書本上瞭解的高不到哪裡去,公司又何必花費這筆冤枉錢呢。

那麼如果你是個"主動程式員",你會跟著 Sun 的指揮棒走嗎? 我想離開 Java 世界,你選擇的機會應該很多,但是前提是:你願不願意離開 Java 。因為大多數人覺得改變現狀其實並不是個好事情,學習一個新語言和架構意為著你過去所有的經驗就消失了,這其中有風險。對大多數程式員 來說,編程其實就是份工作,跟賣便當,裝機器沒什麼區別,只要搞好本職工作就可以。試圖改變現狀的人很痛苦,瞭解差異的人也是如此,就如同 Neo 在接受紅藥丸和藍藥丸。 我在當年學習 Perl 的時候曾經買過一本《Learning perl》,書的作者曾經這麼說,學習 Perl 是為了讓自己把更多的時間用在去滑雪, PHP 的創始人 Rasmus Lerdorf 也曾經這樣表示過,他希望自己能夠減少盯著電腦的時間,可是這麼多年過去了,他發現自己還是要繼續盯著該死的電腦。其實我對選擇架構語言也並沒什麼興趣,我只是希望能夠以簡單的方式完成工作,而把時間省下來去聽聽音樂,看看電影。實際上我跟不希望改變現狀的人沒什麼不同,他們不希望學習新的東西,因為現有的東西很熟悉了,學習新架構,還不如把時間放到玩上去,我的目的一樣,我學習只是希望自己的工作更輕鬆一點,這樣可以用更多的時間來玩。所以每當我看到各種技術論壇上充斥著Java, .net , ROR ,Python 之類的爭吵,我都覺得很好笑。其實為了維護一個語言而爭吵最沒有意義。程式設計語言就和英語,電腦一樣,就是個工具,選擇它們只是為了儘可能簡單地完成工作,提高生活品質。為了語言而語言,為了架構而架構都是沒必要的。"主動程式員"可以選擇自己的方式來工作,這是大多數人做不到的。如果有可能,我也希望做一個"主動程式員"。

來源:http://likenote.blogspot.com/2006/09/vs.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.