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