在技术团队中发展的7个关键技能
在技??術(shù)團(tuán)隊(duì)中發(fā)展的7個(gè)關(guān)鍵技能
本文原文鏈接為:7 Key Skills You’ll Develop Working in a Technical Team
考慮一下您在日常生活中使用的所有不同類型的軟件:使用Facebook查看您的朋友的工作狀況,使用Google Chrome瀏覽器瀏覽互聯(lián)網(wǎng),使用Skype與朋友和家人聯(lián)系以及使用Spotify收聽音樂。盡管實(shí)現(xiàn)了截然不同的目的,但所有這些軟件都有哪些共同點(diǎn)?答案是,所有這些都是由技術(shù)團(tuán)隊(duì)共同編寫的,以構(gòu)建最佳程序。
如果您想幫助構(gòu)建供所有人使用的一流軟件,那么掌握的 最關(guān)鍵的事情之一就是如何成為技術(shù)團(tuán)隊(duì)中富有成效的成員。在開始作為Web開發(fā)人員的職業(yè)生涯時(shí),您將被其他初級(jí)和高級(jí)開發(fā)人員組成的團(tuán)隊(duì),并希望能夠從一開始就增加價(jià)值。
作為團(tuán)隊(duì)一部分開發(fā)軟件對(duì)于初級(jí)開發(fā)人員來說具有巨大的優(yōu)勢(shì)。團(tuán)隊(duì)中的其他成員有興趣為您提供指導(dǎo)并幫助您成為更好的開發(fā)人員。通過對(duì)代碼的不斷反饋,您可以期望每天不斷改進(jìn)和學(xué)習(xí)新知識(shí)。但是,與團(tuán)隊(duì)合作需要的技能與您自己工作需要的技能不同。
成為一個(gè)富有成效的團(tuán)隊(duì)成員,您只有在處于支持性的環(huán)境中時(shí),才能真正將自己置于一個(gè)真正的小組項(xiàng)目中,經(jīng)歷反復(fù)實(shí)驗(yàn)的過程,才能學(xué)到一些東西。這意味著您需要與其他人一起在一個(gè)項(xiàng)目上一起編碼,這些人會(huì)像看到該項(xiàng)目成功一樣投入大量精力。
在正確的團(tuán)隊(duì)環(huán)境中工作將幫助您成為其他開發(fā)人員希望與之合作的快樂而富有成效的團(tuán)隊(duì)成員。除此之外,它還將教您7種關(guān)鍵技能,這些技能對(duì)于被聘為網(wǎng)絡(luò)開發(fā)人員至關(guān)重要。
技能1:學(xué)習(xí)啟動(dòng)GitHub Pull請(qǐng)求和代碼審查
獨(dú)自工作時(shí),您自己應(yīng)對(duì)代碼的質(zhì)量負(fù)責(zé)。這意味著,如果您采用草率的捷徑或編寫質(zhì)量較差的代碼,則您將是唯一需要為此付出代價(jià)的人。作為技術(shù)團(tuán)隊(duì)的一部分時(shí),整個(gè)團(tuán)隊(duì)的責(zé)任是確保僅將高質(zhì)量,經(jīng)過良好測(cè)試且無(wú)錯(cuò)誤的代碼接受到項(xiàng)目中。
最好的團(tuán)隊(duì)需要在代碼更改被接受到項(xiàng)目中之前對(duì)代碼進(jìn)行審查,以確保代碼質(zhì)量達(dá)到其高標(biāo)準(zhǔn)。當(dāng)另一個(gè)未參與編寫代碼的團(tuán)隊(duì)成員審查提議的代碼添加并逐行更改并查找可能導(dǎo)致意外問題的內(nèi)容時(shí),便會(huì)進(jìn)行代碼審查。
由于代碼審查經(jīng)常發(fā)生,因此GitHub帶有高級(jí)功能,使團(tuán)隊(duì)可以輕松執(zhí)行代碼審查。
在新代碼被接受到主分支之前請(qǐng)求代碼審查被稱為發(fā)出請(qǐng)求請(qǐng)求,并且最好的技術(shù)團(tuán)隊(duì)不允許任何代碼未經(jīng)此請(qǐng)求請(qǐng)求過程進(jìn)入他們的項(xiàng)目。
在此過程中,您將提出建議的代碼更改,并允許其他開發(fā)人員查看這些更改。
以下是來自我們的Firehose Project學(xué)生之一的GitHub拉取請(qǐng)求示例。刪除的代碼行以紅色顯示,添加的代碼行以綠色顯示。
您可以看到指導(dǎo)者如何在特定代碼行上使用內(nèi)聯(lián)代碼注釋功能,以幫助學(xué)生更好地組織其代碼
無(wú)論您是要為開源項(xiàng)目做出貢獻(xiàn)還是要在技術(shù)團(tuán)隊(duì)中工作,都應(yīng)該具備以下技能:
- 創(chuàng)建新的請(qǐng)求,并向團(tuán)隊(duì)提出更改代碼的建議。
- 在別人的代碼上記下您認(rèn)為他們可能在代碼中忽略的內(nèi)容。
- 通過更改代碼或在GitHub平臺(tái)上發(fā)表評(píng)論來回應(yīng)人們對(duì)您的代碼的擔(dān)憂。
作為開發(fā)人員,您的工作不僅是實(shí)現(xiàn)功能,而且還要編寫代碼來實(shí)現(xiàn)符合團(tuán)隊(duì)高標(biāo)準(zhǔn)的功能。這意味著響應(yīng)代碼反饋對(duì)于您成為一名有效的開發(fā)人員至關(guān)重要。通過響應(yīng)有關(guān)GitHub的反饋,您將繼續(xù)成長(zhǎng),并成為一名更強(qiáng)大的開發(fā)人員。
技能2:學(xué)會(huì)將大問題分解為小問題
每個(gè)團(tuán)隊(duì)成員在團(tuán)隊(duì)可以產(chǎn)生的代碼數(shù)量上都成倍增加。為了獲得讓許多人參與同一項(xiàng)目的收益,需要將大型任務(wù)分解為可以并行處理的小型任務(wù)。
例如,如果您要獨(dú)自開發(fā)BlackJack游戲,則要做以下事情:
-
建立一個(gè)二十一點(diǎn)游戲
但是,如果您有一群人在開發(fā)相同的BlackJack游戲,則同一項(xiàng)目可能會(huì)分解成較小的塊,每個(gè)成員可以并行執(zhí)行。 -
構(gòu)建Web應(yīng)用程序的登錄頁(yè)面
-
為選擇加入MailChimp帳戶的用戶存儲(chǔ)電子郵件
-
在代碼中構(gòu)建一副紙牌的表示
-
支持用戶登錄和注銷
-
使頁(yè)面在Mobile上看起來很棒
通過將大任務(wù)分解成小塊,團(tuán)隊(duì)將能夠朝著完成的應(yīng)用程序的最終目標(biāo)邁出許多小步。
大多數(shù)項(xiàng)目,即使是在專業(yè)領(lǐng)域,也永遠(yuǎn)無(wú)法完全完成,因?yàn)榭傆衅渌δ芸梢蕴砑拥饺魏维F(xiàn)有應(yīng)用程序中。對(duì)于產(chǎn)品積壓(需要但尚未構(gòu)建的功能列表),估計(jì)需要一年或更長(zhǎng)時(shí)間才能完成,這并不少見!
由于技術(shù)團(tuán)隊(duì)通常需要做大量工作,因此,軟件開發(fā)是通過朝著正確的方向不斷走一步來構(gòu)建的,將大型功能分解為較小的功能在每次到達(dá)終點(diǎn)時(shí)都發(fā)揮著巨大作用。
技能3:實(shí)施測(cè)試驅(qū)動(dòng)的開發(fā)以取得未來的成功
在團(tuán)隊(duì)中工作時(shí),擁有強(qiáng)大的測(cè)試套件比起您是牛仔編碼員或自己編寫全部編碼更為重要。這是因?yàn)轫?xiàng)目可以聚集大量代碼,認(rèn)為需要10,000行或更多行,并且很快會(huì)變得非常復(fù)雜。有了這么多的代碼,就無(wú)法期望以前從未直接與應(yīng)用程序的特定部分合作的人知道應(yīng)用程序如何工作的每一個(gè)細(xì)微差別。
通過在構(gòu)建功能時(shí)編寫測(cè)試,可以防止其他團(tuán)隊(duì)成員(或?qū)淼淖约?#xff09;無(wú)意間以無(wú)法在構(gòu)建軟件時(shí)預(yù)測(cè)的方式破壞應(yīng)用程序。
讓整個(gè)測(cè)試套件花費(fèi)10到20分鐘以上的時(shí)間來運(yùn)行一個(gè)復(fù)雜的項(xiàng)目是很正常的。專業(yè)的Web開發(fā)人員經(jīng)常使用“持續(xù)集成”工具來幫助他們運(yùn)行測(cè)試服。這些持續(xù)集成工具會(huì)針對(duì)每個(gè)請(qǐng)求請(qǐng)求自動(dòng)運(yùn)行測(cè)試,并有助于防止成員將殘破的測(cè)試接受到代碼中。
技能4:解決合并沖突并改善溝
當(dāng)兩個(gè)團(tuán)隊(duì)成員試圖進(jìn)行矛盾或沖突的更改時(shí),就會(huì)發(fā)生合并沖突。團(tuán)隊(duì)之間的良好溝通可以幫助避免可避免的沖突,但是有時(shí)它們只是由于將軟件作為技術(shù)團(tuán)隊(duì)的一部分而產(chǎn)生的。
這是一種可能導(dǎo)致合并沖突的方案:
說馬可(Marco)和我正在同一個(gè)項(xiàng)目,即Firehose Project登陸頁(yè)面。現(xiàn)在,頁(yè)面標(biāo)題顯示:“您的軟件職業(yè)從這里開始”。
如果我將標(biāo)題更改為“今天開始您的軟件職業(yè)生涯”,而Marco同時(shí)將標(biāo)題更改為“從這里開始您的軟件職業(yè)生涯”,那么我們將發(fā)生合并沖突。簡(jiǎn)而言之,在我們處理試圖同時(shí)以兩種不同且相互矛盾的方式更改一行代碼這一事實(shí)之前,不允許我們中的一個(gè)將代碼更改發(fā)送到GitHub。
在此示例中,如果我和Marco能夠更好地交流有關(guān)更改標(biāo)題的信息,那么我們可以避免這種合并沖突。在許多情況下,尤其是在處理復(fù)雜項(xiàng)目時(shí),會(huì)出現(xiàn)沖突。學(xué)習(xí)如何保持鎮(zhèn)定,與其他團(tuán)隊(duì)成員進(jìn)行交流以充分理解他們對(duì)所做的更改的思考過程,并解決沖突以實(shí)現(xiàn)您的目標(biāo)和團(tuán)隊(duì)成員在進(jìn)行更改時(shí)所達(dá)到的目標(biāo),這是您只能使用的技能通過團(tuán)隊(duì)合作共同學(xué)習(xí)。
技能5:利用站立/ Scrum會(huì)議分享知識(shí)
由于技術(shù)團(tuán)隊(duì)成員之間的溝通非常關(guān)鍵,因此大多數(shù)團(tuán)隊(duì)將舉行頻繁的會(huì)議,俗稱“站起來”。
在會(huì)議期間,要求技術(shù)團(tuán)隊(duì)成員快速更新團(tuán)隊(duì)其他成員的以下詳細(xì)信息:
- 自上次會(huì)議以來,您從事什么工作?
- 從現(xiàn)在到下一次會(huì)議,您打算做什么?
通過讓每個(gè)成員談?wù)撍麄冋趶氖碌墓ぷ?0-120秒,其他團(tuán)隊(duì)成員通常會(huì)更多地了解特定功能的潛在問題區(qū)域,可以防止團(tuán)隊(duì)成員陷入可避免的困境。
站立會(huì)議的時(shí)間為10至15分鐘,團(tuán)隊(duì)中的每個(gè)人都必須在會(huì)議期間參加會(huì)議。在會(huì)議過程中站立會(huì)加快會(huì)議速度,并使人們專注于最重要的主題。
技巧6:使用結(jié)對(duì)編程提供建設(shè)性的反饋
有時(shí),當(dāng)您從事項(xiàng)目工作時(shí),會(huì)發(fā)現(xiàn)自己正在處理非常復(fù)雜的問題。有時(shí),您會(huì)發(fā)現(xiàn)自己正在從事更直接的任務(wù)。當(dāng)您負(fù)責(zé)要完成的任務(wù)時(shí),與另一個(gè)團(tuán)隊(duì)成員一起工作非常有價(jià)值。
您和另一個(gè)隊(duì)友之間用來解決編碼難題的協(xié)作過程稱為結(jié)對(duì)編程。在結(jié)對(duì)編程期間,團(tuán)隊(duì)中的一名成員將坐在鍵盤后面,編寫代碼并“推動(dòng)”交互。另一個(gè)人將坐在該人后面,觀察編碼過程并提供實(shí)時(shí)反饋。
掌握領(lǐng)導(dǎo)編寫的代碼并以有效方式提供實(shí)時(shí)反饋的技能是一項(xiàng)重要的技能。一開始,在別人面前編碼可能會(huì)很嚇人,因?yàn)樗麄冎滥鷷?huì)在編碼時(shí)給您反饋。以協(xié)作的方式指出他人代碼中的潛在問題也是一項(xiàng)需要時(shí)間學(xué)習(xí)的技能。
技能7:學(xué)會(huì)在不斷變化的環(huán)境中工作
作為技術(shù)團(tuán)隊(duì)的一部分,要適應(yīng)的最大挑戰(zhàn)之一是在許多人正在編寫復(fù)雜的代碼且不被流程淹沒的環(huán)境中適應(yīng)工作。
當(dāng)以團(tuán)隊(duì)的方式構(gòu)建功能,并且每天都有許多行代碼快速變化時(shí),務(wù)必始終專注于已分配的任務(wù),這一點(diǎn)很重要。盡管代碼始終圍繞著您發(fā)展,但是您需要信任您的團(tuán)隊(duì)和流程。
由于代碼在不斷變化,因此經(jīng)常更新正在使用的代碼并確保使用最新的代碼非常重要。此過程稱為“提取”由其他團(tuán)隊(duì)成員提供的代碼,并且養(yǎng)成每天提取多次的習(xí)慣可以使您免于處理不最新的代碼。
那么,這些技術(shù)團(tuán)隊(duì)技能將如何幫助您找到工作?
作為技術(shù)團(tuán)隊(duì)的一部分來構(gòu)建項(xiàng)目時(shí),學(xué)習(xí)如何協(xié)作,交流和使用正確的工具非常重要。話雖如此,所有小組項(xiàng)目的經(jīng)驗(yàn)并不能平等地創(chuàng)造出來。
在現(xiàn)實(shí)世界中,團(tuán)隊(duì)合作并不總是很順利,每個(gè)人都知道這一點(diǎn)。重要的是如何解決團(tuán)隊(duì)合作中遇到的挑戰(zhàn)。
在技??術(shù)面試過程中經(jīng)常會(huì)出現(xiàn)有關(guān)團(tuán)隊(duì)合作的問題。招聘經(jīng)理對(duì)團(tuán)隊(duì)合作時(shí)面臨的挑戰(zhàn)以及如何克服這些挑戰(zhàn)特別感興趣。您的答案和經(jīng)驗(yàn)使他們成為開發(fā)人員和技術(shù)團(tuán)隊(duì)成員時(shí)解決問題的技能的真實(shí)世界和寶貴觀點(diǎn)。
當(dāng)要求您描述一個(gè)挑戰(zhàn)時(shí),您克服了在團(tuán)隊(duì)中的工作,每個(gè)人都會(huì)學(xué)到一些東西。另一方面,如果您表示您在協(xié)作編碼方面從未遇到任何問題,那么正在評(píng)估您作為候選人的團(tuán)隊(duì)可能會(huì)認(rèn)為您要么經(jīng)驗(yàn)不足,要么不說實(shí)話。無(wú)論哪種方式,您都不太可能得到這份工作。
取而代之的是,從特定的經(jīng)驗(yàn)中了解與其他團(tuán)隊(duì)成員進(jìn)行清晰溝通的重要性以及在出現(xiàn)溝通問題時(shí)如何克服溝通問題,這將使正在將您與該職位其他候選人進(jìn)行比較的團(tuán)隊(duì)印象深刻。
如果您想換工作,那么擁有團(tuán)隊(duì)經(jīng)驗(yàn)的復(fù)雜應(yīng)用程序至關(guān)重要。這是因?yàn)樵诂F(xiàn)實(shí)世界中,即使當(dāng)您與“僅”其他4-8個(gè)開發(fā)人員的團(tuán)隊(duì)一起工作時(shí),項(xiàng)目也會(huì)很快變得復(fù)雜。
如果您構(gòu)建了簡(jiǎn)單的應(yīng)用程序,以團(tuán)隊(duì)的形式在屏幕上簡(jiǎn)單地顯示數(shù)據(jù)庫(kù)中的信息,那么招聘經(jīng)理將不會(huì)留下深刻的印象。另一方面,構(gòu)建象棋牌游戲這樣的項(xiàng)目非常復(fù)雜,而且處理邏輯激烈,將給人留下深刻的印象。
盡管從表面上看象棋游戲聽起來可能并不十分復(fù)雜,但是它具有許多復(fù)雜的功能。例如:
- 鑒于其他棋子在棋盤上的位置,您如何驗(yàn)證皇后可以移動(dòng)到棋盤上的特定位置?
- 您將如何啟用劃動(dòng)動(dòng)作?
- 你會(huì)如何做順便工作?
- 當(dāng)用戶#1移動(dòng)作品而無(wú)需刷新頁(yè)面時(shí),如何為用戶#2更新板子。
- 您將如何檢查將死/檢查?
我們從事小組項(xiàng)目工作的一名學(xué)生在紐約的一家公司找到了工作,而為時(shí)2小時(shí)的面試過程主要需要在小組項(xiàng)目期間檢查她的代碼并從構(gòu)建國(guó)際象棋應(yīng)用程序中提取請(qǐng)求。
您應(yīng)該確保牢記一個(gè)小組項(xiàng)目的目標(biāo)。這都是關(guān)于構(gòu)建復(fù)雜的應(yīng)用程序的;不一定有成千上萬(wàn)的用戶使用它。與其嘗試提??出具有最大潛力的想法,不如在小組項(xiàng)目中全力以赴學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的在技术团队中发展的7个关键技能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode刷题-两数之和(持续更新
- 下一篇: 详细分析JVM内存模型