Joel on Software 祖爾談軟體:行進中開火 (轉)

amyz發表於2007-08-16
Joel on Software 祖爾談軟體:行進中開火 (轉)[@more@]

行進中開火


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

時不時,總有一陣兒,我什麼事也幹不了。

我也去辦公廳,東瞄瞄,西看看,每十秒鐘查一次電子,網上逛一圈。也許乾點兒象付運通卡賬單之類不需要大腦的事。不過要回去嘩啦嘩啦寫,可沒門兒。

這種不出活的狀態,一般通常會持續一兩天。在我的開發生涯中也有過幾個星期幹不了活的時候。就像他們說的,我不在狀態,我進入不了情況,我找不到組織。

人人都有情緒波動,有的人溫和一些,有的響動大點兒,也有的可以整個亂套。但不管怎麼著,那段不出活期似乎總是跟憂鬱有點兒關係。

我不由得聯想到那些專家說,人們基本上控制不了自己吃什麼。任何節食計劃都長不了。大家總是悠回各自的正常體重。也許作為一個軟體工程師,我也不能控制什麼時候最能出活。我唯一希望的就是發呆那段能被嘩嘩幹活那段扯平,最終還能混碗飯吃。

自從我幹上軟體開發這一行起,我平均每天只有兩三個的高效時間。這真讓我頭大。我在實習的時候,另外一個實習生告訴我,他每天12點上班,5點下班。5個鐘頭還包括午餐時間,但他的同事還對他特別滿意。因為他乾的活比一般人都多。其實我也一樣。我每天只有兩三個小時的高效時間。看著別人那麼賣力的幹,還有點不好意思。不過呢,我總是組裡出活最多的。由此可見,“人件理論”和極限都堅持不加班,每週只幹40小時,還是有點道理的。他們都清楚這麼做不會降低一個小組的生產能力。

每天只能幹兩小時還沒讓我太擔心,真讓我擔心的是完全乾不了活的那些天。

我老想這是怎麼回事兒。我努力回憶我出活最多的時候。估計是微軟把我搬到一間漂亮的新辦公室的時候。舒適豪華的辦公室,窗外風景如畫,窗對面櫻桃花開滿了石頭堆砌的庭院。所有的一切都那麼恰到好處。我馬不停蹄地幹好好幾個月,一口氣把 Basic的詳細設計搞定。用象紀念碑那麼高的一疊紙,詳細描素了一個超大型目標模型和程式設計環境,工作之細緻,令人難以置信。我自始至終就沒停過手。去波士頓參加MacWorld I的時候,我都帶著一臺手提,坐在哈佛商學院的大陽臺上把類別的所有都寫完了。

按步就班並不難。通常我一天是這樣度過的:1,去上班。2,查電子郵件和上網等等。 3,考慮是否應該吃完中飯在開始幹活。4,吃完中飯回來。5,查電子郵件逛網。6,終於決定應該開始工作了。7,查電子郵件逛網,東瞄瞄,西看看。8,再次決定確實應該開始開始幹活了。9,開啟該死的編輯器。10,一直會些程式學到晚上7:30,寫到忘記時間。

在以上第8步和第9步之間似乎有點缺陷,因為我不是每次都能順利地下去。

對我來說,啟動是唯一的難題。靜止物體在不受外力作用的情況下會保持靜止。大腦裡有些物質的質量大得不可思議,讓它加速太難了。但是隻要速度上去了,在全速行使的情況下,倒不用使什麼勁就能繼續走下去。就象騎著腳踏車去作一次自費橫穿美國的旅行,一開始,你根本想象不出要花那麼多時間讓車輪動起來,可是一旦動起來了,讓它們繼續轉就不是一件很難的事了。

也許高的關鍵就:啟動起來。配對程式設計法之所以成功,說不定就靠兩個人在一起,互相強迫對方啟動起來。

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

我很長一段時間都在想著這個教導。我想通了不論是戰鬥機空中格鬥還是大規模艦隊,大部份軍事戰略戰術都是以行進中開火作為基礎的。我又化了十五年時間才想通了行進中開火也是一個人在現實生活中成功的基本原則。你每天都得往前進點兒,不用想你寫的程式怎麼差勁,怎麼賣不出去,只要你不停地寫,不停地改,滴水也能穿石。同時, 要注意你的競爭對手朝你開火。他們是不是想讓你全心全意應付他們的掃射,好讓你往前走不了呢?

想想這些年來,微軟開發出來的資料存取方法,從OBDC,RDO,DAO,ADO,OLE直到現在的 ADO,,不停翻新,技術上有必要嗎?還是因為那個設計組實在蹩腳,每過他媽一年就得重新發明一遍資料存取技術?(實際上可能真是)。它最終的效果其實是一道掩護火力,讓競爭者別無選擇,只能把本來該用來開發新功能的寶貴時間都用來移植和升級了。仔細看看軟體行業,幹得好的公司對那些對大公司都依賴最少,不用把所有精力都用來為趕潮流而把程式重寫一遍,還得修改那些只有在上才會出現的缺陷。那些花太多時間去猜測微軟未來發展方向的公司,日子都好過不了。有些人見了.NET就發怵,忍不住要按.NET來完全重建自己的體系結構,以為自己別無選擇。哥門兒,看清楚了,微軟是在朝你開火呢,而且這只是掩護火力。這遊戲就是這麼玩兒的。這樣一來,他們就可以大步朝前走,而你卻不能。你要支援Hailstorm 嗎?SOAp">SOAP呢?還有?是因為你的顧客需要,所以你支援它們?還是因為有人朝你開火而你覺得應該還擊?大公司的營銷部都懂火力掩護。他們到客人那兒就說,“你們不一定非買我們的。誰的產品最好您就應該買誰的。不過,我們想提醒您,在下單之前最好先確認他們支援(/ SOAP/CDE/)。否則你們就會被他們的技術套牢。”。等到小公司去向這個客戶推銷的時候,那個聽話的CTO就會問他們:“你們有J2EE嗎?”。他們回去就只好不管賣不賣得掉,都埋頭打造他們的J2EE。他們也就再沒有機會來展示自己的特色了。其實,這只不過是個打勾功能。因為有個打勾攔在那兒空著,你就必須有這個功能。其實誰都不需要它。這就是火力掩護。

對於我這樣的小公司來說,行進中開火意味著兩件事。別跟時間過不去,同時你還得每天都進步。天不負苦心人,你終有出頭的一天。我昨天花了一天時間只不過讓FogZ的顏色稍微好看點。這不要緊,只要不停步。最重要的是,我們的軟體越來越好,客人越來越多。在我們達到 的規模之前,我們並不需要通盤戰略。我們只需要每天早晨到辦公室來,別多想,開啟程式設計器。

ASP?cmd=show&ixPost=2290">

本文最先用英文出版,題為  


Joel Spolsky 是紐約市一家小軟體公司,, 的創始人。他畢業於耶魯大學,曾在美國微軟公司,Viacom,  Juno 任軟體設計師及經理。microsoft-com::office" />

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962560/,如需轉載,請註明出處,否則將追究法律責任。

相關文章