日韩高清亚洲日韩精品一区二区三区,成熟人妻av无码专区,国产又A又黄又潮娇喘视频,男女猛烈无遮挡免费视频在线观看

研發(fā)團(tuán)隊(duì)?wèi)?yīng)該如何進(jìn)行職責(zé)分配?(研發(fā)團(tuán)隊(duì)人員構(gòu)成是什么樣的)

研發(fā)團(tuán)隊(duì)?wèi)?yīng)該如何進(jìn)行職責(zé)分配?(研發(fā)團(tuán)隊(duì)人員構(gòu)成是什么樣的)

當(dāng)從單體應(yīng)用轉(zhuǎn)向“微”的一切——微服務(wù)、微前端,我們會(huì)發(fā)現(xiàn)還有很多“東西”要研發(fā)和維護(hù)。這就引出了一個(gè)問(wèn)題:該由誰(shuí)來(lái)負(fù)責(zé)呢?

舉個(gè)簡(jiǎn)單的例子,設(shè)想一支由 6 名開(kāi)發(fā)者組成的小型團(tuán)隊(duì)。

這支團(tuán)隊(duì)已經(jīng)創(chuàng)建并支持一款移動(dòng)應(yīng)用、一項(xiàng) Alexa 技能、三款獨(dú)立的網(wǎng)絡(luò)應(yīng)用和十五個(gè)微服務(wù)。

盡管他們成功地在整個(gè)生態(tài)系統(tǒng)中實(shí)現(xiàn)了一定的標(biāo)準(zhǔn)化,但鑒于現(xiàn)代軟件開(kāi)發(fā)的本質(zhì),它只是很多而已。Python、Django、DynamoDB、S3、ReactTypeScript、Tailwind、Swift 等等都一起工作,都是為了實(shí)現(xiàn)用戶界面、API、數(shù)據(jù)持久性、集成等等。

但對(duì)于任何一位開(kāi)發(fā)者而言,這都太多了。

另外,每次 Sprint 都會(huì)有不同的改進(jìn)和修復(fù)需求,而且工作很少能夠在代碼庫(kù)中平均分配。一次 Sprint 可能要求對(duì)移動(dòng)應(yīng)用程序進(jìn)行大量的改動(dòng),而接下來(lái)的 Sprint 可能要求主要在后端工作。

那么,問(wèn)題來(lái)了:怎樣才能最好地部署一支團(tuán)隊(duì),以適應(yīng)一次接一次 Sprint 的業(yè)務(wù)需求?換言之,我們?cè)鯓硬拍芨眠M(jìn)行職責(zé)分配?

比如說(shuō),我們鼓勵(lì)專業(yè)化嗎?像指派 Emily 處理所有的移動(dòng)開(kāi)發(fā)工作,讓 Joe 負(fù)責(zé)網(wǎng)絡(luò)組件這樣的。除了技術(shù)棧之外,如果我們有十幾個(gè)微服務(wù),我們會(huì)不會(huì)在它們周圍劃分界限,例如 Javier 負(fù)責(zé)微服務(wù) A 和 B,Anna 負(fù)責(zé)微服務(wù) C 和 D,諸如此類?如果他們特定領(lǐng)域的工作在連續(xù)數(shù)次 Sprint 都很輕松后會(huì)怎樣呢?能讓他們有一點(diǎn)空閑的時(shí)間嗎?

還是說(shuō),我們應(yīng)該努力優(yōu)化利用率,鼓勵(lì)更多的全棧、跨域文化,每個(gè)開(kāi)發(fā)者都做這一切……這合理嗎?

影響因素

正如開(kāi)發(fā)軟件一樣,我們?cè)谶M(jìn)入一個(gè)解決方案之前,應(yīng)該退一步,試圖弄清楚我們要解決的問(wèn)題。我認(rèn)為,在考慮開(kāi)發(fā)者的職責(zé)和所有權(quán)時(shí),應(yīng)該考慮以下四個(gè)方面:

  1. 顯而易見(jiàn)的是生產(chǎn)力。當(dāng)所有條件都一樣時(shí),我們要把團(tuán)隊(duì)的結(jié)構(gòu)安排得盡可能好,這樣才能讓他們完成的工作最大化。所以,優(yōu)化生產(chǎn)力往往是為了讓開(kāi)發(fā)者的工作能夠與自己的技術(shù)和經(jīng)驗(yàn)保持一定的一致性。比如,Emily 在前一次 Sprint 中從事移動(dòng)應(yīng)用的開(kāi)發(fā),那么她將會(huì)比那些一直在后端工作的開(kāi)發(fā)者更早地開(kāi)發(fā)出新的特性。
  2. 我們也要重視質(zhì)量問(wèn)題。和上面類似,在某個(gè)特定的代碼庫(kù)中擁有更多實(shí)踐經(jīng)驗(yàn)的開(kāi)發(fā)者,可能會(huì)以更高的質(zhì)量來(lái)實(shí)現(xiàn)新的特性,而不是那些只在某次 Sprint 空降到團(tuán)隊(duì),卻不了解結(jié)構(gòu)、模式或慣例的人。即使是最優(yōu)秀的開(kāi)發(fā)者,在不了解代碼庫(kù)的情況下,也會(huì)寫出蹩腳的代碼。
  3. 組織往往也需要降低開(kāi)發(fā)者離職的風(fēng)險(xiǎn),以及隨之而去的知識(shí)。這才是問(wèn)題的關(guān)鍵所在,而這往往與上述目標(biāo)相悖。盡管將一個(gè)又一個(gè) Sprint 開(kāi)發(fā)任務(wù)指派給一個(gè)移動(dòng)開(kāi)發(fā)者可以將生產(chǎn)力和質(zhì)量最大化,但是一旦這名開(kāi)發(fā)者接到 Meta 招聘者的短信時(shí),那么組織就會(huì)處于危險(xiǎn)的境地。
  4. 最后,我們不能忽視開(kāi)發(fā)者的幸福感這個(gè)看不見(jiàn)的因素。不過(guò),這件事也是非常復(fù)雜的。有些人喜歡多元化和新鮮感,所以當(dāng)他們?cè)谝淮斡忠淮?Sprint 被困于同一個(gè)系統(tǒng)時(shí),就可能會(huì)降低生產(chǎn)力或者跳槽。另一些人則更愿意看到可預(yù)見(jiàn)的未來(lái),并以擁有自己的領(lǐng)地為榮,頻繁跳槽會(huì)讓他們抓狂。換句話說(shuō),我們每個(gè)人都是不同的,但確保我們能夠得到滿足、有挑戰(zhàn)的機(jī)會(huì),這一點(diǎn)很重要。

假設(shè)這些是需要考慮的正確因素,那么關(guān)鍵在于,每一家組織都要根據(jù)這些要素的“權(quán)重”來(lái)確定策略。優(yōu)化最重要的是什么?可能有些是時(shí)間緊迫帶來(lái)了壓力(如最后期限),因此生產(chǎn)力必須得到優(yōu)化。又或者,開(kāi)發(fā)者市場(chǎng)是如此火爆,最重要的就是讓開(kāi)發(fā)者感到開(kāi)心,而不是什么提高生產(chǎn)力。也就是說(shuō),它在很大程度上取決于環(huán)境。

本文將在此探討“如何”做,并假定組織已經(jīng)了解自己將進(jìn)行優(yōu)化的內(nèi)容,并為團(tuán)隊(duì)建立職責(zé)而選擇一些模式。但是有哪些模式可選呢?下面是我遇到過(guò)的一些常見(jiàn)模式。

所有權(quán)模式

我們經(jīng)常會(huì)在代碼所有權(quán)的策略上做文章。有時(shí)候很默契:每個(gè)人都尊重這樣的安排:Joe 負(fù)責(zé)網(wǎng)絡(luò)的事情,Emily 負(fù)責(zé)移動(dòng)開(kāi)發(fā),我負(fù)責(zé)支付微服務(wù)等等。其他時(shí)候,這也是正式的安排:管理層聘請(qǐng) Joe 為網(wǎng)絡(luò)開(kāi)發(fā)者,Emily 為移動(dòng)開(kāi)發(fā)者等。無(wú)論哪種情況,實(shí)踐中都是類似的:當(dāng)新的特性或修復(fù)問(wèn)題出現(xiàn)時(shí),我們會(huì)根據(jù)“擁有”的東西進(jìn)行劃分。

這讓我們(從個(gè)體角度來(lái)說(shuō))最大限度提高了生產(chǎn)力,并且(通常)提高了質(zhì)量。但是,它也存在一定的缺陷。

首先,人們可以儲(chǔ)存不同系統(tǒng)的第一手知識(shí),如果有人“中了彩票”或“被公交車撞了”,企業(yè)就會(huì)面臨巨大的風(fēng)險(xiǎn)。此外,如果開(kāi)發(fā)者想要學(xué)習(xí)新事物,“所有權(quán)”有時(shí)就像一種束縛。

最后,必須指出的是,盡管個(gè)人生產(chǎn)力得到了提升(因?yàn)殚_(kāi)發(fā)者很熟悉他們的代碼庫(kù)),但集體的生產(chǎn)力往往會(huì)隨著所有權(quán)的增加而下降。正如上面所討論的,由于工作負(fù)荷在每次 Sprint 并不能做到完全平衡,因此可能會(huì)造成擁有所有權(quán)的開(kāi)發(fā)者出現(xiàn)“盛宴”和“饑荒”的情況。例如,在一次 Sprint 中,他們代碼庫(kù)中的工作超出了所有者能夠處理的范圍,這導(dǎo)致了很大的瓶頸(或加班到深夜?。?,但到了下個(gè)月就沒(méi)有什么事情可做了,而這個(gè)所有者或多或少就是閑著的。

自由競(jìng)爭(zhēng)模式

當(dāng)組織感受到所有權(quán)帶來(lái)的種種痛楚時(shí),他們傾向于放棄任何策略,只是隨心所欲:即自由競(jìng)爭(zhēng)。這個(gè)模式就像它聽(tīng)起來(lái)一樣的簡(jiǎn)單。一位經(jīng)理看到那里有一堆工作,就說(shuō):“嘿,你,碼農(nóng),趕緊干活吧!” 然后就這樣了。

盡管這樣的策略的確可以保證總體分配均衡(即 Emily 在沒(méi)有移動(dòng)工作的時(shí)候也不會(huì)無(wú)所事事,因?yàn)樗焕ヌ幚?Python 服務(wù)),但這種模式可能既累人,又充滿質(zhì)量問(wèn)題。如果我們沒(méi)有與我們所從事的代碼庫(kù)建立長(zhǎng)久聯(lián)系,那么我們的工作就只是權(quán)宜之計(jì),并以無(wú)知為指導(dǎo)。我們?cè)诙唐趦?nèi)采用了一種古怪的修復(fù)方法,因?yàn)椴恢栏玫霓k法,或者我們并不關(guān)心——下一次 Sprint 我們就會(huì)在不同的代碼庫(kù)里了!正如他們所說(shuō),“誰(shuí)也不會(huì)把租來(lái)的汽車洗干凈?!?/span>

這種自由競(jìng)爭(zhēng)的模式往往是由管理層推動(dòng)的,他們理想化地認(rèn)為我們是可替換的勤雜工(也就是傳說(shuō)中的全棧開(kāi)發(fā)者),無(wú)論什么層級(jí)、系統(tǒng)或業(yè)務(wù)領(lǐng)域,都能夠迅速、優(yōu)雅而輕松地解決任何技術(shù)挑戰(zhàn)。當(dāng)然,這是無(wú)稽之談。除了最微不足道的系統(tǒng)或者最出色的開(kāi)發(fā)者,其他的都太復(fù)雜了,如果沒(méi)有足夠的時(shí)間來(lái)提高我們的能力,就不可能掌握所有的東西。

管理權(quán)模式

現(xiàn)在,在所有權(quán)和自由競(jìng)爭(zhēng)這兩個(gè)極端之間,存在著一種管理模式(或稱監(jiān)護(hù)權(quán))。類似于所有權(quán),開(kāi)發(fā)者會(huì)在自己最擅長(zhǎng)的領(lǐng)域管理特定的代碼庫(kù),他們可能在這個(gè)項(xiàng)目中做了大部分的初始工作,他們的名字在代碼中隨處可見(jiàn),但是他們并不是什么都要做。然而,必須在做出變更時(shí),至少要征求他們的看法,讓他們參與到生產(chǎn)問(wèn)題的分類或者是討論設(shè)計(jì)的變更。

比如,Emily 可以在門戶網(wǎng)站工作量繁重的時(shí)候過(guò)去幫 Joe 一把,而在事情平息下來(lái)的時(shí)候再回到她的移動(dòng)應(yīng)用開(kāi)發(fā)工作。換句話說(shuō),這種模式同時(shí)平衡了個(gè)人和集體的生產(chǎn)力。此外,由于開(kāi)發(fā)者對(duì)自己工作之外的其他領(lǐng)域已經(jīng)有了一定的了解(即可以學(xué)到一些新知識(shí)),所以這種模式在風(fēng)險(xiǎn)減輕和開(kāi)發(fā)者的幸福感之間起到了很好的平衡。

管理權(quán)的重要之處在于,盡管不像所有權(quán)那樣正式,但是它還是被清楚地界定和實(shí)施。該模式下至少有一些事情要做:應(yīng)當(dāng)有一份管理者清單,可以定義每個(gè)管理者的管理范圍;GitHub(或者其他 SCM 工具)應(yīng)當(dāng)被配置成由管理者批準(zhǔn)所有的拉取請(qǐng)求,并且管理者應(yīng)當(dāng)有充足的時(shí)間對(duì)其組件進(jìn)行必要的“管理”。如果這方面沒(méi)有特定的形式和紀(jì)律,所有的事情都會(huì)順著滑坡滑下去,直至處于自由競(jìng)爭(zhēng)的坑中。

接管權(quán)模式

最后,一種在大型組織中非常流行的模式可能也很重要,就是“接管權(quán)”,有少數(shù)被選中的人(通常是宇航員架構(gòu)師)負(fù)責(zé)“擁有”一切。他們擁有豐富的知識(shí)、作出重大的技術(shù)決策,并設(shè)計(jì)業(yè)務(wù)邏輯和結(jié)構(gòu),但實(shí)際的具體工作由每個(gè)開(kāi)發(fā)者來(lái)完成,而且往往是以自由競(jìng)爭(zhēng)的方式進(jìn)行。

這種模式在理論上非常有效。通過(guò)接管者與動(dòng)手的開(kāi)發(fā)者分享他們的“智慧”,為快速、高效的解決方案開(kāi)辟了一條途徑,實(shí)現(xiàn)了效率和質(zhì)量的優(yōu)化。有了接管者的協(xié)助,開(kāi)發(fā)者可以自由出入代碼庫(kù),并通過(guò)接管者來(lái)迅速進(jìn)入狀態(tài)。

但在實(shí)踐中從未產(chǎn)生過(guò)這種影響。沒(méi)有任何實(shí)踐經(jīng)驗(yàn)的接管者會(huì)迅速與技術(shù)現(xiàn)實(shí)脫節(jié),而且不能真正幫助開(kāi)發(fā)者實(shí)現(xiàn)某些改進(jìn)或修補(bǔ)某些 Bug。開(kāi)發(fā)者可能要耗費(fèi)相同的時(shí)間去改進(jìn),同時(shí),由于基本上將自己的自主權(quán)(和創(chuàng)造力)交給了那些能夠指揮他們的接管者,所以他們可能會(huì)感到挫敗。

作為一個(gè)曾經(jīng)扮演過(guò)接管者角色的人,我認(rèn)為這種模式對(duì)任何人都很糟糕,這就是為什么我盡量避免這種類型的角色。

這些只是我遇到的幾種分工模式,我也很想聽(tīng)聽(tīng)你的想法和經(jīng)驗(yàn)。

作者介紹:

Ben Northrop,畢業(yè)于卡耐基梅隆大學(xué),自詡“老”程序員,寫博客將近 20 年。2017 年,創(chuàng)辦了 Highline Solutions,是一家專注軟件架構(gòu)和全棧開(kāi)發(fā)的咨詢公司。

原文鏈接:

https://bennorthrop.com/Essays/2022/code-ownership-stewardship-or-free-for-all.php

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁(yè)
返回頂部