1.
在我們小組,一個小版本開發(fā)結(jié)束之后,我們會抽一兩天的時間,大家坐在辦公室里輪流進行自己所負責的代碼的講解。
最初做這個的目的,是為了相互評估代碼的邏輯,找到漏洞或者可以優(yōu)化的coding方式,讓大家相互借鑒學(xué)習(xí),從而更好的coding。
后來我發(fā)現(xiàn),review code的作用還不僅僅是這樣。因為code本身是為了解決某個問題,所以code的背后還隱藏著一種解決方案。團隊成員的思想碰撞,就不僅僅限于code的層面,而是上升到了解決方案的層面。
什么樣的方案更好,有更好的擴展性和易用性?別人又是如何分析問題,抓住重點,形成解決方案的?與他們相比,我的不足在哪里,應(yīng)該如何提升?
在review的過程中,做個有心人,主動思考一些問題,或可以糾正自己錯誤的認知,或可以找到新的學(xué)習(xí)方向,或被人一語點破思維的障礙。略有所得,就如沐春風,會心一笑。
通過review,還可以讓大家相互了解各自的工作,從而對整個小組的工作有所了解。讓每個人不局限于自己的一畝三分地,而是能一窺全局的面貌。
2.
但是過程并非總是那么美好。因為review包含了一層“審查”的意思,一群人看你的代碼,提出各種問題,或許讓人有種被針對的感覺。從一開始的略有爭執(zhí),稍不注意就會演變成面紅耳赤的針鋒相對,整個會議的氣氛也會變得比較尷尬。
所以,每一個人都應(yīng)該首先擺正看待review的態(tài)度。
作為主講人應(yīng)該將review看作一次別人幫助自己檢驗產(chǎn)品的機會,如果別人對自己的代碼提出了不同的觀點,別馬上切換到防御狀態(tài),認為別人是在攻擊自己。先問自己,他們提到的點自己之前有沒有想到?
如果想到了,就解釋自己之所以這么選擇的原因;如果沒有想到,那就不妨想一下,是否確實有不當?shù)牡胤健H绻粫r間難以決斷,也可以說明會議之后再去研究下。
作為評審,則應(yīng)該將自己定位為建議者。我們只是對眼前的代碼提出自己的建議,接受或者不接受,都由對方?jīng)Q定。如果說服不了對方,那就放棄吧,畢竟如果自己確實提出了中肯的建議,而對方卻置之不理,那是別人的損失。
每一個會議都應(yīng)該有一個人控場,他負責控制時間和主題,把僵硬的氣氛緩和下來,或者起到拍板的作用來結(jié)束沖突和爭論。確保會議按照能按照計劃,有序的進行下去。
比如大家在某個點討論的時間太久,控場人需要提醒大家切換到下一個主題;如果大家思路發(fā)散導(dǎo)致偏離主題太遠,控場人需要提醒大家回到最初的問題;如果會議上有沖突發(fā)生,控場人需要重申這次會議的目的,讓大家冷靜一下;如果會議上有問題難以決斷,控場人需要確定一個結(jié)論,或者是另外安排機會再深化討論,而不是阻塞后面的話題。
3.
在review的過程中,能學(xué)到的不僅僅是主講人,因為整個review的過程,雖然討論的對象是主講人的代碼,但是溝通卻是相互的。review的評審既可以看到優(yōu)秀的代碼然后偷一把師,也可以在溝通的過程中對自己的技術(shù)進行印證。
但是,如果評審只是把自己定位在“幫別人發(fā)現(xiàn)問題”的角色上,則沒有積極主動的心態(tài),也不會有多少收獲。
一群人走過一段相同的路,或有所得,或大或小,就看自己是不是一個有心人。
在review的過程中,除了技術(shù)、思維上的收獲,還可以得到表達和情商上的鍛煉。作為主講人,要清晰明白的把自己的代碼講清楚,還要能很好的回答隨時拋過來的問題。能做到從容淡定,見招拆招,那這個人的修養(yǎng)就已經(jīng)很不錯了。
而作為評審,面對陌生的代碼,能快速抓住問題要點;面對主講人強硬的態(tài)度,能及時擺正心態(tài),緩解氣氛,不被陷入沖突。知道哪些人“不愿意聽勸”,哪些人愿意接受不同的觀點,從而做到區(qū)別對待,確保會議能起到的效果雖不完美,但卻已經(jīng)盡力最大化了。
4.
在review中可能遇到下面的問題:
主講人認為評審員不理解代碼所解決問題的實際場景,所以提出的是雖然理想但是無用的建議。并以評審員不熟悉實際場景的情況,來攻擊評審員的觀點。
如:這個問題的實際情況是很復(fù)雜的,不是你想的那么簡單,你知道嗎?bla bla...
主講人若認為評審員提出的觀點確實不符合實際場景,應(yīng)該嘗試向大家闡述相關(guān)背景。事情是我們在推進,別人不清楚很正常,別人因為不清楚所以沒有發(fā)言的權(quán)力就不正常了。我們應(yīng)該努力讓信息對等,然后再進一步討論問題。
主講人是資格老高,舍不下臉被別人“教導(dǎo)”。
茶杯要從茶壺里接水,就一定要擺在比茶壺低的位置。如果一個人無法理解這一點,那就不要期望能從別人那里學(xué)到什么。
另外,面子這種東西,有的時候是大事,有的時候真是小事。該當成小事的時候卻當成了大事,往往不能成事。
主講人不是我,評審員少我一個也不少,我還是刷手機吧。
雖然我希望每個人都能從review中有所收獲,但前提還是自己要做個有心人。我也確實無法保證每個人都愿意做一個有心人,所以我一般會申明:review的會議大家可以根據(jù)自己的實際情況選擇參加。
一直開,一直講,不讓人休息
不僅僅是review,所有的會議都可能會有這種問題,一直開啊開,中間沒有休息的時間,導(dǎo)致效率越來越低下。最后大家只想盡快結(jié)束會議,又如何能認真對待問題本身?
如果會議時間長,不妨設(shè)置幾個中場休息時間,大家也有討論的機會。