通過簡單原理增強軟體可靠性

 

簡單原理,就是字面的意思,系統越簡單越好。複雜問題簡單化,很難;簡單問題複雜化,很容易。

簡化問題至少有如下方法:借用、取捨、拆分、分類、分工、模式與學習、規範 。

借用是站在巨人的肩上。「欲窮千里目,更上一層樓」。遇到問題,先不急著動手,先思考、查閱記錄,看以前是否遇到相同或接近的問題,直接復用或借鑒。以前,我和500年接到一個流程圖的小項目,500年奮戰幾天沒能解決,半年後發現BCG有現成的功能。如果沒有可復用或借鑒,查閱團隊文檔和第三方文檔。

取捨。抓住主要矛盾,忽略次要矛盾。常見反例:某程式設計師鏖戰幾周,讓某個模組性能提升200%,但此模組不是瓶頸模組,所以整個系統的性能沒有提升。

拆分。好處有二:部分拆分後的子任務,可以直接借鑒,這將大幅降低成本。二,複雜度大幅降低。忽略模組見的通訊,1個500行的模組比5個100行的模組複雜得多。

分工。讓每位員工遇到同類問題的幾率大幅升高,多次遇到的問題簡單得多。

模式和學習。通過學習可以降低問題的難度。有效學習的四個要素:一,明確的目標。「看1小時的書「不是明確的目標。「用C#完成最簡單的同步事件」是明確的目標。二,專註於發散相結合。專註高效,但沒有發散性。發散容易產生靈感、頓悟。三,有效、及時的回饋。比如:老師閱卷、AI閱卷、同行切磋。四,在拉伸區練習。如果感覺枯燥,提升難度;如果感覺焦慮,降低難度。

如果有合適的規範,可以避免許多前人踩過的坑。

不同階段,主要目標不同:需求分析階段重點在拆分需求,設計階段重點在模組劃分,編碼階段重點在可理解性。