《高效程序員的45個習慣》notes

這裏寫圖片描述 
多看上看的,寫的是一些開發中常常遇到的問題以及解決方案,整理出來,以xxx個習慣的方式呈現。 
命名學的是《高效能人士的7個習慣》,岔開說一句,中文讀起來很有山寨雞湯感,其實內容都是不錯的。

內容上,對於剛開始開發的人會有不錯的指導作用,如果經驗不是很多的話,先照着做,然後在實踐中一點點去體會和修正也是不錯的。 
對於有一些開發經驗的人來說,對於裏面的每一個小點,可能都瞭解甚至實踐很多,但是不妨從另外一個視角來看,就是系統性,起碼我個人來說,能集中的過一遍開發中涉及的方方面面,去反思和抽象,也很有收穫。這個文章裏也就從這幾個方面來看這些: 
真實和事實爲大 
在實際開發中,需要一直面向真實的結果,並在點點滴滴中警惕這一點,比如文中提到的: 
- 癡迷於方法,而導致空做了很多動作(甚至很多可以說是標準實踐),最後真實的項目進度沒有進展 
- 使用了大量的設計模式,導致問題並沒有以最高質量最高效的解決(包括運行效率和開發效率) 
- 前期收集了客戶需求,隨着時間的變化,客戶的想法變了,或者市場情況變了,但依舊沒有做相應的調整 
- 隨着時間的變化,計劃受到衝擊,去沒有做到實際的調整 
所有這些可以說是有無窮多的變種,實際項目中也遇到大量的失敗案例. 
就個人的經驗來看,原則性的始終要保持對這些問題的敏感是不錯的: 
- 當前重要的問題是什麼 
- 我們是否朝着正確的方向前進,在這些方向上進度如何 
看起來並不難,這背後有兩個因素需要我們去深度注意: 
- 面對事實謙卑的心–不要固執己見等等,錯了就是錯了,面對事實,儘可能的讓事情向好的方向去發展即可 
- 對於真實情況的洞察 
- 大量經驗的積累,反思,總結,向更優秀的人的學習。。。 
- 把握合理的火候,不多不少

坦率,務實與行動 
團隊需要有一個務實坦率的風格,能夠做到對事不對人,這個知易行難,大部分情況,少非議別人的失誤,是一個職場生存之道,不管多少人旗幟鮮明的反對”會做人“這一點,在一個一般性團隊中,務實坦率就是非常的困難,但就個人所見這不是不可能。 
引用查理芒格的反向說法:這的確是人之常情,但是如果你能克服這一點,你或你的團隊就是會有長足的進步。 
所以,團隊一旦邁出了坦率與務實這一步,接下來就會迎來下一個進展,更容易面向真實的情況,比如書中提到的:

  • 不能讓不寫代碼的人擔任架構師:實際情況中的確有,因爲種種原因,一個人掌握着項目的技術方向,但是自己卻不寫代碼,不寫代碼就會導致代碼能力和判斷力的穩步下降,再到後面,也不敢寫了,身居要職,寫出讓大家嘲笑的代碼怎麼辦?

  • 無懼錯誤,只有不做事的人纔不會犯錯誤,大家平和的看待,理性的對待就好

  • 行動勝過千言萬語

分而治之 
分治這就是一個非常好的智慧,無需多言。 
在實踐中的例子非常多: 
- 持續集成,自動構建,自動測試,持續迭代 
- 保持一直有一個可玩的版本(遊戲業如此,比如naughty dog,其他行業就是一個可用的版本) 
- 工作中,把事情進行分解,然後一步步去實現和反饋。。。 
論證分而治之爲何有效就沒必要了,實際項目中,有這兩個問題會影響大家去運用這個原則: 
- 嫌麻煩:嫌一個個小東西的麻煩,最後導致一個大型的麻煩,甚至導致開發的東西被cancel掉,這其實是糖果實驗裏的那種情況(小孩給3個糖,5分鐘不吃就再給兩個,否則就不給),不到不得已不會行動這種情況,有時候或許是無解的。 
- 自負:小東西沒勁,來個大的才爽,其實這個並不是一個絕對的不好,這樣可能會穩步的增加自己hold住大模塊的能力,但是具體事情上麼,個人覺得隨着實踐的增加,會發現這其實沒必要,引用漲工資對於喬丹”花哨運球“的說法: 
”打籃球到後來,都是大道至簡,舉重若輕。艾弗森2001年都不像1997年那麼花哨了。爲什麼?用不着了。1997年總決賽第一場,喬丹最後那個絕殺。三分線外接球,右手拍了三下球,重心是往右走的;忽然換到左手,腳步調整了一下,是要起速或原地投籃的架勢;拉塞爾重心剛來的及側到喬丹左手邊,喬丹左手運一步,忽然急停跳投,拉塞爾都來不及起跳,絕殺。這個球裏,包含了向右走、向左走、原地投籃三個假動作選項,最後又用一記突破假動作釘住了拉塞爾下盤,最後一個投籃。 
而且時間把握得剛剛好,球進鐘響。 
什麼叫分寸、精確、老練,都在裏面了。 
如果能這麼舉重若輕解決問題,爲什麼還要跟街頭鬥牛一樣,把自己腿擰成麻花來晃人呢?“

好的實踐 
這裏就比較雜了,列一下:

  • 代碼要簡潔優雅

  • 文檔恰到好處,如果代碼可以自解釋,就無需文檔了

  • 團隊協作,注意人與人之間的關係,禮貌,和把注意力集中在事情上(起碼第一優先級不應該是誰應該對此負責,誰應該被責備上)都是非常有力的

  • 代碼review,這個好處非常多,一些頂尖的優秀公司是嚴格遵守這一條的, 


  • review情況下,總的質量和開發時間(如果不review,可能更多地時間來處理問題等等),這個也是贊同的,但是實際情況中需要考慮本文的第一原則,項目的真實情況和重點所在,如果實現過程中,需要快速搞定(美術協作,過milestone決定項目生死),那麼先fast&dirty,然後回頭整理的借貸式開發是更優的選擇(http://blog.csdn.net/toughbro/article/details/22776277

轉載自:http://blog.csdn.net/toughbro/article/details/46872877


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章