萌新必看|程式設計師在技術團隊一定要學會的7件事,趕緊學起來!

實驗樓v發表於2018-05-15

關注「實驗樓」,每天分享一個專案教程   

轉眼又是一年畢業季,一大批小鮮肉碼農正在靠近……做對這下面的7件事,會幫助你更快地融入技術團隊,併成為團隊的領導者!

正文共:3035 字 

預計閱讀時間:8 分鐘

每一個web開發人員在職業生涯初期都會進入開發團隊。如何讓自己工作更高效,併成為團隊其他成員希望合作的人?這裡有你需要掌握的7個技能,相信以下內容對正在求職的你也有很大幫助。

技能1:學習發起GitHub pull請求&程式碼審查

和獨立完成工作不同,當作為技術團隊的其中一員時,整個團隊的責任是確保專案中都是高質量、經過測試和沒有bug的程式碼。

一個好的技術團隊都會在程式碼修改前進行程式碼評審,以確保程式碼質量達到要求。這項評審工作一般是由沒有參與編寫程式碼的人來完成的,他們需要檢查提議新增的程式碼並進行逐行修改,還要尋找可能存在的問題。

在新程式碼進入主分支之前請求程式碼審查被稱為“pull請求”,好的技術團隊不會允許沒有經過pull請求的程式碼進入專案。

由於經常需要程式碼審查,GitHub提供的高階功能可以讓團隊輕鬆執行審查工作。

以下是Firehose專案的一名學生的GitHub pull請求的示例:

你可以看到指導老師是如何在特定程式碼行上使用內聯程式碼註釋功能來幫助學生更好地組織程式碼。

無論你是想為開源專案做貢獻還是在技術團隊中工作,你都應該具備以下技能:

  • 建立新的pull請求,並向團隊提交程式碼更改

  • 觀察別人的程式碼,記下你認為可能被忽略的東西

  • 迴應其他人對自己程式碼的關注

對程式碼的反饋作出迴應對你成為一個高效的開發人員至關重要。通過迴應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呢?

在技術面試過程中經常會出現關於團隊合作的問題。招聘經理對你在團隊中面臨的挑戰以及如何克服這些挑戰尤其感興趣。作為開發人員和技術團隊成員,你的答案和經歷能夠給他們一個真實、有價值的參考。

如果你被要求描述你在團隊合作中遇到過的挑戰,至少證明招聘經理對你是感興趣的。但如果你說你從未出現過任何合作上的問題,那麼評估你你的人可能會覺得你要麼沒有經驗,要麼沒說實話。

相反,你介紹了具體的合作經驗,清楚地瞭解與其他團隊成員溝通的重要性以及如何在出現問題時克服困難,這將非常打動招聘經理。

你應該將團隊專案的目標牢記於心,集中精力在小組專案中儘可能多地學習。



作者:Ken Mazaika

翻譯:sugarain

原文連結:blog.thefirehoseproject.com



學習更多


樓+「 Python實戰 」、「 Linux運維與Devops實戰 」優惠報名中——來自騰訊、Intel、IBM等網際網路大廠的一線大牛,帶你12周內打通Python、Linux的任督二脈!

點選下面的連結瞭解詳情:

一個暑假打通Python任督二脈!12周特訓再次開啟~

11周打通 Linux 任督二脈,實驗樓技術天團帶你飛!

他在一線網際網路大廠研發PHP數年,用6周時間帶你打通“全宇宙最好的語言”


相關文章