|
英文原文:Productive Developers are Smart and Lazy
這里我使用了聰明,懶惰和程序員這幾個詞。我說的這幾個詞的意思是:
- 程序員:有積極活力的,專注于用代碼解決真實世界里的問題,不是指那些夢想家,那些永遠只想不做的人。
- 聰明:能夠周全的思考問題(不是那些耍小聰明的人)。
- 懶惰:就像是程序中的lazy-loading,是指延后寫代碼的時間(而不是無所事事的人)。
正確的軟件開發(fā)應(yīng)該是懶惰式開發(fā),也被稱作忍耐式開發(fā);這種開發(fā)方式的表現(xiàn)是,在真正動手寫代碼前,程序員要花大量的時間通盤考慮所有可能的解決方案和途徑。這可以看作是延緩寫代碼,在沒有完全理解問題前絕不動手寫代碼。先把問題理解清楚,確保將要寫的代碼能真正的解決問題,這將會避免之后寫出大量無用的代碼。
這里說的先把問題弄清楚,表現(xiàn)有:
- 真正的理解需求,讓產(chǎn)品部門(業(yè)務(wù)分析部門)弄清楚他們真正需求的是什么。
- 這些部門通常不給足夠的時間來整理需求。
- 他們經(jīng)常不是請教問題領(lǐng)域?qū)<遥琼槒念I(lǐng)導(dǎo)的意見。
- 他們通常無法提供前后一致或完整的需求意見。
- 清楚跟團隊中的其它程序員或其他團隊中的程序員需要那些交互,如何交互,這包括:1)使用白板交流;2)畫流程圖(UML或Visio)。
你需要花大量的時間調(diào)研,來確保需求符合實情,來做工作讓你和同事的交流有共同的語言語義。然而,程序員都喜歡立刻沖上去編程,喜歡在電腦前不停的敲代碼。
在真正的軟件開發(fā)中,只有5%的開發(fā)時間是有效率的(你可以參考《程序員開發(fā)效率悖論》)。如果你發(fā)現(xiàn)一個程序員用100%的時間都在盯著屏幕,那么,你看到的這個程序員是最糟糕的程序員。
如果一個程序員總是在電腦前編碼,這絕對是一個不好的信號。
高效的程序員總是不斷檢查他對需求的理解,確保他們的代碼和需求是同步的。高效的程序員是頻繁的和產(chǎn)品經(jīng)理/業(yè)務(wù)人員溝通交流,你可以經(jīng)常看到他們使用白板與同事和架構(gòu)師交流討論。程序員的閱歷和經(jīng)驗都是用來提高開發(fā)效率,這最優(yōu)秀的程序員:
- 他們思考代碼的時間增加而寫代碼時間減少。
- 對問題的透徹理解使調(diào)試代碼的速度更快。
- 深思熟慮后的代碼速度更快。
- 代碼長度更短。
程序員從心理上講都是喜愛自己的代碼的。
爛程序員不喜歡去修改已經(jīng)寫成的爛代碼。相比起優(yōu)化自己的代碼,他們更愿意簡單的增加更多的代碼,以此來彌補之前的缺陷。更糟糕的是,他們喜歡把責(zé)任歸咎于他人。最終,一堆不好用的代碼上在來另外一堆不好用的代碼,整個系統(tǒng)變得到處是bug,極不穩(wěn)定。
優(yōu)秀的程序員經(jīng)常也會寫出爛代碼,但他們能看到那些代碼需要優(yōu)化,哪些需要重寫。優(yōu)秀的程序員和不優(yōu)秀的程序員的區(qū)別就在于對有問題的代碼的態(tài)度,優(yōu)秀的程序員的做法是:
- 如果代碼整體上好的,那就重構(gòu)代碼。
- 如果代碼整體上有問題,那就重寫代碼。
當(dāng)代碼中有需要優(yōu)化或需要重寫的地方時,時間拖的越久,你就越難回頭解決這些問題。因為對這些代碼依賴的程序會越來越多,越來越深,當(dāng)你優(yōu)化這些代碼時,相關(guān)的依賴也需要進行相關(guān)修改。當(dāng)積累的問題越來越多時,輕松的優(yōu)化/重新這些代碼已經(jīng)變得不可能。而使用繼續(xù)增加代碼的方式來彌補之前代碼問題,會讓系統(tǒng)變得越來越不穩(wěn)定。
如果腦子里沒想清楚,那就懶一些,把寫代碼的時間往后推。
it知識庫:高效程序員的特征:聰明,懶惰,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。