英文原文:Productive Developers are Smart and Lazy
這里我使用了聰明,懶惰和程序員這幾個(gè)詞。我說(shuō)的這幾個(gè)詞的意思是:
正確的軟件開(kāi)發(fā)應(yīng)該是懶惰式開(kāi)發(fā),也被稱作忍耐式開(kāi)發(fā);這種開(kāi)發(fā)方式的表現(xiàn)是,在真正動(dòng)手寫(xiě)代碼前,程序員要花大量的時(shí)間通盤(pán)考慮所有可能的解決方案和途徑。這可以看作是延緩寫(xiě)代碼,在沒(méi)有完全理解問(wèn)題前絕不動(dòng)手寫(xiě)代碼。先把問(wèn)題理解清楚,確保將要寫(xiě)的代碼能真正的解決問(wèn)題,這將會(huì)避免之后寫(xiě)出大量無(wú)用的代碼。
這里說(shuō)的先把問(wèn)題弄清楚,表現(xiàn)有:
你需要花大量的時(shí)間調(diào)研,來(lái)確保需求符合實(shí)情,來(lái)做工作讓你和同事的交流有共同的語(yǔ)言語(yǔ)義。然而,程序員都喜歡立刻沖上去編程,喜歡在電腦前不停的敲代碼。
在真正的軟件開(kāi)發(fā)中,只有5%的開(kāi)發(fā)時(shí)間是有效率的(你可以參考《程序員開(kāi)發(fā)效率悖論》)。如果你發(fā)現(xiàn)一個(gè)程序員用100%的時(shí)間都在盯著屏幕,那么,你看到的這個(gè)程序員是最糟糕的程序員。
如果一個(gè)程序員總是在電腦前編碼,這絕對(duì)是一個(gè)不好的信號(hào)。
高效的程序員總是不斷檢查他對(duì)需求的理解,確保他們的代碼和需求是同步的。高效的程序員是頻繁的和產(chǎn)品經(jīng)理/業(yè)務(wù)人員溝通交流,你可以經(jīng)??吹剿麄兪褂冒装迮c同事和架構(gòu)師交流討論。程序員的閱歷和經(jīng)驗(yàn)都是用來(lái)提高開(kāi)發(fā)效率,這最優(yōu)秀的程序員:
程序員從心理上講都是喜愛(ài)自己的代碼的。
爛程序員不喜歡去修改已經(jīng)寫(xiě)成的爛代碼。相比起優(yōu)化自己的代碼,他們更愿意簡(jiǎn)單的增加更多的代碼,以此來(lái)彌補(bǔ)之前的缺陷。更糟糕的是,他們喜歡把責(zé)任歸咎于他人。最終,一堆不好用的代碼上在來(lái)另外一堆不好用的代碼,整個(gè)系統(tǒng)變得到處是bug,極不穩(wěn)定。
優(yōu)秀的程序員經(jīng)常也會(huì)寫(xiě)出爛代碼,但他們能看到那些代碼需要優(yōu)化,哪些需要重寫(xiě)。優(yōu)秀的程序員和不優(yōu)秀的程序員的區(qū)別就在于對(duì)有問(wèn)題的代碼的態(tài)度,優(yōu)秀的程序員的做法是:
當(dāng)代碼中有需要優(yōu)化或需要重寫(xiě)的地方時(shí),時(shí)間拖的越久,你就越難回頭解決這些問(wèn)題。因?yàn)閷?duì)這些代碼依賴的程序會(huì)越來(lái)越多,越來(lái)越深,當(dāng)你優(yōu)化這些代碼時(shí),相關(guān)的依賴也需要進(jìn)行相關(guān)修改。當(dāng)積累的問(wèn)題越來(lái)越多時(shí),輕松的優(yōu)化/重新這些代碼已經(jīng)變得不可能。而使用繼續(xù)增加代碼的方式來(lái)彌補(bǔ)之前代碼問(wèn)題,會(huì)讓系統(tǒng)變得越來(lái)越不穩(wěn)定。
如果腦子里沒(méi)想清楚,那就懶一些,把寫(xiě)代碼的時(shí)間往后推。