出了問題後,要提出各種解決方案的選擇,而不是找藉口;不要說事情做不到,要說明接下來做什麼來挽回局面;
我們看到過整潔、執行良好的系統,一旦窗戶開始破裂,就相當迅速的惡化;
不要留著破窗戶不修;發現乙個bug就修復乙個,如果沒有足夠的時間進行恰當的修理,就用木板先訂起來;或許你可以先把**注釋起來,或是顯示「未實現」的訊息;採取某種行動防止進一步的損壞,並說明情形在你的控制之下;
我們喜歡把程式設計師所知道的關於計算機技術和經驗視為他們的知識資產;
你的資產是有時效的資產,會隨著新技術、語言和環境的出現而變得過時;
管理知識資產與管理金融資產非常類似:
嚴肅的投資者定期投資-作為習慣
多元化是長期成功的關鍵
管理風險;聰明的投資者在保守的投資和高風險的投資之間平衡他們的資產;
應週期性的重新評估和平衡資產
投資建議:
每年至少學習一種新語言;
每季度至少閱讀一本技術書籍;
也要閱讀非技術書籍;
與他人交流時,你需要了解你的聽眾:
你想他們學到什麼?
他們對你講的什麼感興趣?
他們有多富有的經驗?
他們想要多少細節?
你如何促使他們聽你說話?
遇到程式bug時,不要一味的指責**編寫者;我們需要的是修正問題,而不是發出指責;
don't repeat yourself;
系統中的每一項知識都必須具有單
一、無歧義、權威的表示;
重複的發生地方:
開發者沒有意識到重複;有時,重複來自於設計中的錯誤;
開發者偷懶、他們重複,因為那樣**似乎更容易修改;
開發者之間的重複:同一團隊中幾個人重複了同樣的資訊;處理這個問題的最佳方式就是鼓勵交流;一定要閱讀他人的**,並進行**review;
讓復用變得更容易!
你需要營造一種環境,在其中找到並復用已有的東西;如果不容易,大家就不會去復用;而如果不復用,就有了重複的風險;
正交:兩個事物中乙個發生變化,對其他無影響,這兩個事物就是具有正交性;
正交性的好處:
提高生存率;
降低風險
讓**維持正交性,可以消除無關事物之間的影響;
不存在最終的目標,也沒有終極的架構;專案的任何乙個模組乙個元件都是可撤銷,可替換的;不要過度依賴於某個第三方的產品,否則你的專案就被第三方綁架了;
通過靈活的架構,將第三方產品隱藏在良好的抽象介面之後;
多用python、shell等指令碼語言,將工作的重複性任務自動化實現;
對於程式設計中的重複性**,通過指令碼自動生成**來實現;
在工作中多總結,提煉小系統,讓流程、**都自動化;
linux下的cron是個好東西,讓你的自動化任務都在夜深人靜時準時執行;
你所寫的**都是深思熟慮過後的產物,先有設計,然後再產出;想到一處寫一處是剛畢業的水平;
按照合約程式設計,別想著這個地方可以增加多少好功能,畫蛇添足的故事太多,過多的超過使用者期望未必有好的結果,可能就成了使用者不想要的;
測試重要,大家都知道;但單元測試,有多少個專案能認真的做過;沒有質量高、覆蓋好的單元測試,哪來的勇氣去重構乙個個龐然大物似的老專案?
這句話很精闢:測試你的軟體,否則使用者就得測試;
有個新工具或新方法想在專案組中推廣,這事挺好;但不要低估採用新工具和新方法的代價,可能你的專案需要花上太多精力來熟悉這個方法,而第乙個採用這個方法的專案,可能就只能是實驗品;
批判的看待方法學,從中提煉適用團隊的精華;
《程式設計師修煉之道》讀書筆記
第1章 你的知識資產 隨著你的知識的價值降低,對你的公司或客戶來說,你的價值也在降低。管理知識資產與管理金融資產非常相似,管理金融資產基本遵循 1.嚴肅的投資者定期投資 作為習慣 2.多元化是長期成功的關鍵 3.聰明的投資者在保守的投資和高風險 高回報的投資之間平衡他們的資產 4.投資者設法低買高賣...
程式設計師修煉之道 讀書筆記
注重實效的程式設計師的特徵 care about your craft 關心你的技藝 think about your work 思考你的工作 1 注重實效的哲學 我的 被貓吃了。負責 破窗理論。軟體的熵 定期為你的知識資產投資 2 注重實效的途徑 dry don t repeat yourself...
程式設計師修煉之道讀書筆記
1.無處不在的自動化.q 你目前是否在gui中用手工做一些事情?你是否曾將一些說明發給同事,其中涉及許多 點這個按鈕 選哪一項 之類的步驟?它們能自動化嗎?a 其實有很多自動化工具可以進行錄製動作,是否可以通過錄製過程,自動生成這種文件。2.強大的編輯器,這方面我比較很弱,需要改進 3.原始碼控制,...