|
英文原文:Code fast or code slow? Who are you?
一般而言,有兩種類型的開發(fā)者。一種編碼速度快,喜歡一大段一大段的組合代碼,然后看它是否能順利運(yùn)行,這是編程中的“快槍手”,還有一種在朝著目標(biāo)前進(jìn)的時(shí)候比較淡定,他們會(huì)確保他們所寫的一切代碼都是精心設(shè)計(jì)的,可維護(hù)和可擴(kuò)展的。因?yàn)檫@個(gè)原因,使得他們?cè)谒俣壬巷@得比別人慢,所以是“慢悠悠”。
兩者之間的區(qū)別是,前者完成的效率更高,但代碼的錯(cuò)誤率更大(除非他們特別幸運(yùn)),而后者代碼的錯(cuò)誤率就少多了,并且易于擴(kuò)展和維護(hù)。親你是哪一種呢?
愚蠢的“快槍手”?
大多數(shù)開發(fā)人員可能不敢承認(rèn)自己是那種以良好的體系結(jié)構(gòu)為代價(jià)的“快槍手”。為什么呢?因?yàn)檫@樣可能會(huì)產(chǎn)生更高的錯(cuò)誤率。但是回過頭來想想,哪個(gè)系統(tǒng)沒有代碼錯(cuò)誤?
拿我自己舉個(gè)例子。
我如果接了個(gè)單子要寫程序什么的,會(huì)有來自客戶方面的壓力,因?yàn)槲冶仨毤皶r(shí)交付。而客戶對(duì)于軟件的要求大多是通過電子郵件,電話告知的,或者在某些情況下,客戶會(huì)直接寫在票務(wù)系統(tǒng)里發(fā)過來。我的責(zé)任就是,確保程序的功能可以準(zhǔn)確反映這些要求。而大家都知道,有時(shí)候客戶想要什么卻并不說出來,而這一點(diǎn)也是我必須考慮進(jìn)去的。
在開發(fā)團(tuán)隊(duì)中,有寫的快的成員也有寫的慢的,有代碼錯(cuò)誤率高的也是錯(cuò)誤率低的。而我我大部分時(shí)間在做的是,怎樣將這些人員有效分類。
繼續(xù)講那個(gè)例子。那么我該如何確保客戶的要求能實(shí)現(xiàn)呢?答案是,我得看到實(shí)現(xiàn)要求功能的代碼在哪里。所以,我就有兩個(gè)選擇了。第一個(gè)選擇是把單子交給能快速交付的“快槍手”,這樣我便可以及時(shí)看到運(yùn)行結(jié)果(無論代碼是否有bug也不管后期是否易于維護(hù))。另一個(gè)是讓“慢悠悠”來做,有可能直到最后一分鐘他都交付不了,但是拿出來的解決方案必是精品。
第一種情況下,我能很快拿到成果,而且如果客戶不滿意,還有時(shí)間去修改,但是我可能不得不面對(duì)不支持?jǐn)U展和不可維護(hù)等等方面的缺陷。而在第二種情況下,因?yàn)闆]有多余的時(shí)間,所以將不能按客戶要求進(jìn)行修改,但是代碼簡(jiǎn)潔優(yōu)雅,如果未來有需要的話還可以進(jìn)一步擴(kuò)展。
在這里要著重講一下,可擴(kuò)展和不可擴(kuò)展以及可維護(hù)和不可維護(hù)的區(qū)別。例如,我們已經(jīng)按客戶要求搞定了所需的軟件,但是它的代碼是不可擴(kuò)展的,那么如果用戶喜歡并且想進(jìn)一步擴(kuò)展的話,那你就只能叫苦連天了。但是如果是可擴(kuò)展可維護(hù)的,那么用戶想在某個(gè)方面擴(kuò)展的話,那就是小菜一碟了。
所以,如果用戶沒有要擴(kuò)展某個(gè)方面的想法,那么我會(huì)選擇“快槍手”。反之就需要“慢悠悠”了。但是如果你想保證100%選擇正確,那就只能讓事后諸葛亮出馬了。
因?yàn)檫@是一個(gè)主觀判斷。
不可協(xié)同工作
上面我講的例子如果能團(tuán)隊(duì)中實(shí)行,肯定可以提高整個(gè)團(tuán)隊(duì)的工作效率。在分配過程中,我認(rèn)識(shí)到,“快槍手”有快速編碼快速交付的特點(diǎn),而“慢悠悠”有完成的代碼簡(jiǎn)潔明朗易于維護(hù)的特征。
隨著社會(huì)的發(fā)展,CI / CD已經(jīng)變得適用于多種環(huán)境。并且現(xiàn)在推陳出新也是越來越便宜。即使代碼不可擴(kuò)展,人們也負(fù)擔(dān)得起更新迭代,甚至哪怕就是再次重新架構(gòu)也可以承受。這樣一來,我們就需要“快槍手”按照要求盡可能的快速開發(fā),而在需要架構(gòu)或者重構(gòu)的時(shí)候,再青睞“慢悠悠”來大顯身手了。
但是如果“快槍手”的代碼寫得太快以至于“慢悠悠”完全跟不上,那時(shí)候就悲劇了,因?yàn)槟愕玫降闹粫?huì)是一個(gè)千瘡百孔,滿是bug的系統(tǒng)。
誰都不希望得到這樣的結(jié)果。
預(yù)見機(jī)制
為了解決上述問題,我們可以使用預(yù)見機(jī)制,用于衡量開發(fā)人員的bug在代碼運(yùn)行時(shí)會(huì)導(dǎo)致什么問題。這樣既可有效控制“快槍手”的錯(cuò)誤率,也能確保“慢悠悠”的代碼火車不再晚點(diǎn)。
有沒有覺得,“快槍手”好像文獻(xiàn)資料或者是驗(yàn)證器?而“慢悠悠”則更加適合放在設(shè)計(jì)和架構(gòu)功能方面,以便于這些方面今后有需要的話,容易維護(hù)和擴(kuò)展。
也許我們可以叫“快槍手”為功能團(tuán)隊(duì),而“慢悠悠”則更趨向于是一種工程團(tuán)隊(duì)。
最后,問問你自己,“快槍手”和“慢悠悠”,親你是哪一種呢?
it知識(shí)庫:你是編程中的“快槍手”還是“慢悠悠”?,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。