隨筆 - 59, 文章 - 4, 評論 - 184, 引用 - 7
          數據加載中……

          重讀溫博格

          自工作以來,我就養成了睡前讀書的習慣,這一年在武漢,實在買不到一些好書,每次回北京總要帶很多書過來,最近再次面臨回京購書的局面,在回京之前總不能閑著,于是從去年看過的書中亂翻,以第一感覺來決定自己最想重讀那本書,結果選中了溫博格的《成為技術領導者-解決問題的有機方法》
          兩年前,當一位同窗好友集齊全套的溫博格系列的時候,我曾很不屑的說他:一個人寫那么多書,質量顯然沒保證,買他作甚?現在看來,當時確是井底之蛙了,溫博格的書中少有瑕疵,尤其是后期作品,讀來總是讓人意猶未盡。
          過去的幾年里,我看過很多書,無論是早期GOF的設計模式,Martin Fowler的企業架構系列,還是Rod的J2EE開發厚厚的兩卷本,甚至我最喜歡的POSA系列,雖然都會給人技術方面成長的感覺,但最好情況下也只是讓我感覺到技藝的變化。
          而管理方面的書籍,則大多走入兩個極端,要么是學院式的分析解構,要么是江湖術士式的技巧集合。就像過去我曾很喜歡DEBORAH G. ANCONA的那本組織行為學和曾士強的中國式管理,但現在看來,DEBORAH關注組織多過于關注團隊,而曾士強則過于強調中國人的心理情結,實用歸實用,但可能不太適合技術人員的口味,讀他的書讓人感覺有些厚黑,讓我常常想到一句俗語:人老精,鬼老靈。

          而溫博格的寫作方式,如同Ken在英文版序中所說,會引起大量的思考,對溫博格的文字的思考,思考對溫博格文字的思考,以及對自身思考的思考....通過溫博格的書,讓我體會到的事是,讀書,有時候是為了實用,而的有時候,則純粹是為了過癮。
          本書中溫博格的MOI模型,實際上不是一個行為指導手冊,而是帶來了更加宏觀和可思考的空間,讓你對自己在團隊中的行為更加有目的性,也更加有效。我仍然記得兩年前,上述同窗好友在某技術論壇發表的一篇名為《任務分解和任務分配》的帖子,現在看來,在該貼中提出的Effective Communication仍然太過于關注技術視角了,而現在,我則更加注重人文關懷,包括對技術架構。這一點,在本書第十章得到了精彩的闡述。

          下面的內容,來自于本書第三章摘錄

          各種各樣的想法是解決問題的核心,沒有想法就不可能找到解決方案,但想法太多又會雜亂無章,領導者需要對想法的交流進行有效的管理。以下是領導者常用的12種典型的管理想法交流的方法以及點評。
          ??? >? 為團隊提供一個聰明的想法。盡管這是最顯而易見的領導者行為,而且有時新的想法的確會起到關鍵性作用,但事實上真正全新的想法是非常罕見的。比發掘一個新的聰明想法更重要的是創建一個合適的環境,是能夠解決問題的想法一旦提出就能被大家意識到。
          ??? >? 鼓勵和借鑒有用的舊想法。盡管有些領導者不愿意承認,但他們實際上是根深蒂固的模仿者。最優秀的領導者不僅承認這一點,而且將其視為一門藝術而精心培育。
          ??? >? 認真完善團隊成員提出的想法。大部分解決問題型領導者在完善一個想法上花費的時間比提出這個想法多上百倍的精力。
          ??? >? 放棄自己的想法并支持團隊采納的想法,但只有當每個成員都充分了解你的想法時才予以放棄。放棄或保留你的想法是相當簡單的,難的是要做到理智和公正。
          ??? >? 盡管時間壓力很大,仍然不要吝嗇花時間聽其他人解釋他們的想法。迫于時間壓力,大部分想法沒有經過充分理解就被否決了,事實上,其中一些想法可以為我們節省的時間是花在了解錯誤想法上時間的上百倍。
          ??? >? 檢驗別人提出的想法。在任何給定的環境中,絕大部分的想法都是沒用的,但到底哪些才是有用的呢?領導者要做的就是分析和檢驗這些想法。
          ??? >? 為了保持想法的交流,不要輕易否定團隊成員的想法。盡管檢驗這些想法是非常重要的,但幾乎沒有什么想法會危險到使我們來不及重新考慮一下我們的第一反應,就必須立刻否定。
          ??? >? 如果你不得不否定一個想法,那么一定要明確,你所否定的只是這個想法,而不是提出這個想法的人。解決問題型領導者一直清楚地知道,并不是所有的想法對每個問題都有幫助,但他們更知道,團隊中的每一個成員都是有用的。
          ??? >? 在給出你的想法之前要先對它進行檢驗。沒有人可以聰明到提出所有建設性的想法,而一個喋喋不休地發表自己未經仔細考慮的想法的人卻能有效地阻止其他人給出自己的想法。
          ??? >? 當時間和人力吃緊時,不要再考慮新的想法而應該專注于現有的想法。
          ??? >? 鼓勵團隊成員放棄以前曾經成功過,但并不適用于現在情況的想法。
          ??? >? 如果一個已被否定的想法對問題的其他部分有價值,就應該重新采納它。其實沒有絕對不好的想法,之所以“不好”只是因為它們出現在不適當的地點或時間。

          posted @ 2006-03-18 06:44 fisher 閱讀(1344) | 評論 (1)編輯 收藏

          歡迎加入“osgi觀察者”googlegroup

          去年年底,osgi R4發布,eclipse建立equinox項目,標志著以osgi為核心的組件管理模型正式進入使用階段,鑒于今年年初jsr291的推出,osgi正式走向java世界的前端,遂建立osgi觀察者group,希望能同所有關心和喜愛osgi的國內技術人員共同進步。

          加入osgi觀察者:

          Google Groups Subscribe to osgi觀察者
          Email:
          Browse Archives at groups.google.com

          posted @ 2006-03-06 13:37 fisher 閱讀(1020) | 評論 (1)編輯 收藏

          善待自己每一天

          最近的忙碌加上精神壓力,讓我患上了胃病,每天吃完飯都會難受好一陣子,給自己學醫的兒時好友打電話,被勸之:“人生苦短,要學會善待自己每一天”。遂發此文為戒。

          附一篇BJUG中Tin發的文章《白天紐約黑夜巴黎》
          -------------------------------
          白天紐約黑夜巴黎
          -------------------------------
          【王文華/文】

          我在趕些什么?我耗盡青春用盡全力,拼命追求身外之物,結果我真的比別人有錢、有名嗎?更重要的,我真的因此而快樂嗎?遠方有廣闊的地平線,為何我還在原地搖過時的呼拉圈?

          紐約和巴黎,代表了我人生的兩個面向。紐約是白天,巴黎是黑夜。紐約是前半生,巴黎是下半場。

          三十五歲之前,我認定紐約是世上最棒的城市。我在加州念研究所,畢業后迫不及待地去紐約工作。一做五年,快樂似神仙。我愛紐約的原因跟很多人一樣:她是二十世紀以來世界文化的中心。豐富、方便??恐罔F和出租車,你可以穿越時間,前后各跑數百年。人類最新和最舊、最好和最壞的東西,紐約都看得見。

          所以在紐約時,我把握每分每秒去體會。白天,我在金融機構做事,一天十小時。晚上下了班,去NYU學電影,一坐四小時。在那二十多歲的年紀,忙碌是唯一有意義的生活方式?;钪?WBR>,就是要把自己榨干,把自己居住的城市,內外翻轉過來。

          這種想法并不是到紐約才有的。其實從小開始,臺灣人就過著紐約生活。紐約生活,充滿新教徒的打拚精神和資本主義的求勝意志。相信人要借著不斷努力,克服萬難、打敗競爭?;钪哪康?WBR>,是更大、更多、更富裕、更有名。權力與財富,是紐約人的兩個上帝。而能幫你走進天堂的鞋,就是事業、事業、事業。

          在這種弱肉強食的生活方式,為了保持領先,每個人都在趕時間、搶資源。進了電梯,明明已經按了樓層的鈕,那燈也亮了,偏偏還要再按幾下,彷佛這樣就可以快一點。出了公司,明明已經下班了,卻還要不停講手機,搖控每一個環節。在紐約,為達目的,可以不擇手段,甚至趕盡殺絕。在紐約,沒有壞人,只有失敗者。

          臺灣,是不是也變成這樣?

          每一件事,都變成工作。上班當然是工作,下班后的應酬也是工作。有人談戀愛是在工作,甚至到酒店喝酒、KTV狂歡,臉上都殺氣騰騰,準備拚個你死我活。

          我曾熱烈擁抱這種生活,并著迷于這種因為燒烤成功而冒出的焦慮。這種焦慮讓我坐在椅子邊緣,以便迅速地跳起來閃躲明槍暗箭。這種警覺性讓我練就了酒量和膽量、抗壓性和厚臉皮。但也養成了偏執和倔強、優越感和勢利眼。在紐約時我深信:能在這里活下來的,都是可敬的對手。黯然離開的,統統是輸家。人生任何事,絕對要堅持到底。半途而廢的,必定有隱疾。在這不睡的城市,每天我醒來,帶著人定勝天的活力,跟著法蘭克辛納屈唱〈紐約?紐約〉:「如果你能在紐約成功,你可以在任何地方成功!」是的,在紐約,現代的羅馬競技場,我要和別人,以及自己,比出高低。

          這套想法,在我三十五歲以后,慢慢改變。

          第一件動搖我想法的,是父親的過世。我父親一生奉公守法、與人為善。毫無不良嗜好,身體健康地像城堡。七十二歲時,他得了癌癥、引發中風,經歷了所有的痛苦和羞辱。他一生辛勤工作、努力存錢、堅信現在的苦可以換得更好的明天。我們也相信一分耕耘、一分收獲,用在紐約拚事業的精神照顧他。但兩年的治療兵敗如山倒,最后他還是走了。父親逝世的那天,我的價值系統崩潰了。我一路走來引以為傲的「紐約精神」,沒想到這么脆弱。

          不止在病床,也在職場。當我在企業越爬越高,才發現「資本主義」在職場中也未必靈驗。上過班的都知道,很少公司真的是「開放市場」、「公平競爭」。大部分的同事都覺得你不是朋友、就是敵人。職場上偉大的,未必會成功。成功的,有時很渺小。很多人一輩子為公司鞠躬盡瘁,最后得到一支紀念筆。那些卷款潛逃的,反而變成傳奇。

          慢慢的,我體會到:世上有一種比「善有善報、惡有惡報」更高、更復雜的公平。人生有另一種比「功成名就」更幽微、更持久的樂趣。那是沖沖沖的美式資本主義,所無法解釋的。

          我能在哪里找到那種公平和樂趣呢?我想過西藏、不丹、非洲、紐西蘭。然后,我注意到法國。

          住紐約時,法國是嘲諷的對象。身為經濟、科技、和軍事強權的美國,談起法國總是忍不住調侃一番。法國是沒落的貴族,值得崇拜的人都已作古。法國人傲慢,高稅率讓每個人都很慵懶。動不動就罷工,連酒莊主人都要走上街頭。

          搬回臺灣后,普羅旺斯、托斯卡尼突然流行。我看了弗朗西斯?梅思的《美麗的托斯卡尼》,其中一句話打動了我:「在加州,時間像呼拉圈。我扭個不停,卻停在原地。在托斯卡尼,我可以在地中海的陽光下,提著一籃李子,逍遙地走一整天?!?BR>
          是??!我在趕些什么?我耗盡青春用盡全力,拚命追求身外之物,結果我真的比別人有錢、有名嗎?更重要的,我真的因此而快樂嗎?遠方有廣闊的地平線,為何我還在原地搖過時的呼拉圈?

          當我重新學習法國,我發現法國和美國代表兩種截然不同的生活方式。美國人追求人定勝天,凡事要逆流而上。法國人講究和平共存,凡事順勢而為。紐約有很多一百層的摩天大樓,巴黎的房子都是三百年的古跡。紐約不斷創新,巴黎永遠有懷舊的氣息。巴黎人在咖啡廳聊天,紐約人在咖啡廳用計算機。紐約有人潮,巴黎有味道。紐約有鈔票,巴黎有蛋糕。

          不論是政府或個人,法國人都把精神投注在食、衣、住、行等「身內之物」。就讓美國去做老大哥吧。要征服太空、要打伊拉克、要調高利率、要發明新科技,都隨他去。法國人甘愿偏安大西洋,抽煙、喝酒、看足球、搞時尚。當美國人忙出了胃潰瘍,法國人又吃了一罐鵝肝醬。

          講到吃,法國有三百種起司、光是波爾多就有五十七個酒的產區。晚上六點朝咖啡廳門口一坐,一杯紅酒就可以聊三個小時。九點再去吃晚餐,一直吃到隔天凌晨。他們在吃上所花的時間,跟我們上班時數一樣。但諷刺的是:他們沒有「All
          You Can Eat」。

          吃很重要,但也要會挑時間,朋友介紹我去試一家法國餐廳,提醒我他們禮拜二、四晚上休息?!笧槭裁矗俊刮覇?。他說:「因為主廚要回家看足球。」

          聰明的主廚懂法律。法國法律規定一周工作最多三十五小時,大部分的人一年有五周的假期。而美國人把加班當作自己有價值的表示,度假時還拿著手機回E-mail。法國人比美國人會玩。每年六月的巴黎音樂節,從午后到深夜,幾百場露天音樂會在各處同時舉行,人多到地鐵都暫停收費。每年十月的「白夜」,平日入夜就打烊的店面,徹夜營業到清晨七點。每年夏天,巴黎市政府在塞納-馬恩省河右岸布置了三段、總長一.八公里的人工海灘。細砂、吊床、躺椅、棕櫚樹,自然海灘有的景致這里都有,讓沒有錢去海邊度假的民眾,也可以享受到海灘風光。

          當然,法國這么深厚的文化,不可能只從吃喝玩樂而來。美國人讀書,為了考證照。法國人讀書,為了搞情調。每年十月的讀書節,大城市的火車站內,民眾輪流上臺朗誦詩句。書店營業到天明,整晚有現場演奏的樂曲?!该朗硶埂惯x在銅臭味最重的證券交易所舉辦。小鎮書展的書直接「長」在樹上,讀者必須爬到樹上,把書摘下來品嘗。

          一直跟著美國走的臺灣人,會心動嗎?

          我心動了。十一月我到巴黎,一位法國朋友來接待我。臨走前我問他:「明天你要干嘛?」

          「我要去銀行?!?BR>
          「然后呢?」我問。

          「我不懂你的意思......」

          對我來說,「去銀行」是吃完午飯后跑去辦的小事。對法國人來說,這是他一天全部的行程。法國人總是專心而緩慢的,每天把一件小事做好。

          這樣的生活,對美國或臺灣人來說,實在是太頹廢了。的確也是。法國失業率接近10%,高稅率讓雇主寧愿打烊休息,免得幫員工繳稅。巴黎鬧區紙醉金迷,但郊區的少數民族卻沒有工作機會。這些都是黑暗面,但對于每日被強光烤焦的臺灣人,陰暗也許提供了喘息空間。生命的終點都一樣,有錢人的喪禮只是比較多人上香。不斷的追趕只是提前沖向謝幕,為什么不把時間花在慢慢為生命暖場?你不需要一輩子鞠躬盡瘁、死而后已。你可以偶爾伸伸懶腰、安步當車。

          我從巴黎回來,臺北并沒有改變。關了兩周的手機再度響起,一通電話找不到我的人會連續狂call十通。和朋友見面,他很關心地問我:「好了,你現在工作也辭了、歐洲也去了,接下來有什么projects?」

          「Projects」?多么紐約的字眼。

          我真想說:「好好生活,不就是人生最大的project?」但我知道在熙來攘往的臺北街頭,在不到四十歲的年紀,這樣說太矯情了。況且,我今天之所以有錢有閑享受法式生活,不也正因為我曾在美式生活中得到很多利益?我仍熱愛工作、熱愛紐約,但已不用像二十歲時一樣亦步亦趨、寸步不離。

          所以我說:「我還是會早起,白天努力寫作。但到了晚上,我想關掉手機?!?BR>
          世界少了我,其實無所謂。但我少了我,還剩什么?

          他笑一笑:「你這是用紐約來過白天,用巴黎來過黑夜。」

          唉,他講得真好!這應該是一個完美的妥協吧。也許有一天,我能創造自己的「白夜」,讓白天和黑夜融合在一起。但我還沒到那個境界。

          「明天星期一,你要干嘛?」他問。

          「我要去銀行?!?BR>
          「然后呢?」

          我張大眼睛,停頓了一下。

          「然后呢?」他追問。

          「然后我會摩拳擦掌,認真地寫一篇文章?!?BR>

          我們是不是也應該學一學法國人呢?提高些生活質量,注意身體。

          posted @ 2006-02-28 11:04 fisher 閱讀(1016) | 評論 (4)編輯 收藏

          MINA vs. QuickServer

          很久沒更新blog了,實在太忙,今天看到有朋友在我去年的blog《MINA is a good framwork 》中回復提到比較一下MNA和QuickServer,遂寫一篇小文:

          First for all, QuickServer is licensed as LGPL, and MINA as ASL

          從我個人角度而言,去年看過QuickServer的源碼,我在項目中采用的每一個框架或類庫都會做綜合評價,通常不會是一個原因導致我采用或沒有采用某個庫或框架,具體最后沒有采用QuickServer的原因忘記了,但是當時給我的總體感覺是,QuickServer雖然很方便,但不會讓我在架構上得到新的好處。而它最大的優點則是,支持JDK1.3(如果沒記錯的話),另外就是License的問題

          下面看一看來自TrusinLee的評論:

          Thank for the information about another network application framework.  I found a few differences:

          * QuickServer supports blocking mode.  (MINA supports only non-blocking mode, but you can make your operation block at your will.)
          * QuickServer provides GUI-based admin.  (MINA doesn't have one yet, but will have full JMX support soon, which is a standard.)
          * QuickServer uses java.util.logging.  (MINA uses SLF4J, which is a safe replacement of commons-logging.)
          * QuickServer uses its own XML settings.  (MINA provides Spring framework integration instead.)
          * QuickServer can specify maximum number of clients allowed.  (MINA can do this using a filter, but not implemented by default.  Of course, this will be implemented as an overload prevention filter.)
          * QuickServer team has one crew.  (MINA has three crews.)
          * QuickServer project started in 2003.  (MINA started in 2005.)
          * QuickServer has a difference event handler interface from MINA.  (You'll have to compare it by yourself.  IMHO, MINA has one simple enough handler which covers all QuickServer provides.)
          * QuickServer doesn't support UDP at all.  (MINA does)
          * QuickServer doesn't support client-side API at all.  (MINA does)
          * QuickServer integrated authentication and text protocol in its core.  (MINA didn't and they are considered as a cross-cutting concern that a filter should take care of.  IMHO, MINA is more extensible here.)


          至于對MINA更詳細的介紹,可以看看我去年翻譯的MINA的Tutorial

          MinaTutorialInChinese

          MINA的應用,在MINA的Testimonials中有兩個項目:
          開源Flash server:red5
          http://ludonet.leonardo.it/的game server
          還有,就是MINA所在的項目,Apache的LDAP

          posted @ 2006-02-24 21:58 fisher 閱讀(6234) | 評論 (18)編輯 收藏

          一個SWT Application如何轉職成為RCP Appliactioin

          昨天david問到如何將舊的swt應用轉成一個RCP應用,昨晚胃疼難忍,于是草草說了一下,就早早上床休息了,早上起來又想起這件事情,遂在這里說一下思路
          下面說一下我的思路
          (注:以下觀點未經證實,請自行斟酌使用)

          一個舊的SWT應用,應該都是有一個main函數里初始化一些UI組件,然后run一個事件循環

          在RCP中,由于是基于Eclipse的插件體系,也就是說,使用我前面那篇文章發布的RCP Application,是可以直接發布成Eclipse插件的
          所以,對于UI組件的控制也要遵循Eclipse的插件體系的代碼要求,看看Hello RCP模板中的幾個類:ApplicationActionBarAdvisor、ApplicationWorkbenchAdvisor、ApplicationWorkbenchWindowAdvisor以及RCPPlugin,想起了什么?對,OSGI

          我們只要將原swt的main函數中初始化的ui組件,放入到這幾個Advisor中進行初始化

          將下拉菜單項的ui組件的初始化工作放入到ApplicationActionBarAdvisor的如下方法:

              protected void makeActions(IWorkbenchWindow window) {
              }



              
          protected void fillMenuBar(IMenuManager menuBar) {
              }


          將其他UI組件初始化工作放入到ApplicationWorkbenchWindowAdvisor的如下方法:

              public void preWindowOpen() {

                  IWorkbenchWindowConfigurer configurer 
          = getWindowConfigurer();

                  configurer.setInitialSize(
          new Point(400300));

                  configurer.setShowCoolBar(
          false);

                  configurer.setShowStatusLine(
          false);

                  configurer.setTitle(
          "Hello RCP");

              }


          至于ApplicationWorkbenchAdvisor這個類,我想你一定想起了Eclipse中的Workbench概念
          在這里,可以定義當這個RCP作為plugin的時候的Worbench的透視圖的一些屬性。

          -----------------------------------

          最后,基于Eclipse3.1的product方式的RCP程序將獲得同Eclipse相同的插件體系支持
          也就是說:你的應用本身就是基于Eclipse Platform的,這樣,你的程序也可以接受插件插入了(如果你設計的好的話^_^)
          另外,還有其他很多好處,比如在線升級功能的自動綁定啊,幫助功能的使用啊等等
          想一想,你的程序將既能作為單獨的程序運行,又能作為Eclipse的插件運行,而且還跨平臺,think about it...
          So....try it now, you will get more

          posted @ 2006-01-17 11:02 fisher 閱讀(1748) | 評論 (0)編輯 收藏

          僅列出標題
          共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 景宁| 大安市| 壶关县| 唐海县| 天祝| 随州市| 海兴县| 丹巴县| 化德县| 马鞍山市| 安西县| 黄浦区| 法库县| 肥西县| 泊头市| 美姑县| 图片| 泸州市| 宜丰县| 鄂州市| 廉江市| 乌拉特前旗| 博罗县| 阿尔山市| 台中县| 宜都市| 兴海县| 梨树县| 泸溪县| 和平区| 余江县| 商洛市| 塘沽区| 容城县| 武义县| 滨州市| 枝江市| 闸北区| 石楼县| 富裕县| 绥宁县|