• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            生命中的一天

            版權(quán)聲明:轉(zhuǎn)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
            http://spelldev.blogbus.com/logs/11066046.html

            生命中的一天

            原作:Noel Llopis

            翻譯:King
            200625

             轉(zhuǎn)載請(qǐng)注明作者和出處,如有商業(yè)用途請(qǐng)聯(lián)系作者kingcrimson at tom.com本文第一次發(fā)表在《游戲開發(fā)者》雜志的2005年就業(yè)指南上。 

            High Moon Studios 是游戲行業(yè)中一個(gè)不平凡的公司。我們的全部開發(fā)過程都使用了敏捷開發(fā)方法。特別是我的團(tuán)隊(duì),同時(shí)使用了Scrum(一種敏捷管理方式)和極限編程(一種敏捷開發(fā)方式)。這意味著我們要配對(duì)編程,測(cè)試驅(qū)動(dòng)開發(fā),以及一切有爭(zhēng)議的實(shí)踐。我期望在未來幾年內(nèi),這些實(shí)踐將會(huì)變的更加尋常。

            我領(lǐng)導(dǎo)著研發(fā)組(R&D),我們的首要職責(zé)是為不同項(xiàng)目的團(tuán)隊(duì)提供技術(shù)支持。如今,這意味著按他們的步伐找出大量中間件,再選擇符合要求的去使用。但這也需要我們?nèi)ジ梢恍┛嗷?,為引擎和工具編寫大量代碼。

            記住這一點(diǎn),然后隨我來經(jīng)歷一個(gè)典型的工作日。

            8:10 AM

            我像往常一樣,騎車去上班。盡管我是只早起的鳥兒,但我們的一個(gè)程序員Jim還是比我要早到幾分鐘,并且已經(jīng)坐在辦公桌前了。

            我快速的接收了一下電子郵件。同時(shí)我注意到PCLint在昨晚檢查我們代碼庫(kù)時(shí)捕獲了幾個(gè)小的warning。我很快解決了它們,并把代碼簽入。

            8:20 AM

            今天是周二,我們兩周的迭代會(huì)在周五結(jié)束。一個(gè)迭代由一段固定時(shí)間組成(我們團(tuán)隊(duì)通常是兩周)。在這期間,團(tuán)隊(duì)要根據(jù)客戶描述的需求交付一組可使用的功能。客戶(在這里是指公司內(nèi)部其他團(tuán)隊(duì))提出需求,并賦予它們優(yōu)先權(quán)。之后我的團(tuán)隊(duì)會(huì)把這些需求拆分成若干任務(wù),并估計(jì)多長(zhǎng)時(shí)間能夠完成它們(任務(wù)會(huì)在18小時(shí)之間變化)。

            我和Jim來到了“戰(zhàn)爭(zhēng)室”(這間屋子的墻上貼著所有對(duì)應(yīng)用戶需求的任務(wù)卡片),并選擇了一個(gè)任務(wù)“混合ragdoll和動(dòng)畫”。這個(gè)任務(wù)來自于用戶需求“把一個(gè)剛體扔到角色身上,能看到撞擊反應(yīng)”。這個(gè)任務(wù)早先估計(jì)能3小時(shí)完成,但是現(xiàn)在我們認(rèn)識(shí)到ragdoll系統(tǒng)比我們預(yù)想的有一點(diǎn)復(fù)雜。于是我們重新估計(jì)了任務(wù)時(shí)間,定為4小時(shí)。

            8:23 AM

            研發(fā)組的實(shí)驗(yàn)室中,除了我們自己的工作區(qū)域外,還專門設(shè)置了配對(duì)編程的位置。每個(gè)位置擁有兩臺(tái)顯示器、兩個(gè)鍵盤、兩個(gè)鼠標(biāo)、兩把椅子,以及容納兩個(gè)人的空間。我們所有產(chǎn)品的代碼都是由配對(duì)編程的程序員完成的。我和Jim隨便挑了個(gè)位置,開始工作。

            自從采用測(cè)試驅(qū)動(dòng)方法進(jìn)行開發(fā)后,我們首先會(huì)為要實(shí)現(xiàn)的內(nèi)容編寫一個(gè)簡(jiǎn)單的測(cè)試單元,之后再寫完整的代碼讓測(cè)試通過。在這個(gè)任務(wù)中,我們?yōu)榈谝粋€(gè)測(cè)試單元編寫了一個(gè)沒有輸入輸出的混合對(duì)象(Blender Object)。之后我們編寫了混合類(Blender Class),使測(cè)試通過。這只是小步,但是方向是正確的。編寫測(cè)試單元、測(cè)試、重構(gòu),這整個(gè)環(huán)節(jié)只需510分鐘,并且我們反復(fù)的去重復(fù)這個(gè)環(huán)節(jié)。

            8:39 AM

            我們已經(jīng)實(shí)現(xiàn)了小部分功能,并且所有的代碼都構(gòu)建并測(cè)試完畢,于是我們把它簽入到代碼管理(source control)中。這種方式被稱為持續(xù)迭代,要求程序員在代碼管理的最新版本工程中工作,并在一天里多次簽入自己的修改。

            8:50 AM

            其他的團(tuán)隊(duì)成員陸續(xù)加入工作,占據(jù)了配對(duì)編程的各個(gè)位置。接下來我們互相做了簡(jiǎn)短的溝通,明確我們各自的工作。

            點(diǎn)擊查看原始尺寸
            玩命工作……

            9:37 AM

            我無(wú)意中聽到JoelGary在討論他們?nèi)绾螠y(cè)試一些需要更新物理模擬的東西。我正好在幾天前做了這些,于是我加入他們的討論。我發(fā)現(xiàn)他們要做的一些工作是我之前已經(jīng)做過的,于是我?guī)退麄冋业轿覍懙臇|西,他們改動(dòng)一下就可以使用。

            10:05 AM

            一切都進(jìn)展的很順利。我們?cè)谠缟暇鸵呀?jīng)簽入了四次。當(dāng)一個(gè)二人組工作正常時(shí),他們?cè)谝惶熘袝?huì)簽入20次或更多。照這個(gè)速度,我們比預(yù)先估計(jì)的四小時(shí)要提前完成。

            10:14 AM

            每天10點(diǎn)15分是我們的Scrum會(huì)議時(shí)間。我們?nèi)w聚集到戰(zhàn)爭(zhēng)室,準(zhǔn)備開會(huì)。Scrum會(huì)議非常短,并且全體團(tuán)隊(duì)成員只需站著開會(huì)(成員8人,再加上制作人Brian)。我們?cè)谖堇锟焖俚淖邅碜呷?,并開始討論目前的工作,讓所有人都跟上進(jìn)度。

            10:23 AM

            會(huì)議中,出現(xiàn)了一個(gè)如何去讀取物理資源的問題。我們立即來到了配對(duì)編程區(qū)域,和與之相關(guān)的所有人展開討論。我們?cè)诎装迳袭嬃艘恍┖?jiǎn)潔的UML圖示,思考數(shù)據(jù)是如何傳送的。在十分鐘后,我們達(dá)成了一致意見,并返回各自區(qū)域繼續(xù)工作。

            11:15 AM

            我們的混合(Blending)工作的很正常。所有的單元測(cè)試都通過了,盡管我們還沒有把它用demo實(shí)現(xiàn)。因?yàn)檫€有一張任務(wù)卡需要一起來完成。我們馬上把代碼簽入。這些代碼顯然還有少數(shù)幾個(gè)地方可以改進(jìn),因?yàn)槲覀儎偛偶性诠δ軐?shí)現(xiàn)上,所以需要花些時(shí)間去重構(gòu)。我們進(jìn)行了大量的單元測(cè)試,所以我們確信重構(gòu)不會(huì)導(dǎo)致任何bug。

            11:56 AM

            現(xiàn)在代碼處在一個(gè)更好的狀態(tài)中。我們把它簽入,并等待了幾分鐘,直到構(gòu)建服務(wù)器傳送回報(bào)告,所有內(nèi)容都構(gòu)建完成并測(cè)試通過。在這段時(shí)間內(nèi),我們討論了下一個(gè)任務(wù)如何進(jìn)行。

            12:05 PM

            我們所有成員今天的工作進(jìn)展齊頭并進(jìn),所以我和幾位團(tuán)隊(duì)成員約定在午飯時(shí)間去上網(wǎng)。如果上網(wǎng),我還可以去打籃球、騎車、跑步,甚至瑜伽。除此之外,還可以和High Moon工會(huì)的成員一起玩《激戰(zhàn)》(Guild War)。

            1:10 PM

            我回到辦公桌前,潦草吃了頓午飯,同時(shí)查看郵件(我在早上接收的,但因?yàn)橐恢痹谂鋵?duì)編程,沒有時(shí)間查看)。我讀了一封來自中間件開發(fā)商的郵件,關(guān)于我們?cè)缦鹊囊粋€(gè)需求問題。我迅速發(fā)了回信。

            1:25 PM

            Sean來到我座位前。他正準(zhǔn)備開始工作,但是上午與他配對(duì)的程序員被叫去處理Darkwatch的一些最后的問題。這個(gè)任務(wù)十分重要,優(yōu)先級(jí)高于我們?cè)谧龅娜魏稳蝿?wù)。

            Sean迅速向我講解了他上午進(jìn)行的工作,關(guān)于顯示我們物理系統(tǒng)的內(nèi)存使用狀況。我記得他們?cè)谏衔绲?/span>Scrum會(huì)議上提到過。我上一周也在為物理系統(tǒng)工作,所以我對(duì)代碼更熟悉一些。沒過多久,我們對(duì)任務(wù)已經(jīng)有了進(jìn)展。

            點(diǎn)擊查看原始尺寸
            ……玩命搖滾:)

            2:07 PM

            在編寫幾個(gè)測(cè)試單元并實(shí)現(xiàn)了一些功能后,我們準(zhǔn)備把內(nèi)存顯示加入到demo程序中。幾分鐘后,我們?cè)?/span>demo中顯示了物理系統(tǒng)使用內(nèi)存的狀況,并且測(cè)試在加入和移除剛體時(shí),能顯示出高低變化。

            但是出現(xiàn)了問題。當(dāng)我們移除剛體時(shí),內(nèi)存使用沒有顯示降低。我們退出了demo,并且看到了一長(zhǎng)串內(nèi)存泄漏提示。我們首先簽入了改動(dòng),然后跟蹤內(nèi)存泄露的代碼。這很可能不是由我們寫的代碼引起的,但是我們整個(gè)團(tuán)隊(duì)遵照“代碼共享”原則。這意味著每個(gè)成員都可以在任何時(shí)候修改其他成員的代碼。

            2:12 PM

            構(gòu)建停止了!構(gòu)建服務(wù)器檢測(cè)到構(gòu)建失敗,并通過一個(gè)系統(tǒng)托盤程序提示我們。我打開了最新的構(gòu)建日志,看到release模式下一個(gè)單元測(cè)試失敗了。這時(shí),坐在我們旁邊的Tyson說:“噢,我知道這是怎么回事。我正要去修改它呢。”不到半分鐘,他完成了改動(dòng)并簽入代碼。幾分鐘后,構(gòu)建系統(tǒng)匯報(bào)構(gòu)建通過,一切重返正常。

            2:17 PM

            我們找到了內(nèi)存泄漏的地方,發(fā)生在一個(gè)引用計(jì)數(shù)的錯(cuò)誤使用。我們先寫了一個(gè)測(cè)試單元顯示它的錯(cuò)誤,然后在物理庫(kù)中修復(fù)了它。我們簽入了代碼。

            2:18 PM

            我們來到戰(zhàn)爭(zhēng)室,取下了一個(gè)任務(wù)。這個(gè)任務(wù)是要在demo里通過一個(gè)GUI,顯示出不同變量和函數(shù)的信息。我們登記了這個(gè)任務(wù),開始下一步工作。

            3:43 PM

            我們一直在待在配對(duì)編程區(qū)。我們近乎瘋狂的編寫測(cè)試單元和代碼,任務(wù)進(jìn)展非常順利。在上一個(gè)小時(shí)中,我們?yōu)檫@個(gè)任務(wù)簽入了三次。

            4:12 PM

            另一對(duì)程序員在討論如何處理一些特殊情況的錯(cuò)誤信息。這是一個(gè)重要的問題,并且應(yīng)該貫徹于所有代碼。我們開始了快速的討論,大多數(shù)團(tuán)隊(duì)成員都參與其中。五分鐘后我們做出了決定,然后回到各自的工作中。

            5:40 PM

            我們進(jìn)行了今天最后一次簽入。我們幾乎完成了這個(gè)任務(wù),但是還差一點(diǎn)。盡管我們可以再花一小時(shí)去完成它,但是我倆都非常疲倦,并且思路已經(jīng)不那么清晰,會(huì)犯一些錯(cuò)誤。我們可以明天早上一來就繼續(xù)完成它。接下來是重要的部分,我們是否可以成功簽入。

            我們團(tuán)隊(duì)有一個(gè)規(guī)矩,任何人在下班時(shí),不能簽入完就離開實(shí)驗(yàn)室。你必須等待構(gòu)建服務(wù)器成功構(gòu)建代碼并且通過測(cè)試。我們保持短促的構(gòu)建時(shí)間,所以只需要再等待45分鐘。如果有任何地方崩潰,你就需要重新修復(fù)它。任何人沒有借口在構(gòu)建失敗時(shí)離開。

            在等待構(gòu)建完成時(shí),我查看了今天收件箱里積累的郵件。

            5:44 PM

            幾分鐘后,構(gòu)建服務(wù)器傳來成功的消息。今天是效率非常高的一天,照這個(gè)進(jìn)度我們?cè)谥芪寰涂梢酝瓿伤械挠脩粜枨?。聚集了各自成果?/span>demo也逐漸開始顯得很酷。

            敏捷開發(fā),特別是配對(duì)編程的一個(gè)特征,就是讓每一天都變得很緊湊。沒有小的空閑去閱讀郵件、瀏覽網(wǎng)頁(yè),或者發(fā)呆。我們?cè)谝粋€(gè)工作日里完成了很多工作。但是我們不能在一天里長(zhǎng)時(shí)間保持這個(gè)節(jié)奏,所以按時(shí)收工回家是很重要的。這使我能有時(shí)間在家閱讀技術(shù)書籍、構(gòu)思不同的想法,或者做次要項(xiàng)目的一些工作,或和家人在一起,享受其他愛好。

            我登上愛車,朝家的方向駛?cè)?,臉上洋溢著笑容?/span>

            posted on 2008-10-25 10:38 楊粼波 閱讀(389) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

            # re: 生命中的一天 2008-12-22 19:19 Domin

            無(wú)意中進(jìn)了這個(gè)博客 真的很喜歡你這種生活方式 太理性了
            唉 后悔學(xué)文科啊 我其實(shí)很想過理性科學(xué)生活的 有團(tuán)隊(duì)有目標(biāo) 真正研究問題
            我的電郵:domin634@126.com 如果你百忙中還有空聯(lián)絡(luò)我
            ——迷茫的大學(xué)生  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            欧洲人妻丰满av无码久久不卡| 国产视频久久| 综合久久精品色| 久久亚洲国产成人影院网站| 久久亚洲精品中文字幕三区| 久久亚洲私人国产精品vA | 久久精品无码一区二区三区日韩| 成人久久久观看免费毛片| 久久精品九九亚洲精品| 久久偷看各类wc女厕嘘嘘| 久久精品毛片免费观看| 成人久久精品一区二区三区| 久久精品免费一区二区三区| 国产成人无码精品久久久久免费 | 91久久福利国产成人精品| 欧美一区二区精品久久| 精品国产婷婷久久久| 久久精品国产一区二区三区| 一本综合久久国产二区| 亚洲精品乱码久久久久久蜜桃图片| 亚洲熟妇无码另类久久久| 97久久超碰国产精品2021| 久久91精品综合国产首页| 久久久久无码精品| 无码精品久久久天天影视| 国产精品久久久久久搜索| 久久精品二区| 亚洲AV无码久久精品成人| 久久综合九色综合久99| 久久亚洲国产成人影院网站| 香蕉久久av一区二区三区| 国产成人精品久久| 久久久国产精华液| AA级片免费看视频久久| 国产A级毛片久久久精品毛片| 欧美精品一本久久男人的天堂| 亚洲欧美国产日韩综合久久| 久久99精品国产麻豆| 久久99九九国产免费看小说| 国产精品久久亚洲不卡动漫| 香港aa三级久久三级老师2021国产三级精品三级在|