轉載自:http://blog.csdn.net/g9yuayon/archive/2006/09/18/1236675.aspx
這周讀到三篇博客帖子。把它們串在一塊兒讀,對我們的職業(yè)發(fā)展非常有教育意義。
一篇是Thoughtworks前員工Ravi Mohan寫的,《但是馬老大,商業(yè)編程就是無聊》。Martin Fowler在一篇帖子里說,編寫企業(yè)軟件不光是搗騰數(shù)據(jù)。并不是只有解決算法問題,操縱硬件,和應用大量數(shù)學才有意思。關心顧客(馬丁所謂的客戶親和力),全力讓自己的軟件為客戶帶來商業(yè)利益也是挑戰(zhàn)所在,趣味所存。Ravi在帖子里不以為然,認為不管Martin Fowler怎么辯白,商業(yè)編程無趣是不爭的事實。不信可以看看人心所向。從來只見有天賦的程序員屁顛屁顛地去開發(fā)編譯器,操作系統(tǒng),TCP/IP stack, 大規(guī)模并行系統(tǒng),高性能服務器,游戲引擎等系統(tǒng)級軟件。哪怕優(yōu)秀的商業(yè)軟件程序員也無限渴望去開發(fā)系統(tǒng)軟件。相反,從來沒見那個能靠系統(tǒng)開發(fā)軟件掙錢的牛程無限向往開發(fā)商業(yè)軟件。這好比柏林墻沒倒前,只見東德人拼死沖到西德去,沒見有什么西德人拼死要到東德去的(憤青們就不用和我爭論東德怎么好了哈。Ravi自己的例子而已。東德好不好關我P事)。Ravi還說,哪怕Thoughtworks內(nèi)部員工也無限向往系統(tǒng)編程。每次Thoughtworks討論把生意擴展到嵌入式編程和非其它非企業(yè)計算領域時,Thoughtworks的員工們都士氣高漲。然后Ravi引了老憤青Paul Graham的話,號稱集中精力攻克困難但定義清晰的問題完全是出于自我保護的需要,因為成天解決瑣碎問題不能讓人學到任何東西,只能讓人變蠢。做系統(tǒng)編程給人的滿足感比做瑣碎的商業(yè)編程大多了。Ravi進一步談到Martin Fowler其實也承認商業(yè)軟件開發(fā)遇到的問題太過隨意,很多都是為了滿足客戶莫名其妙的要求,不會帶給程序員成長的機會。他尤其贊同Martin說的“商業(yè)編程的真正挑戰(zhàn)在于找到軟件中能給客戶的生意帶來切實利益的東西。要做到這點,我們需要扎實的行業(yè)知識和技術功底。”。可惜的是,大多數(shù)商業(yè)軟件程序員處于尷尬的境地:論行業(yè)知識不如行業(yè)專家。論編程技術不如真正的hacker(黑客這個詞已經(jīng)等同于cracker了,所以我還是用原文)。當然,這種尷尬情況在其它編程領域也存在,但癥狀沒有那么嚴重。搞笑的是,Ravi說其實Martin算是商業(yè)程序員里比較幸運的,總有機會和牛人們合作,找出他的代碼到底有什么商業(yè)價值,而這和普通的“編碼人”有本質(zhì)區(qū)別。這也是為什么外包的工作如此無趣的原因:商業(yè)方面的分析已經(jīng)定了。編碼的框架已經(jīng)定了。承接外包項目的程序員發(fā)揮余地實在有限,更不用說趣味二字了。作者的要點是,要想讓自己的工作變得有趣有意義,要么就下大力氣變成業(yè)務專家。要么就變成可以玩兒轉系統(tǒng)的編程高手。其實系統(tǒng)編程高手也是業(yè)務專家。只不過他們的業(yè)務領域恰好和技術領域重合。
?
第二篇帖子是Reg Braithwaite的一篇帖子,《商業(yè)編程沒有那么難?》。這篇帖子同時引了Reganwald另外一篇短文,《怎么讓編程變得困難》。Reg在兩篇文章里都談到了同樣的一個觀點:商業(yè)編程從表面上看來都是廣泛而膚淺的。程序員有大量問題要解決,但沒有什么問題特別深刻。哪怕你用最新的技術都不足以讓普通的商業(yè)編程變得更有意義。用Reg的話來說就是用Ruby On Rails編程好比聆聽Jaco Pastorius,什么人都能干。只有在復制Jaco的盛宴時才能真正獲取學習經(jīng)驗。還是以RoR為例。用RoR遠遠不夠(其實不用也無所謂)。仔細研究RoR的代碼,學習怎么設計自己的DSL才是正道。在《商業(yè)編程沒有那么難?》里面,Reg舉了三個例子。一個是從信用卡的使用情況實時判斷被使用的信用卡是否被盜。一個是實時卡車調(diào)度問題,能針對路礦和遞送要求優(yōu)化卡車路線和發(fā)車時間表。還有一個是銷售輔助系統(tǒng),能學習潛在客戶的特質(zhì),幫助銷售決定是否跟進。嗯,兩個模式識別和學習問題,一個調(diào)度和網(wǎng)絡流優(yōu)化問題。都是非常有挑戰(zhàn)性的問題。都可以讓一個普通的商業(yè)項目變得趣味十足(當然也能讓我們的壓力陡增)。當然,如果你對每月一張固定的工資單感到滿意,知道自己的工作馬上就要外包給西貢的大學生也能安然入睡,就不用自找麻煩了。作者的要點就是:挑戰(zhàn)不是別人給的,而是在勃勃雄心驅(qū)使下,你自己找的。也許以后做每個項目時,我們應該給自己找點有挑戰(zhàn)性的問題,激發(fā)自己的潛力。不然做的項目再多,也不過浪費人生。
?
第三篇帖子是XML發(fā)明人Tim Bray的一篇短文。在Tim的努力下,JRuby的兩個主程加入了Sun。新聞公布后Tim收到幾乎所有JVM語言作者的詢問,問為啥子Sun獨選了JRuby那倆哥們,能不能給其它JVM語言也提供支持。于是Tim談了JRuby受到重視的原因。首先,沒人要求,沒人給錢的情況下,這倆老大投入大量精力,運用各種技術把半死的JRuby項目盤活了。其次,JRuby背后有活躍的社區(qū)(大半因為Rails的風潮)。第三,他們善于交流,到處做報告,做讓人印象深刻的演示,展示項目進展。第四,他們不斷發(fā)放高質(zhì)量的代碼。每個版本都較上個版本有長足進步。也就是說,他們證明了自己的能力,展示了自己的領導才能,更重要的是他們不斷交出優(yōu)秀的作品。職業(yè)培訓里常說要想事業(yè)順利,要做到兩點,搞出事(make things happen),和搞定事(make things done)。JRuby是個很好的例子。
?
帖子的教育意義很明顯,俺就不用在羅嗦了吧?