emu in blogjava

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評(píng)論 :: 2 Trackbacks

          http://chinese.joelonsoftware.com/Articles/FireAndMotion.html

          行進(jìn)中開(kāi)火


          作者: 周思博 (Joel Spolsky)
          譯: Siyan Li 李思延
          編輯: Paul May 梅普華
          2002年1月6日

          時(shí)不時(shí),總有一陣兒,我什么事也干不了。

          我也去辦公廳,東瞄瞄,西看看,每十秒鐘查一次電子郵件,網(wǎng)上逛一圈。也許干點(diǎn)兒象付運(yùn)通卡賬單之類不需要大腦的事。不過(guò)要回去嘩啦嘩啦寫(xiě)程序,可沒(méi)門兒。

          Tetris

          這種不出活的狀態(tài),一般通常會(huì)持續(xù)一兩天。在我的軟件開(kāi)發(fā)生涯中也有過(guò)幾個(gè)星期干不了活的時(shí)候。就像他們說(shuō)的,我不在狀態(tài),我進(jìn)入不了情況,我找不到組織。

          人人都有情緒波動(dòng),有的人溫和一些,有的響動(dòng)大點(diǎn)兒,也有的可以整個(gè)亂套。但不管怎么著,那段不出活期似乎總是跟憂郁有點(diǎn)兒關(guān)系。

          我不由得聯(lián)想到那些專家說(shuō),人們基本上控制不了自己吃什么。任何節(jié)食計(jì)劃都長(zhǎng)不了。大家總是悠回各自的正常體重。也許作為一個(gè)軟件工程師,我也不能控制什么時(shí)候最能出活。我唯一希望的就是發(fā)呆那段能被嘩嘩干活那段扯平,最終還能混碗飯吃。

          Go read The Onion for a while.

          自從我干上軟件開(kāi)發(fā)這一行起,我平均每天只有兩三個(gè)的高效時(shí)間。這真讓我頭大。我在微軟實(shí)習(xí)的時(shí)候,另外一個(gè)實(shí)習(xí)生告訴我,他每天12點(diǎn)上班,5點(diǎn)下班。5個(gè)鐘頭還包括午餐時(shí)間,但他的同事還對(duì)他特別滿意。因?yàn)樗傻幕畋纫话闳硕级唷F鋵?shí)我也一樣。我每天只有兩三個(gè)小時(shí)的高效時(shí)間。看著別人那么賣力的干,還有點(diǎn)不好意思。不過(guò)呢,我總是組里出活最多的。由此可見(jiàn),“人件理論”和極限編程都堅(jiān)持不加班,每周只干40小時(shí),還是有點(diǎn)道理的。他們都清楚這么做不會(huì)降低一個(gè)小組的生產(chǎn)能力。

          每天只能干兩小時(shí)還沒(méi)讓我太擔(dān)心,真讓我擔(dān)心的是完全干不了活的那些天。

          我老想這是怎么回事兒。我努力回憶我出活最多的時(shí)候。估計(jì)是微軟把我搬到一間漂亮的新辦公室的時(shí)候。舒適豪華的辦公室,窗外風(fēng)景如畫(huà),窗對(duì)面櫻桃花開(kāi)滿了石頭堆砌的庭院。所有的一切都那么恰到好處。我馬不停蹄地干好好幾個(gè)月,一口氣把Excel Basic的詳細(xì)設(shè)計(jì)搞定。用象紀(jì)念碑那么高的一疊紙,詳細(xì)描素了一個(gè)超大型目標(biāo)模型和編程環(huán)境,工作之細(xì)致,令人難以置信。我自始至終就沒(méi)停過(guò)手。去波士頓參加MacWorld I的時(shí)候,我都帶著一臺(tái)手提電腦,坐在哈佛商學(xué)院的大陽(yáng)臺(tái)上把Windows類別的所有文件都寫(xiě)完了。

          按步就班并不難。通常我一天是這樣度過(guò)的:1,去上班。2,查電子郵件和上網(wǎng)等等。 3,考慮是否應(yīng)該吃完中飯?jiān)陂_(kāi)始干活。4,吃完中飯回來(lái)。5,查電子郵件逛網(wǎng)。6,終于決定應(yīng)該開(kāi)始工作了。7,查電子郵件逛網(wǎng),東瞄瞄,西看看。8,再次決定確實(shí)應(yīng)該開(kāi)始開(kāi)始干活了。9,打開(kāi)該死的編輯器。10,一直會(huì)些程序?qū)W到晚上7:30,寫(xiě)到忘記時(shí)間。

          在以上第8步和第9步之間似乎有點(diǎn)缺陷,因?yàn)槲也皇敲看味寄茼樌貓?zhí)行下去。

          bike trip 對(duì)我來(lái)說(shuō),啟動(dòng)是唯一的難題。靜止物體在不受外力作用的情況下會(huì)保持靜止。大腦里有些物質(zhì)的質(zhì)量大得不可思議,讓它加速太難了。但是只要速度上去了,在全速行使的情況下,倒不用使什么勁就能繼續(xù)走下去。就象騎著自行車去作一次自費(fèi)橫穿美國(guó)的旅行,一開(kāi)始,你根本想象不出要花那么多時(shí)間讓車輪動(dòng)起來(lái),可是一旦動(dòng)起來(lái)了,讓它們繼續(xù)轉(zhuǎn)就不是一件很難的事了。

          也許高效率的關(guān)鍵就:?jiǎn)?dòng)起來(lái)。配對(duì)編程法之所以成功,說(shuō)不定就靠?jī)蓚€(gè)人在一起,互相強(qiáng)迫對(duì)方啟動(dòng)起來(lái)。

          Joel in the Army 我在以色烈當(dāng)傘兵時(shí),一次,有個(gè)將軍來(lái)給我們講實(shí)戰(zhàn)戰(zhàn)術(shù)。他告訴我們,步兵戰(zhàn)術(shù)其實(shí)只有一種:行進(jìn)中開(kāi)火。你一邊開(kāi)火一邊朝著敵人沖過(guò)去,火力讓敵人抬不起頭來(lái),不能朝你開(kāi)火 (當(dāng)一個(gè)軍人喊:“掩護(hù)我”的時(shí)候,他的意思就是“在我沖過(guò)街時(shí)候,你朝敵人猛烈開(kāi)火,迫使他貓起來(lái),沒(méi)法朝我開(kāi)火)。前進(jìn)了,你就可以占領(lǐng)陣地,接近敵人,這樣你的勝算要大的多。你要是不往前沖,敵人就有時(shí)間來(lái)搞清楚形勢(shì),這可不妙。你要是不開(kāi)火,敵人就要朝你開(kāi)火,撂倒你。

          我很長(zhǎng)一段時(shí)間都在想著這個(gè)教導(dǎo)。我想通了不論是戰(zhàn)斗機(jī)空中格斗還是大規(guī)模艦隊(duì)攻擊,大部份軍事戰(zhàn)略戰(zhàn)術(shù)都是以行進(jìn)中開(kāi)火作為基礎(chǔ)的。我又化了十五年時(shí)間才想通了行進(jìn)中開(kāi)火也是一個(gè)人在現(xiàn)實(shí)生活中成功的基本原則。你每天都得往前進(jìn)點(diǎn)兒,不用想你寫(xiě)的程序怎么差勁,怎么賣不出去,只要你不停地寫(xiě),不停地改,滴水也能穿石。同時(shí), 要注意你的競(jìng)爭(zhēng)對(duì)手朝你開(kāi)火。他們是不是想讓你全心全意應(yīng)付他們的掃射,好讓你往前走不了呢?

          想想這些年來(lái),微軟開(kāi)發(fā)出來(lái)的資料存取方法,從OBDC,RDO,DAO,ADO,OLEDB直到現(xiàn)在的 ADO,.NET,不停翻新,技術(shù)上有必要嗎?還是因?yàn)槟莻€(gè)設(shè)計(jì)組實(shí)在蹩腳,每過(guò)他媽一年就得重新發(fā)明一遍資料存取技術(shù)?(實(shí)際上可能真是)。它最終的效果其實(shí)是一道掩護(hù)火力,讓競(jìng)爭(zhēng)者別無(wú)選擇,只能把本來(lái)該用來(lái)開(kāi)發(fā)新功能的寶貴時(shí)間都用來(lái)移植和升級(jí)了。仔細(xì)看看軟件行業(yè),干得好的公司對(duì)那些對(duì)大公司都依賴最少,不用把所有精力都用來(lái)為趕潮流而把程序重寫(xiě)一遍,還得修改那些只有在Windows XP上才會(huì)出現(xiàn)的缺陷。那些花太多時(shí)間去猜測(cè)微軟未來(lái)發(fā)展方向的公司,日子都好過(guò)不了。有些人見(jiàn)了.NET就發(fā)怵,忍不住要按.NET來(lái)完全重建自己的體系結(jié)構(gòu),以為自己別無(wú)選擇。哥門兒,看清楚了,微軟是在朝你開(kāi)火呢,而且這只是掩護(hù)火力。這游戲就是這么玩兒的。這樣一來(lái),他們就可以大步朝前走,而你卻不能。你要支持Hailstorm 嗎?SOAP呢?還有RDF?是因?yàn)槟愕念櫩托枰阅阒С炙鼈儯窟€是因?yàn)橛腥顺汩_(kāi)火而你覺(jué)得應(yīng)該還擊?大公司的營(yíng)銷部都懂火力掩護(hù)。他們到客人那兒就說(shuō),“你們不一定非買我們的。誰(shuí)的產(chǎn)品最好您就應(yīng)該買誰(shuí)的。不過(guò),我們想提醒您,在下單之前最好先確認(rèn)他們支持(XML/ SOAP/CDE/J2EE)。否則你們就會(huì)被他們的技術(shù)套牢。”。等到小公司去向這個(gè)客戶推銷的時(shí)候,那個(gè)聽(tīng)話的CTO就會(huì)問(wèn)他們:“你們有J2EE嗎?”。他們回去就只好不管賣不賣得掉,都埋頭打造他們的J2EE。他們也就再?zèng)]有機(jī)會(huì)來(lái)展示自己的特色了。其實(shí),這只不過(guò)是個(gè)打勾功能。因?yàn)橛袀€(gè)打勾攔在那兒空著,你就必須有這個(gè)功能。其實(shí)誰(shuí)都不需要它。這就是火力掩護(hù)。

          對(duì)于我這樣的小公司來(lái)說(shuō),行進(jìn)中開(kāi)火意味著兩件事。別跟時(shí)間過(guò)不去,同時(shí)你還得每天都進(jìn)步。天不負(fù)苦心人,你終有出頭的一天。我昨天花了一天時(shí)間只不過(guò)讓FogBUGZ的顏色稍微好看點(diǎn)。這不要緊,只要不停步。最重要的是,我們的軟件越來(lái)越好,客人越來(lái)越多。在我們達(dá)到Oracle 的規(guī)模之前,我們并不需要通盤(pán)戰(zhàn)略。我們只需要每天早晨到辦公室來(lái),別多想,打開(kāi)編程器。

          It's getting better all the time... o/~


          本文最先用英文出版,題為 Fire and Motion??
          posted on 2006-08-08 10:32 emu 閱讀(347) 評(píng)論(0)  編輯  收藏 所屬分類: 項(xiàng)目開(kāi)發(fā)
          主站蜘蛛池模板: 靖边县| 承德县| 龙州县| 丽水市| 桦南县| 康马县| 桐城市| 崇阳县| 丹巴县| 皋兰县| 高雄市| 东城区| 兴隆县| 阿图什市| 吉木乃县| 朝阳区| 习水县| 太湖县| SHOW| 东乡族自治县| 宿迁市| 应用必备| 文山县| 莒南县| 区。| 潍坊市| 齐齐哈尔市| 合水县| 莱州市| 南郑县| 黑龙江省| 西乌| 平陆县| 翁源县| 德格县| 蓝田县| 巴中市| 永川市| 赤水市| 施秉县| 建始县|