敏捷工作的一天

2021-05-01 21:00:24 字數 4255 閱讀 9899

原作: noel llopis

翻譯: king

2023年 2月 5日

本文第一次發表在《遊戲開發者》雜誌的 2005 年就業指南上。

high moon studios

是遊戲行業中乙個不平凡的公司。我們的全部開發過程都使用了敏捷開發方法。特別是我的團隊,同時使用了 scrum (一種敏捷管理方式)和極限程式設計(一種敏捷開發方式)。這意味著我們要配對程式設計,測試驅動開發,以及一切有爭議的實踐。我期望在未來幾年內,這些實踐將會變的更加尋常。

我領導著研發組( r&d ),我們的首要職責是為不同專案的團隊提供技術支援。如今,這意味著按他們的步伐找出大量中介軟體,再選擇符合要求的去使用。但這也需要我們去幹一些苦活,為引擎和工具編寫大量**。

記住這一點,然後隨我來經歷乙個典型的工作日。

8:10 am

我像往常一樣,騎車去上班。儘管我是只早起的鳥兒,但我們的乙個程式設計師 jim 還是比我要早到幾分鐘,並且已經坐在辦公桌前了。

我快速的接收了一下電子郵件。同時我注意到

pclint

在昨晚檢查我們**庫時捕獲了幾個小的 warning 。我很快解決了它們,並把**簽入。

8:20 am

今 天是周二,我們兩周的迭代會在周五結束。乙個迭代由一段固定時間組成(我們團隊通常是兩周)。在這期間,團隊要根據客戶描述的需求交付一組可使用的功能。 客戶(在這裡是指公司內部其他團隊)提出需求,並賦予它們優先權。之後我的團隊會把這些需求拆分成若干任務,並估計多長時間能夠完成它們(任務會在 1 到 8 小時之間變化)。

我和 jim 來到了「戰爭室」(這間屋子的牆上貼著所有對應使用者需求的任務卡片),並選擇了乙個任務「混合

ragdoll

和動畫」。這個任務來自於使用者需求「把乙個剛體扔到角色身上,能看到撞擊反應」。這個任務早先估計能 3 小時完成,但是現在我們認識到

ragdoll

系統比我們預想的有一點複雜。於是我們重新估計了任務時間,定為 4 小時。

8:23 am

在研發組 的實驗室中,除了我們自己的工作區域外,還專門設定了配對程式設計的位置。每個位置擁有兩台顯示器、兩個鍵盤、兩個滑鼠、兩把椅子,以及容納兩個人的空間。我們所有產品的**都是由配對程式設計的程式設計師完成的。我和 jim 隨便挑了個位置,開始工作。

自從採用測試驅動方法進行開發後,我們首先會為要實現的內容編寫乙個簡單的測試單元,之後再寫完整的**讓測試通過。在這個任務中,我們為第乙個測試單元編寫了乙個沒有輸入輸出的混合物件( blender object )。之後我們編寫了混合類( blender class ),使測試通過。這只是一 小步,但是方向是正確的。編寫測試單元、測試、重構,這整個環節只需 5 到 10 分鐘,並且我們反覆的去重複這個環節。

8:39 am

我們已經實現了一 小部分功能,並且所有的**都構建並測試完畢,於是我們把它簽入到**管理( source control )中。這種方式被稱為持續迭代,要求程式設計師在**管理的最新版本工程中工作,並在一天裡多次簽入自己的修改。

8:50 am

其他的團隊成員陸續加入工作,佔據了配對程式設計的各個位置。接下來我們互相做了簡短的溝通,明確我們各自的工作。

9:37 am

我無意中聽到 joel 和 gary 在討論他們如何測試一些需要更新物理模擬的東西。我正好在幾天前做了這些,於是我加入他們的討論。我發現他們要做的一些工作是我之前已經做過的,於是我幫他們找到我寫的東西,他們改動一下就可以使用。

10:05 am

一切都進展的很順利。我們在早上就已經簽入了四次。當乙個二人組工作正常時,他們在一天中會簽入 20 次或更多。照這個速度,我們比預先估計的四小時要提前完成。

10:14 am

每天 10 點 15 分是我們的 scrum 會議時間。我們全體聚集到戰爭室,準備開會。 scrum 會議非常短,並且全體團隊成員只需站著開會(成員 8 人,再加上製作人 brian )。我們在屋裡快速的走來走去,並開始討論目前的工作,讓所有人都跟上進度。

10:23 am

會議中,出現了乙個如何去讀取物理資源的問題。我們立即來到了配對程式設計區域,和與之相關的所有人展開討論。我們在白板上畫了一些簡潔的 uml 圖示,思考資料是如何傳送的。在十分鐘後,我們達成了一致意見,並返回各自區域繼續工作。

11:15 am

我們的混合( blending )工作的很正常。所有的單元測試都通過了,儘管我們還沒有把它用 demo 實現。因為還有一張任務卡需要一起來完成。我們馬上把**簽入。這些**顯然還有少數幾個地方可以改進,因為我們剛才集中在功能實現上,所以需要花些時間去重構。我們進行了大量的單元測試,所以我們確信重構不會導致任何 bug 。

11:56 am

現在**處在乙個更好的狀態中。我們把它簽入,並等待了幾分鐘,直到構建伺服器傳送回報告,所有內容都構建完成並測試通過。在這段時間內,我們討論了下乙個任務如何進行。

12:05 pm

我們所有成員今天的工作進展齊頭並進,所以我和幾位團隊成員約定在午飯時間去上網。如果不 上網,我還可以去打籃球、騎車、跑步,甚至瑜伽。除此之外,還可以和 high moon 工會的成員一起玩《激戰》( guild war )。

1:10 pm

1:25 pm

sean 來到我座位前。他正準備開始工作,但是上午與他配對的程式設計師被叫去處理

darkwatch

的一些最後的問題。這個任務十分重要,優先順序高於我們在做的任何任務。

sean 迅速向我講解了他上午進行的工作,關於顯示我們物理系統的記憶體使用狀況。我記得他們在上午的 scrum 會議上提到過。我上一周也在為物理系統工作,所以我對**更熟悉一些。沒過多久,我們對任務已經有了進展。

2:07 pm

在編寫幾個測試單元並實現了一些功能後,我們準備把記憶體顯示加入到 demo 程式中。幾分鐘後,我們在 demo 中顯示了物理系統使用 記憶體的狀況,並且測試在加入和移除剛體時,能顯示出高低變化。

但是出現了問題。當我們移除剛體時,記憶體使用沒有顯示降低。我們退出了 demo ,並且看到了一長串記憶體洩漏提示。我們首先簽入了改動,然後跟蹤記憶體洩露的**。這很可能不是由我們寫的**引起的,但是我們整個團隊遵照「**共享」原則。這意味著每個成員都可以在任何時候修改其他成員的**。

2:12 pm

構建停止了!構建伺服器檢測到構建失敗,並通過乙個系統托盤程式提示我們。我開啟了最新的構建日誌,看到 release 模式下乙個單元測試失敗了。這時,坐在我們旁邊的 tyson 說:「噢,我知道這是怎麼回事。我正要去修改它呢。」不到半分鐘,他完成了改動並簽入**。幾分鐘後,構建系統匯報構建通過,一切重返正常。

2:17 pm

我們找到了記憶體洩漏的地方,發生在乙個引用計數的錯誤使用。我們先寫了乙個測試單元顯示它的錯誤,然後在物理庫中修復了它。我們簽入了**。

2:18 pm

我們來到戰爭室,取下了乙個任務。這個任務是要在 demo 裡通過乙個 gui ,顯示出不同變數和函式的資訊。我們登記了這個任務,開始下一步工作。

3:43 pm

我們一直在待在配對程式設計區。我們近乎瘋狂的編寫測試單元和**,任務進展非常順利。在上乙個小時中,我們為這個任務簽入了三次。

4:12 pm

另一對程式設計師在討論如何處理一些特殊情況的錯誤資訊。這是乙個重要的問題,並且應該貫徹於所有**。我們開始了快速的討論,大多數團隊成員都參與其中。五分鐘後我們做出了決定,然後回到各自的工作中。

5:40 pm

我們進行了今天最後一次簽入。我們幾乎完成了這個任務,但是還差一點。儘管我們可以再花一小時去完成它,但是我倆都非常疲倦,並且思路已經不那麼清晰,會犯一些錯誤。我們可以明天早上一來就繼續完成它。接下來是重要的部分,我們是否可以成功簽入。

我們團隊有乙個規矩,任何人在下班時,不能簽入完就離開實驗室。你必須等待構建伺服器成功構建**並且通過測試。我們保持短促的構建時間,所以只需要再等待 4 到 5 分鐘。如果有任何地方崩潰,你就需要重新修復它。任何人沒有藉口在構建失敗時離開。

在等待構建完成時,我檢視了今天收件箱裡積累的郵件。

5:44 pm

幾分鐘後,構建伺服器傳來成功的訊息。今天是效率非常高的一天,照這個進度我們在周五就可以完成所有的使用者需求。聚集了各自成果的 demo 也逐漸開始顯得很酷 。

敏 捷開發,特別是配對程式設計的乙個特徵,就是讓每一天都變得很緊湊。沒有小的空閒去閱讀郵件、瀏覽網頁,或者發呆。我們在乙個工作日裡完成了很多任務作。但是我 們不能在一天裡長時間保持這個節奏,所以按時收工回家是很重要的。這使我能有時間在家閱讀技術書籍、構思不同的想法,或者做次要專案 的一些工作,或和家人在一起,享受其他愛好。

我登上愛車,朝家的方向駛去,臉上洋溢著笑容。

國外的開發,跟中國的開發是很不一樣的。從一定的程度上來看,效率是很關鍵的。希望這篇文章對大家有很大的幫助的。

前端工作的一天

使用git小烏龜 連線 公司私有庫 用註冊的賬號 上傳 使用慕客 藍湖等工具 與ui協調 切圖 要 使用css樣式布局 切圖一整天 我發現學生就是比較廉價的勞動力 工資低還加班 真實不當人 我們自己要知道值什麼價位 朝哪個目標走 一天天切圖雖然是重要技能 但是到了熟練的時候 其實就已經到上限 這時候...

找工作忙碌的一天

昨晚,學瑞通知我說,幫我投了32的簡歷,可能會收到筆試通知。一晚過去。早上7 50在東南大學 阿飛的宿舍,我在床上接到了筆試通知 9 30在南航 立即出門,找地鐵站,地鐵,9點趕到南航 結果通知的地點在上課,只好到隔壁教室等候。果然9點半才來了兩個老師,教室安排問題,在a教室考了15分鐘在b教室考了...

工作第一天

最近剛換了工作,今天是我在新公司工作的第一天,公司的氛圍不錯,上午的時候公司集體給新員工培訓了一下框架。雖然我不是很喜歡使用框架開發,但是乙個公司能夠擁有自己的框架也在某種程度上說明了公司的實力。框架培訓結束的時候就到了吃飯的時間了,走到公司的餐廳,一陣飯香撲鼻而來。排著隊去領飯,我要了乙份土豆絲,...