怎樣提高開發(fā)效率?關(guān)于增效,需要做好這兩點(diǎn)
最近兩會(huì)上都談?wù)摰?996 的問題了,那我們實(shí)行 996 ,每個(gè)人每天都非常忙碌,是不是就效率很高呢?是不是很多時(shí)候都在做一些無價(jià)值的事情呢?是不是都在加著班寫著 Bug 呢?我認(rèn)為真相遠(yuǎn)沒有我們想象的那么樂觀。
春節(jié)后的幾次公司會(huì)議上都在提「增效」,隨著公司的發(fā)展,人數(shù)變多,各種成本也隨之增高,所以通過各種方式來增效,才能有正向的發(fā)展。以目前我的觀察來看,我覺得可以從兩個(gè)方面入手: 溝通和抓住關(guān)鍵點(diǎn) 。
在《怎樣提高開發(fā)效率》一文中主要說的是開發(fā)人員硬技能方面的提升,在上面提到的各種成本中,溝通成本是非常重要的一塊,這屬于軟技能的范疇,也是最容易被忽視的。
溝通體現(xiàn)在很多個(gè)方面,這里主要想說下提問和 Bug 描述。
前不久,有項(xiàng)目團(tuán)隊(duì)同事在企業(yè)微信上問我:怎樣拉取鏡像來進(jìn)行測(cè)試環(huán)境的更新?如果考慮到部門之間應(yīng)該有良好的溝通的協(xié)作,我應(yīng)該告訴他怎么操作,但為什么有這么低級(jí)的問題能被問出來,是一個(gè)值得思考的問題:
-
拉取鏡像更新是一個(gè)每個(gè)開發(fā)人員必備的技能,為什么還有人是不會(huì)的?
-
有沒有做相應(yīng)的培訓(xùn),或者培訓(xùn)了,是否每個(gè)人都能夠理解?
-
聽的時(shí)候理解了,實(shí)際操作的時(shí)候是不是還是不會(huì)?
所有有章可循的、都應(yīng)該形成規(guī)范,進(jìn)行培訓(xùn)、然后考核,保證不同的人按照文檔進(jìn)行操作能夠得出相同的結(jié)果,如果有開發(fā)人員能主動(dòng)去探究其中的原理并舉一反三,那便是錦上添花了。
對(duì)于 Bug 描述經(jīng)常會(huì)出現(xiàn)這樣的場(chǎng)景:
實(shí)施人員:表單上的選人控件加載部門樹很慢;
開發(fā):經(jīng)過一系列的代碼檢查、運(yùn)行調(diào)試后回復(fù),我本地很快??;
開發(fā)人員時(shí)間花了,但并沒有解決問題,在描述 Bug 的時(shí)候,需要有更詳細(xì)的場(chǎng)景和上下文信息,比如:
-
客戶的部門和人員的數(shù)據(jù)量級(jí)是多少?
-
是所有用戶還是特定用戶,如果特定用戶,是否有什么特殊的權(quán)限的設(shè)置?
-
客戶使用的瀏覽器是什么版本?
-
選人控件本身有沒有什么特殊數(shù)據(jù)范圍或權(quán)限的設(shè)置?
有了更多的信息,開發(fā)人員就能有針對(duì)性地進(jìn)行排查,也能更容易解決問題。
Bug 只要能重現(xiàn),處理起來還比較容易,當(dāng)遇到偶發(fā) Bug 的時(shí)候,更是要盡量提供足夠的信息,但很多時(shí)候描述卻是這樣的:
實(shí)施人員:客戶點(diǎn)擊某某操作時(shí),會(huì)出現(xiàn)系統(tǒng)異常,我們有時(shí)操作也會(huì)出現(xiàn),但不是每次都出現(xiàn);
開發(fā):不能重現(xiàn),我怎么排查呢?
實(shí)施人員在一線,離現(xiàn)場(chǎng)更近,能知道更多的信息,所以在出現(xiàn)問題時(shí)需要盡可能多地提供信息:
-
系統(tǒng)出現(xiàn)異常提示是有日志記錄的,是否有對(duì)日志進(jìn)行過初步的分析?
-
操作的數(shù)據(jù)中有沒有特殊數(shù)據(jù),比如附件、富文本等?
-
是否能收集到客戶用的系統(tǒng)以及瀏覽器的版本?
-
是否能收集到客戶的操作系統(tǒng)的方式?
如果每個(gè)一線實(shí)施人員都能夠去收集一些有用信息,做下初步的分析,然后將整個(gè)過程形成文字內(nèi)容提交給開發(fā),相信會(huì)大大提升解決問題的效率。
至于收集哪些有用信息,怎樣來做初步分析,隨著慢慢地沉淀,也一樣可以形成標(biāo)準(zhǔn)的文檔和操作手冊(cè)。
除了溝通,另一個(gè)能提高效率的地方就是在工作中能抓住關(guān)鍵點(diǎn),根據(jù)二八法則,抓住 20% 的關(guān)鍵點(diǎn)就能解決 80% 的問題。
下面是最近團(tuán)隊(duì)中發(fā)生的兩個(gè)個(gè)事情,正好說明了關(guān)鍵點(diǎn)的重要:
-
產(chǎn)品代碼做重構(gòu)優(yōu)化,讓開發(fā)人員按照思路寫出類以及空方法,然后進(jìn)行評(píng)審,但開發(fā)人員會(huì)比較容易關(guān)注細(xì)節(jié),一動(dòng)手就想著對(duì)象怎樣映射,依賴注入應(yīng)該怎么進(jìn)行設(shè)置等等,浪費(fèi)了時(shí)間;
-
讓開發(fā)排查一個(gè) Bug,我便開會(huì)去了,一個(gè)多小時(shí)回來詢問情況,得知還沒有解決,還在繼續(xù)調(diào)試代碼分析原因,最后發(fā)現(xiàn)是一個(gè)配置項(xiàng)沒有添加導(dǎo)致。
第一件事情的關(guān)鍵點(diǎn)是代碼的思路,而不是實(shí)現(xiàn),開發(fā)人員和產(chǎn)品負(fù)責(zé)人的目標(biāo)和思想需要一致,也就是華為管理哲學(xué)中所說的「力出一孔」,如果方向偏了,努力越多,錯(cuò)的越遠(yuǎn)。
第二件事情的關(guān)鍵點(diǎn)是遇到問題的思考,想清楚之后再動(dòng)手做,最終的做可能是檢查配置、尋求其他人員幫助、或者代碼調(diào)試。而不是任何問題一上來就進(jìn)行代碼調(diào)試。
最后總結(jié)下:
1、溝通在工作和生活中無處不在,想想溝通的目的,多換位思考;
2、除了上面說的提問和 Bug 描述,還有代碼注釋、代碼提交備注、技術(shù)規(guī)范文檔等等都屬于溝通;
3、方向一致、目標(biāo)明確做起事來才能最高效;
4、多思考、總結(jié)、復(fù)盤才能慢慢積累經(jīng)驗(yàn),經(jīng)驗(yàn)豐富了才更容易找到關(guān)鍵點(diǎn)。
希望本文能對(duì)您有所啟發(fā)和幫助!