woff 發表於 2016-3-12 23:40:14

高效率工程師的兩個特徵:聰明、懶惰

這裡我使用了聰明,懶惰和工程師這幾個詞。我說的這幾個詞的意思是:
[*]工程師:有積極活力的,專注於用程式解決真實世界裡的問題。不是指那些夢想家,那些永遠只想不做的人
[*]聰明:能夠周全的思考問題 (不是那些耍小聰明的人)
[*]懶惰:就像是程式中的 lazy-loading,是指延後寫程式的時間 (而不是無所事事的人)。
正確的軟體開發應該是懶惰式開發,也被稱作忍耐式開發;這種開發方式的表現是,在真正動手寫程式前,工程師要花大量的時間通盤考慮所有可能的解決方案和途徑。這可以看作是延緩寫程式,在沒有完全理解問題前絕不動手寫程式。先把問題理解清楚,確 ​​保將要寫的程式能真正的解決問題,這將會避免之後寫出大量無用的程式。這裡說的先把問題弄清楚,表現有:
[*]真正的理解需求,讓產品部門 (業務分析部門) 弄清楚他們真正需求的是什麼。

[*]這些部門通常不給足夠的時間來整理需求
[*]他們經常不是請教問題領域專家,而是順從領導的意見
[*]他們通常無法提供前後一致或完整的需求意見。

[*]清楚跟團隊中的其它工程師或其他團隊中的工程師需要那些互動,如何互動,這包括:

[*]使用白板交流
[*]畫流程圖 (UML 或 Visio)
你需要花大量的時間研究,來確保需求符合實情,來做工作讓你和同事的交流有共同的語言語義。然而,工程師都喜歡立刻興沖沖開始寫程式,喜歡在電腦前不停的敲鍵盤。在真正的軟體開發中,只有 5% 的開發時間是有效率的。如果你發現一個工程師用 100% 的時間都盯著螢幕,那麼,你看到的這個工程師是最糟糕的工程師。如果一個工程師總是在電腦前寫程式,這絕對是一個不好的訊號。效能滿點的工程師總是不斷檢查他對需求的理解,確保他們的程式和需求是同步的。效能滿點的工程師是頻繁的和產品經理 / 業務人員溝通交流,你可以經常看到他們使用白板與同事和架構師交流討論。工程師的閱歷和經驗都是用來提高開發效率,這最優秀的工程師:
[*]他們思考程式的時間增加而寫程式時間減少
[*]對問題的透徹理解使除錯的速度更快
[*]深思熟慮後的程式速度更快
[*]程式長度更短
[*]工程師從心理上講都是喜愛自己的程式的。
爛工程師不喜歡去修改已經寫成的爛程式。相比起優化自己的程式,他們更願意簡單的增加更多的程式,以此來彌補之前的缺陷。更糟糕的是,他們喜歡把責任歸咎於他人。最終,一堆不好用的程式上在來另外一堆不好用的程式,整個系統變得到處是 bug,極不穩定。優秀的工程師經常也會寫出爛程式,但他們能看到那些程式需要優化,哪些需要重寫。優秀的工程師和不優秀的工程師的區別就在於對有問題的程式的態度,優秀的工程師的做法是:
[*]如果程式整體上好的,那就重構程式。
[*]如果程式整體上有問題,那就重新程式
當程式中有需要優化或需要重寫的地方時,時間拖的越久,你就越難回頭解決這些問題。因為對這些程式依賴的程式會越來越多,越來越深,當你優化這些程式時,相關的依賴也需要進行相關修改。當積累的問題越來越多時,輕鬆的優化 / 重新這些程式已經變得不可能。而使用繼續增加程式的方式來彌補之前程式問題,會讓系統變得越來越不穩定。如果腦子裡沒想清楚,那就懶一些,把寫程式的時間往後推。
原文 Productive Developers are Smart and Lazy。
頁: [1]
查看完整版本: 高效率工程師的兩個特徵:聰明、懶惰