上個(gè)月,在負(fù)責(zé)技術(shù)晉升評(píng)審的過(guò)程中,有人認(rèn)為在評(píng)審過(guò)程中以述職講述為主,可能對(duì)某些比較擅長(zhǎng)寫(xiě)代碼而不擅于演講的同學(xué)不公平。而對(duì)于中級(jí)別的程序員技術(shù)晉升我們更傾向于篩選出擅長(zhǎng)編程,而非僅僅是說(shuō)得好的同學(xué)。
這個(gè)過(guò)程里面,存在四種情形:
代碼寫(xiě)得好,也說(shuō)得好
代碼寫(xiě)得好,但說(shuō)不出
代碼寫(xiě)得不太行,但說(shuō)得很好
兩者都不行
晉升篩選的目標(biāo)是選出 1 和 2 兩種,篩掉 3 和 4。這里面的挑戰(zhàn)在于,在采用述職答辯這種形式下,1 和 3 這兩種很難分辨,同時(shí) 2 和 4 也很難分辨。關(guān)鍵就在于如何識(shí)別并判斷代碼寫(xiě)得好還是不好的問(wèn)題,區(qū)分度的標(biāo)尺怎么定的問(wèn)題。這個(gè)判斷問(wèn)題在面試程序員時(shí)也存在,要不就先從「代碼面試」說(shuō)起吧。
1
在我過(guò)去十年多一些的從業(yè)經(jīng)歷中,倒是面試過(guò)很多次,其中不乏面試寫(xiě)代碼的。
剛畢業(yè)那年第一次去面試,聊了沒(méi)幾句面試官就給了一張白紙和鉛筆,要求在紙上用 C 語(yǔ)言寫(xiě)一個(gè)快速排序算法的實(shí)現(xiàn)。這次經(jīng)歷我記憶猶新,差不多半小時(shí),我磕磕碰碰的寫(xiě)了一個(gè)實(shí)現(xiàn)。在和面試官討論時(shí),被指出了不少?zèng)]考慮到的情形和漏洞,后來(lái)的結(jié)果自然是沒(méi)能通過(guò)。
現(xiàn)在回想起來(lái),在紙上編程真是一件很難受的事情。雖然五十年代的程序員基本都在紙上編程,那是因?yàn)槟菚r(shí)計(jì)算機(jī)的運(yùn)行成本很高。但面試時(shí)的紙上編程,一方面時(shí)間很有限,另一方面環(huán)境和氛圍比真正的編程要緊張不少。所以,我是不支持紙上編程這種形式的,它既不能讓候選人很好的發(fā)揮,另外一方面也可能沒(méi)有足夠的區(qū)分度。比如,像上面那樣寫(xiě)一個(gè)著名的算法實(shí)現(xiàn),背過(guò)和沒(méi)背過(guò)差別可以很大,但對(duì)真正的編程能力卻不足以區(qū)分。