emu in blogjava

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

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

          行進(jìn)中開火


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

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

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

          Tetris

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

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

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

          Go read The Onion for a while.

          自從我干上軟件開發(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)不好意思。不過呢,我總是組里出活最多的。由此可見,“人件理論”和極限編程都堅(jiān)持不加班,每周只干40小時(shí),還是有點(diǎn)道理的。他們都清楚這么做不會(huì)降低一個(gè)小組的生產(chǎn)能力。

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

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

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

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

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

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

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

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

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

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

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


          本文最先用英文出版,題為 Fire and Motion??
          posted on 2006-08-08 10:32 emu 閱讀(343) 評(píng)論(0)  編輯  收藏 所屬分類: 項(xiàng)目開發(fā)
          主站蜘蛛池模板: 马公市| 来宾市| 黑河市| 南雄市| 出国| 繁峙县| 邓州市| 马关县| 安宁市| 冷水江市| 盐津县| 张家口市| 油尖旺区| 吴忠市| 松溪县| 莒南县| 那坡县| 陵川县| 昌吉市| 双柏县| 大名县| 花垣县| 青州市| 凌源市| 五华县| 正安县| 屯留县| 丹江口市| 客服| 蛟河市| 嵩明县| 凤台县| 文登市| 夏津县| 镇江市| 田阳县| 康定县| 建昌县| 靖宇县| 清水河县| 阿拉尔市|