作者:京東零售 井亮亮
引言
近期在參與編寫平臺(tái)工程系列標(biāo)準(zhǔn)時(shí),我發(fā)現(xiàn)開發(fā)者體驗(yàn) (DevEx) 是一個(gè)不可忽視的關(guān)鍵因素,它對(duì)于構(gòu)建一個(gè)成功的平臺(tái)工程起到了重要的作用,DevEx 可以稱之為平臺(tái)工程的基礎(chǔ)。基于我最近的學(xué)習(xí)和思考,我決定寫這篇文章,想深入探討一下 DevEx 對(duì)于內(nèi)部開發(fā)平臺(tái)的重要性,也希望為從事內(nèi)部開發(fā)平臺(tái)的同學(xué)們帶來一些新的思考。
了解平臺(tái)工程
平臺(tái)工程是設(shè)計(jì)和構(gòu)建工具鏈和工作流的學(xué)科,可在云原生時(shí)代為軟件工程組織提供自助服務(wù)功能。平臺(tái)工程師提供的集成產(chǎn)品通常被稱為“內(nèi)部開發(fā)人員平臺(tái)”,涵蓋了應(yīng)用程序整個(gè)生命周期的運(yùn)營(yíng)需求。 --定義來自 platformengineering.org
關(guān)于平臺(tái)工程的定義和思考,我在上一篇《扯淡的DevOps,我們開發(fā)根本不想做運(yùn)維!》文章也提到了,關(guān)于定義目前雖然從文字內(nèi)容上有些差異,但大部分的意思較為一致:主要是倡導(dǎo)自助服務(wù),將底層基礎(chǔ)支撐工具的復(fù)雜性和不確定性去減少,減化工作流程,最終用戶在使用過程中的認(rèn)知成本降低,從而改善了最終用戶的體驗(yàn),和提高生產(chǎn)效率。
為什么需要平臺(tái)工程
在公司內(nèi)部,有負(fù)責(zé)中臺(tái)的研發(fā)團(tuán)隊(duì),有負(fù)責(zé)前臺(tái)的研發(fā)團(tuán)隊(duì),還有團(tuán)隊(duì)專注于開發(fā)者平臺(tái)的研發(fā)。這些從事內(nèi)部開發(fā)者平臺(tái)的同學(xué),實(shí)際上就是平臺(tái)工程團(tuán)隊(duì)。與其他團(tuán)隊(duì)相比,平臺(tái)工程團(tuán)隊(duì)最大的區(qū)別在于他們需要具備產(chǎn)品思維。這些團(tuán)隊(duì)的同學(xué)可以稱做平臺(tái)工程師,那么每個(gè)平臺(tái)工程師最少是個(gè)兼職產(chǎn)品經(jīng)理。
然而,在實(shí)際情況中,這些平臺(tái)工程師可能過于專注于技術(shù)實(shí)現(xiàn),而會(huì)忽略用戶的需求和反饋。他們可能會(huì)認(rèn)為自己負(fù)責(zé)的工具平臺(tái)自己是最了解的,因此很少會(huì)去調(diào)研真正用戶的需求和反饋,日復(fù)一日不斷地開發(fā)新的產(chǎn)品和功能。
這里拋個(gè)問題,可以思考一下:為什么企業(yè)在選擇上云時(shí),往往不直接使用公有云控制臺(tái),而是通過企業(yè)的云管平臺(tái)提供服務(wù)呢?
表面來看,直接使用公有云控制臺(tái)似乎是最簡(jiǎn)單高效的選擇。然而,當(dāng)使用以后我們深入分析后發(fā)現(xiàn),這種選擇可能會(huì)帶來一系列的嚴(yán)重問題。最終可能會(huì)造成資源浪費(fèi)、資源安全性問題。另外,使用公有云控制臺(tái)的使用成本也較高,從而也降低了用戶的體驗(yàn)。
在平臺(tái)工程的倡導(dǎo)下,應(yīng)該降低開發(fā)人員的認(rèn)知負(fù)荷和使用成本,企業(yè)通過 云管平臺(tái) 來提供服務(wù),可以有效降低開發(fā)人員使用認(rèn)知成本,提升用戶的體驗(yàn),讓開發(fā)人員能夠更專注于構(gòu)建自己的應(yīng)用程序。
了解 DevEx
開發(fā)者體驗(yàn) (DevEx) 指的是軟件開發(fā)人員在日常工作中遇到的整體環(huán)境、工具、實(shí)踐和文化。它涵蓋了從設(shè)置開發(fā)環(huán)境的便捷性,到工作流程的效率,到工具和流程的有效性,以及整體的支持其創(chuàng)造性和技術(shù)努力的工作文化。
一個(gè)最常見的誤解是,開發(fā)者體驗(yàn) (DevEx) 主要受內(nèi)部開發(fā)者工具的影響。然而,根據(jù)調(diào)研發(fā)現(xiàn),除了工具因素外,環(huán)境因素和人為因素同樣對(duì)開發(fā)者體驗(yàn)產(chǎn)生重大影響。
環(huán)境因素包括辦公環(huán)境、團(tuán)隊(duì)文化等。一個(gè)良好的工作環(huán)境能夠激發(fā)創(chuàng)造力,提高工作效率。例如,一些公司為了營(yíng)造輕松愉悅的辦公氛圍,提供了各種娛樂設(shè)施,如啤酒桶、咖啡角、彈球臺(tái)、乒乓球臺(tái)等設(shè)施,旨在讓開發(fā)者緩解工作壓力,有助于提升開發(fā)體驗(yàn)。
另外,項(xiàng)目的穩(wěn)定性、目標(biāo)的明確性、績(jī)效考核方式的清晰性也是影響開發(fā)者體驗(yàn)的重大因素。如果項(xiàng)目團(tuán)隊(duì)經(jīng)常調(diào)整組織架構(gòu),項(xiàng)目目標(biāo)不明確,績(jī)效考核 A/A+ 的定義模糊不清,開發(fā)人員會(huì)感到非常困惑和不安,會(huì)極大影響研發(fā)同學(xué)的工作效率和體驗(yàn)。
因此,DevEx 是平臺(tái)工程的基石,是促進(jìn)開發(fā)人員效率提升的最佳路徑。
DevEx 在平臺(tái)工程中的意義
提升開發(fā)人員的效率一直以來都是一個(gè)追求的目標(biāo),但如何衡量開發(fā)人員的效率卻一直是一個(gè)難題。僅僅追求需求交付周期或開發(fā)交付周期是相對(duì)比較片面的,未能考慮到開發(fā)人員的工作是一個(gè)復(fù)雜且多樣化的任務(wù)。那么,怎么來衡量開發(fā)人員的生產(chǎn)力呢?
然而,一些企業(yè)在追求提高開發(fā)人員生產(chǎn)力方面取得了一些發(fā)現(xiàn),他們發(fā)現(xiàn)注重開發(fā)人員的體驗(yàn),以開發(fā)人員體驗(yàn)為目標(biāo)的方法(DevEx)可以極大地促進(jìn)開發(fā)人員的效率。根據(jù) Gartner 的調(diào)研報(bào)告,78% 的受訪企業(yè)已經(jīng)制定或計(jì)劃制定 DevEx 提升計(jì)劃。DevEx 提供了一個(gè)度量框架,該框架將開發(fā)人員的反饋、認(rèn)知負(fù)荷成本和專注程度綜合在一起,為開發(fā)人員提供了清晰、可操作的衡量維度。
在平臺(tái)工程領(lǐng)域,DevEx 是一個(gè)至關(guān)重要的因素。關(guān)注它不僅可以提高開發(fā)人員的工作效率,還可以加快交付周期,并提升開發(fā)者的幸福感。通過關(guān)注開發(fā)人員的體驗(yàn)和提供良好的工具和環(huán)境,企業(yè)為開發(fā)人員創(chuàng)造一個(gè)舒適且高效的工作環(huán)境,從而可以提高整體的開發(fā)效率和質(zhì)量。
落地 DevEx
DevEx 是最大化提升開發(fā)效率的關(guān)鍵,假設(shè)你是平臺(tái)工程團(tuán)隊(duì),不知道有沒有主動(dòng)思考過一個(gè)問題:“為什么開發(fā)人員不愿意使用我們的工具?”,作為平臺(tái)工程團(tuán)隊(duì)一定要牢記以下7個(gè)方法:
1、了解你的用戶(開發(fā)者)
“顧客就是上帝”,雖然我們不是甲乙方,雖然我們同在一家公司,甚至一個(gè)辦公室,但你是否真的了解用戶的需求?你是否將用戶視為上帝?是否真的了解用戶的需求和痛點(diǎn)?
在平臺(tái)工程團(tuán)隊(duì),了解用戶訴求,不僅僅是產(chǎn)品經(jīng)理的職責(zé),更應(yīng)該是整個(gè)平臺(tái)工程團(tuán)隊(duì)的工作,不僅要了解用戶痛點(diǎn),而且還要清楚知道用戶平時(shí)都是以什么方式在使用你的平臺(tái)。
?線上調(diào)查問卷:調(diào)查問卷是最直接的渠道,可以定期主動(dòng)收集用戶的心聲。
?線下培訓(xùn)活動(dòng):面對(duì)面的產(chǎn)品培訓(xùn),或通過用戶拜訪以及其他方式,面對(duì)面收集用戶的意見。
?保持好奇心:多關(guān)注用戶群、神燈暢聊的消息,當(dāng)聽到有抱怨或吐槽聲音,要及時(shí)跟進(jìn)解決并思考。
2、向?qū)B?UX 崗位學(xué)習(xí)
如果把開發(fā)人員當(dāng)初用戶來看的話,其實(shí) DevEx 要做的事,和公司內(nèi)的專職 UX 崗位同學(xué)的職責(zé)差不多。 UX 崗位大部分精力都在和用戶溝通調(diào)研,最終形成用研報(bào)告。
“唯一好的假設(shè)就是我們的假設(shè)是錯(cuò)的”,我特別喜歡這句話,講的非常有道理,因?yàn)楫?dāng)我們開始假設(shè)的時(shí)候,我們就已經(jīng)錯(cuò)了。通過假設(shè)做出了某個(gè)需求的時(shí)候,要么是沒人需要的功能,要么是解決了沒有人遇到的問題。因?yàn)樗械墓δ埽紤?yīng)該是發(fā)現(xiàn)出來的,而不是假設(shè)出來的。功能都是經(jīng)過:發(fā)現(xiàn)、設(shè)計(jì)、開發(fā)、交付這4個(gè)階段,但最難的就發(fā)現(xiàn)問題,通常 UX 崗位同學(xué)在用研過程中是最容易發(fā)現(xiàn)問題的。
3、以用戶為中心的心態(tài)
任何產(chǎn)品都應(yīng)該以用戶為中心,在平臺(tái)工程團(tuán)隊(duì)更加重要,因?yàn)槌3N覀冏约阂彩怯脩簦貏e容易把角色搞混,所以更應(yīng)該時(shí)刻強(qiáng)調(diào),誰才是真正的用戶,且要時(shí)刻確保這種心態(tài)。
?一定不要假設(shè)用戶的需求。
?所有的需求用用戶視角去描述,解決【哪些用戶】的【什么問題】,將需求的目標(biāo)轉(zhuǎn)移到用戶身上。
4、自動(dòng)化你的系統(tǒng)
自動(dòng)化在提升 DevEx 方面具有重要作用,無論是在成本、效率還是穩(wěn)定性方面。通過自動(dòng)化工具和流程,都可以自動(dòng)完成繁瑣的任務(wù),減少開發(fā)人員的負(fù)擔(dān)。例如,自動(dòng)化構(gòu)建和部署流程可以減少手動(dòng)操作的錯(cuò)誤,并加快交付時(shí)間。自動(dòng)化測(cè)試可以提高產(chǎn)品質(zhì)量和穩(wěn)定性,減少問題的出現(xiàn)。此外,自動(dòng)化還可以幫助提高產(chǎn)品的一致性,減少人為因素的影響,提高穩(wěn)定性和可靠性。
總的來說,自動(dòng)化在提升 DevEx 方面是至關(guān)重要的。通過減少手工環(huán)節(jié)和自動(dòng)化流程,可以降低用戶使用產(chǎn)品或工具的步驟,從而提高開發(fā)者體驗(yàn)。
5、明確崗位和職責(zé)
在過去,大部分公司里面有這樣一個(gè)崗位,叫 SCM 工程師或者配置管理工程師,但這些年隨著 DevOps 的發(fā)展,自動(dòng)化構(gòu)建和持續(xù)集成/持續(xù)交付的成熟,開發(fā)人員通常會(huì)通過工具自動(dòng)化完成這些工作,從而減少了專職的需求,因此這個(gè)崗位或者叫法正在慢慢消失。
目前,在公司中負(fù)責(zé)平臺(tái)或者工具的團(tuán)隊(duì),雖然有專職的團(tuán)隊(duì),但崗位名稱大部分仍然是前端/后端軟件開發(fā)工程師崗,這就無法明確這部分同學(xué)的具體職責(zé),但雖然平臺(tái)工程的發(fā)展和推動(dòng),目前在一些公司中,已經(jīng)有一些叫平臺(tái)工程師這個(gè)崗位角色,這個(gè)角色正在逐步替代測(cè)試開發(fā)、工具開發(fā)、運(yùn)維開發(fā)、甚至替代SRE的崗位角色。因此,我覺得通過明確的崗位和角色,可以更好明確崗位對(duì)應(yīng)的具體職責(zé),更好推動(dòng)平臺(tái)工程的落地。
6、Shifting down
在軟件開發(fā)過程中,通過轉(zhuǎn)移的方式,將開發(fā)人員身上的職責(zé)進(jìn)行減輕,通過轉(zhuǎn)移到其他角色或者平臺(tái)上,從而降低開發(fā)人員的負(fù)擔(dān),從而提升 DevEx。
左移:將測(cè)試左移,測(cè)試在開發(fā)過程中早期階段進(jìn)行,可以更早發(fā)現(xiàn)和解決Bug,使用自動(dòng)化測(cè)試工具或者測(cè)試框架來驗(yàn)證代碼,不過這種做法對(duì)測(cè)試要求較高,如果測(cè)試人員能力達(dá)不到,一味地推動(dòng)測(cè)試左移,甚至可能會(huì)給開發(fā)增加負(fù)擔(dān)哈哈。
右移:上線效果A/B實(shí)驗(yàn),通過比較實(shí)驗(yàn)的方法來驗(yàn)證上線功能效果。
下移:下移的整體思路就是將開發(fā)人員從工具和平臺(tái)中解放出來,平臺(tái)工程師負(fù)責(zé)構(gòu)建和維護(hù)工具平臺(tái),為開發(fā)人員提供穩(wěn)定的基礎(chǔ)設(shè)施和工具,這樣,開發(fā)人員可以專注于業(yè)務(wù)邏輯和創(chuàng)新,可以加快開發(fā)速度,從而也提升了 DevEx。
7、建立衡量 DevEx 的指標(biāo)
最后一點(diǎn),是建立 DevEx 指標(biāo),從而衡量 DevEx,并提升 DevEx ,老實(shí)說這點(diǎn)確實(shí)比較難,但想一想業(yè)務(wù)開發(fā)團(tuán)隊(duì)都能指定一些 KPI 去衡量,那么平臺(tái)工程團(tuán)隊(duì)也應(yīng)該這樣做,或者可以說可以嘗試這么做。
度量 DevEx
大師彼得·德魯克說過:“如果你無法衡量它,你就無法管理它。”,在 23 年發(fā)布的一篇研究論文中揭示了度量和提升開發(fā)者生產(chǎn)力的一種全新框架,該框架稱之為 DevEx 框架,作者為 Abi Noda、Margaret-Anne Storey 博士、Nicole Forsgren 博士、和 Michaela Greiler 博士。
影響 DevEx 的因素
針對(duì)開發(fā)效率或開發(fā)者生產(chǎn)力的度量,為什么一直以來都比較困難,主要有兩大原因:一方面軟件開發(fā)的過程是不可重復(fù)且創(chuàng)造性的工作,另一方面開發(fā)人員在工作中容易受到外部干擾的影響。
①軟件開發(fā)過程非標(biāo)準(zhǔn):軟件開發(fā)的過程不是重復(fù)性的勞動(dòng),且是創(chuàng)造性的工作,產(chǎn)出物并非標(biāo)準(zhǔn)的可衡量的,無法通過衡量流水線車間工作一樣的辦法來衡量軟件開發(fā)工作。
②外部干擾的影響:除了公司提供的工具效率影響外,也還有開發(fā)項(xiàng)目的難易程度、開發(fā)者和其他角色的溝通成本、歷史代碼的技術(shù)債務(wù)等因素都會(huì)影響開發(fā)效率。
DevEx 框架提出了反饋周期、認(rèn)知負(fù)荷、專注狀態(tài)三個(gè)維度。倡導(dǎo)通過關(guān)注這三個(gè)維度,從而推動(dòng)開發(fā)者生產(chǎn)力的提高。
?反饋周期:在開發(fā)過程中,可以快速的反饋對(duì)于提供開發(fā)人員的工作效率至關(guān)重要。例如,構(gòu)建、測(cè)試或開發(fā)環(huán)境設(shè)置效率低下,導(dǎo)致反饋周期延長(zhǎng),將直接影響開發(fā)人員工作的積極性和生產(chǎn)力。
?認(rèn)知負(fù)荷:在開發(fā)過程中,如果開發(fā)人員需要花費(fèi)大量時(shí)間理解代碼、理解工具的使用方法或者查找文檔上,這會(huì)導(dǎo)致認(rèn)知負(fù)荷增加,從而影響工作效率。
?專注狀態(tài):在開發(fā)過程中,如果開發(fā)人員頻繁被打斷或干擾,不能進(jìn)入到專注狀態(tài),那么生產(chǎn)力就會(huì)收到嚴(yán)重影響。我們的 “No meeting day” 其實(shí)也是組織為大家能夠進(jìn)入到專注狀態(tài)的一種手段和方式。
衡量 DevEx 的指標(biāo)
對(duì)于提升開發(fā)者體驗(yàn),衡量指標(biāo)是非常重要。下圖是 DevEx 框架提供的一個(gè)示例,用于了解當(dāng)前存在的問題,從反饋周期、認(rèn)識(shí)負(fù)荷、專注狀態(tài)三個(gè)維度進(jìn)行評(píng)估。建議在每個(gè)維度上選擇要一兩個(gè)關(guān)鍵指標(biāo)進(jìn)行度量。同時(shí),也需要從全局上考慮,制定一些宏觀指標(biāo),如員工滿意度、需求交付周期等,作為全局考核的北極星指標(biāo)。
為了衡量開發(fā)者體驗(yàn)(DevEx),需要綜合考慮主觀和客觀數(shù)據(jù)。除了從相關(guān)工具或系統(tǒng)中獲取客觀數(shù)據(jù)外,還需要調(diào)查開發(fā)人員的看法、態(tài)度和意見。這些主觀的數(shù)據(jù)在某些情況下可以提供相對(duì)準(zhǔn)確的反饋。
例如,盡管構(gòu)建過程可能非常高效,但如果構(gòu)建操作的步驟過于復(fù)雜,可能會(huì)干擾開發(fā)人員并影響其體驗(yàn)。因此,從整體構(gòu)建過程的角度來看,開發(fā)者體驗(yàn)可能相對(duì)較差。這種主觀反饋可以補(bǔ)充客觀數(shù)據(jù),提供更全面的視角。
除了反饋周期,認(rèn)知負(fù)荷對(duì)開發(fā)者體驗(yàn)的影響最大。認(rèn)知負(fù)荷可以從兩個(gè)狀態(tài)來看:
?進(jìn)入狀態(tài):這是開發(fā)人員完全投入并享受工作的狀態(tài),通常需要約 23 分鐘的時(shí)間來進(jìn)入。如果頻繁中斷這種工作狀態(tài),例如穿插其他任務(wù),那么進(jìn)入狀態(tài)所需的時(shí)間可能會(huì)更長(zhǎng)。
?等待狀態(tài):例如等待重新編譯、等待代碼評(píng)審、等待部署、等待服務(wù)啟動(dòng)等。這些等待狀態(tài)的累計(jì)時(shí)間將構(gòu)成認(rèn)知負(fù)荷的一部分。
常見的 DevEx 度量指標(biāo)。例如,可以選擇度量自動(dòng)化測(cè)試效率(反饋周期)、平均部署時(shí)長(zhǎng)(反饋周期)、執(zhí)行路徑數(shù)(認(rèn)知負(fù)荷)、可選擇操作數(shù)(認(rèn)知負(fù)荷)、代碼庫復(fù)雜性(認(rèn)知負(fù)荷)、技術(shù)債務(wù)(認(rèn)知負(fù)荷)和深度工作時(shí)間(專注狀態(tài))、XX自動(dòng)化率(綜合維度)、平臺(tái)NPS滿意度值(綜合維度)。
通過綜合考慮以上指標(biāo),可以幫助組織更好地發(fā)現(xiàn)真實(shí)的開發(fā)者體驗(yàn),找出可能存在的問題,并針對(duì)性地進(jìn)行優(yōu)化,通過不斷地改進(jìn)和度量,從而提升 DevEx 。
結(jié)語
根據(jù) StackOverflow 的調(diào)查,約有 62% 的受訪者每天花費(fèi)超過 30 分鐘的時(shí)間在搜索答案和解決問題上,而 25% 的人甚至花費(fèi)超過 1 小時(shí)。此外,根據(jù) CNCF 云原生的 Landscape 展示,目前已有 2000+ 張卡片,覆蓋了各個(gè)維度的能力,但這也導(dǎo)致了開發(fā)人員認(rèn)知負(fù)擔(dān)的日益加重。
?審核編輯 黃宇
-
開發(fā)者
+關(guān)注
關(guān)注
1文章
626瀏覽量
17366
發(fā)布評(píng)論請(qǐng)先 登錄
開鴻Bot系列:為開源鴻蒙開發(fā)者而生!

為開源鴻蒙開發(fā)者而生,開鴻Bot系列今日預(yù)售啟動(dòng)

【第一彈】樹莓派開發(fā)者必看!Ubuntu Snap煥新升級(jí):跨平臺(tái)開發(fā)從未如此簡(jiǎn)單!

Apex平臺(tái):簡(jiǎn)化AI API開發(fā),賦能開發(fā)者
AI開發(fā)平臺(tái)如何賦能開發(fā)者
谷歌推出Android XR SDK開發(fā)者預(yù)覽版
開發(fā)者的開源鴻蒙故事
《HarmonyOS第一課》煥新升級(jí),賦能開發(fā)者快速掌握鴻蒙應(yīng)用開發(fā)
云端AI開發(fā)者工具怎么用
Arm推出GitHub平臺(tái)AI工具,簡(jiǎn)化開發(fā)者AI應(yīng)用開發(fā)部署流程
宣布 RISE RISC-V 開發(fā)者表彰試點(diǎn)計(jì)劃:賦能開發(fā)者拓展 RISC-V 影響力

KaihongOS 4.1.2開發(fā)者預(yù)覽版正式上線,誠(chéng)邀開發(fā)者免費(fèi)試用!

評(píng)論