關注「實驗樓」,每天分享一個項目教程
每一個web開發人員在職業生涯初期都會進入Team Dev。如何讓自己工作更高效,並成為團隊其他成員希望合作的人。這裡有你需要掌握的7個技能,相信以下內容對正在求職的你也有很大協助。
本文共:2340字
預計閱讀時間:6分鐘
技能1:學習發起GitHub pull請求&代碼審查
和獨立完成工作不同,當作為技術團隊的其中一員時,整個團隊的責任是確保項目中都是高品質、經過測試和沒有bug的代碼。
一個好的技術團隊都會在代碼修改前進行程式碼檢閱,以確保代碼品質達到要求。這項評審工作一般是由沒有參與編寫代碼的人來完成的,他們需要檢查提議添加的代碼並進行逐行修改,還要尋找可能存在的問題。
在新代碼進入主分支之前請求代碼審查被稱為“pull請求”,好的技術團隊不會允許沒有經過pull請求的代碼進入項目。
由於經常需要代碼審查,GitHub提供的進階功能可以讓團隊輕鬆執行審查工作。
以下是Firehose項目的一名學生的GitHub pull請求的樣本:
(點擊圖片放大)
你可以看到指導老師是如何在特定程式碼上使用內聯代碼注釋功能來協助學生更好地組織代碼。
無論你是想為開源項目做貢獻還是在技術團隊中工作,你都應該具備以下技能:
建立新的pull請求,並向團隊提交代碼更改
觀察別人的代碼,記下你認為可能被忽略的東西
通過GitHub平台或代碼更改的方式回應其他人對自己代碼的關注
對代碼的反饋作出回應對你成為一個高效的開發人員至關重要。通過回應GitHub上的反饋,你能收穫許多,成長為一個更強大的開發人員。
技能2:學會拆分問題
每個團隊成員都能使代碼數量成倍增長,為了讓所有參與項目的人都能獲得回報,大任務可以分成許多平行處理的小任務。
舉個例子,如果你自己在做一個BlackJack遊戲,你的任務就是實現以下內容:
建立一個BlackJack遊戲
如果你有一個團隊來構建這個BlackJack遊戲,同樣的項目可以被分成許多小塊,每個成員可以同步執行。
為web應用程式建立一個登入頁面
為擁有MailChimp帳號的使用者儲存電子郵件
在代碼中構建一副牌的代表
支援使用者登入和退出
最佳化移動端頁面
通過分解任務,團隊可以分步驟達成最終目標。
即使是在專業領域,大多數項目也很難全部完成,因為對現有的應用程式經常需要添加的附加功能。尚未構建的功能列表估計要花一年或更多的時間才能完成。
因為技術團隊經常處理這些工作,而且這是個長期的過程,所以需要一步一個腳印地去做。
技能3:實施測試驅動(Test-Driven)的開發
在團隊中工作,你需要擁有一個強大的測試套件,不要自己一個人完成全部的編碼工作。這是因為項目可能會積累大量的代碼,比如10000行或者更多,並且可能會非常複雜。面對這些代碼,對於之前沒有直接參与應用程式編碼工作的人,很難瞭解到每個細節。
在構建功能時編寫測試能夠避免其他團隊成員(或將來的自己)以無法預測的方式破壞應用程式 。
整個測試套件花費超過10-20分鐘的時間運行一個複雜的項目是很正常的現象。專業的web開發人員經常使用“持續整合”工具來協助運行測試套件,這些整合工具會自動為每個pull請求進行測試。
技能4:積極溝通避免合并衝突(merge conflicts)
當兩個團隊成員試圖進行相互矛盾或衝突的變更時,就會發生合并衝突。作為一個團隊,良好的溝通可以協助避免衝突。
這裡有一個可能導致合并衝突的情境:
Marco和你正在做同樣的項目(Firehose項目的著陸頁),此時頁面標題是:“你的軟體生涯從這裡開始”。
如果你把標題改成 “你的軟體生涯從今天開始”,而Marco改成“在這裡開始你的軟體生涯”,你們最終會出現一個合并衝突。簡而言之,你們中的其中一個將不能把代碼更改發送到GitHub,直到你們把這個問題解決了。
在這個例子中,如果Marco和你能更好地溝通標題的更改問題,你們完全可以避免這種合并衝突。 在很多情況下,特別是在處理複雜的項目時,出現衝突在所難免。學習如何保持冷靜並與其他團隊成員積極溝通,充分瞭解他們的思考過程,並解決衝突最終實現自己和團隊的目標,這些只有通過團隊共同編碼才能得到鍛煉。
技能5:利用會議分享資訊
由於技術團隊成員之間的溝通非常重要,大多數團隊都會經常舉行會議,俗稱“stand-ups”,即“站立”會議。
在會議期間,技術團隊的成員一般會分享以下方面的資訊:
上次會議後做了什麼?
在下次會議前要完成什麼?
會議的時間為10-15分鐘,團隊中的每個人都需要在會議中分享資訊。為了加快會議的進度,成員們會把重點放在最重要的議題上。通過讓每個成員花1-2分鐘的時間談論他正在做的事情,可以讓其他團隊成員協助發現一些潛在問題,讓該成員少走彎路。
技能6:通過結對程式設計(Pair Programming)提供建設性的反饋
有時候你在做項目時,會發現自己要處理非常複雜的問題。這個時候與另一個團隊成員一起合作是非常必要的。
與另一個隊友一起協作解決困難的編碼問題,這個過程稱為結對程式設計。在結對程式設計期間,團隊的一名成員將坐在鍵盤後面,編寫代碼並“驅動”互動。另一個人會在他旁邊觀察編碼過程並提供即時反饋。
結對程式設計可以協助自己提升能力。剛開始的時候新手可能會怯於在別人面前寫代碼,因為他們會根據為根據代碼提供反饋意見。以協作的方式指出其他人代碼中存在的潛在問題也是一項需要學習的技能。
技能7:學會在不斷變化的環境中工作
在技術團隊中工作的最大挑戰是,你需要跳出舒適的環境,進入一個大家都在拚命寫複雜代碼的環境,還不能讓自己在這個過程中被壓垮。
在團隊中工作,並且每天都有許多程式碼快速變化,始終專註於你所分配的任務是很重要的。不管代碼如何發展,你都要相信你的團隊。你需要經常更新代碼以確保你使用的是最新代碼。
那麼,這些技術團隊的技能將如何協助你拿offer呢?
在技術面試過程中經常會出現關於團隊合作的問題。招聘經理對你在團隊中面臨的挑戰以及如何克服這些挑戰尤其感興趣。作為開發人員和技術團隊成員,你的答案和經曆能夠給他們一個真實、有價值的參考。
如果你被要求描述你在團隊合作中遇到過的挑戰,至少證明招聘經理對你是感興趣的。但如果你說你從未出現過任何合作上的問題,那麼評估你你的人可能會覺得你要麼沒有經驗,要麼沒說實話。
相反,你介紹了具體的合作經驗,清楚地瞭解與其他團隊成員溝通的重要性以及如何在出現問題時克服困難,這將非常打動招聘經理。
你應該將Team 專案的目標牢記於心,集中精力在小組項目中儘可能多地學習。
作者:Ken Mazaika
翻譯:sugarain
原文連結:http://blog.thefirehoseproject.com/posts/7-key-skills-youll-develop-working-in-a-technical-team/