高效程序員的特徵:聰明,懶惰

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

    • 這些部門一般不給足夠的時間來整理需求
    • 他們常常不是請教問題領域專家,而是順從領導的意見
    • 他們一般沒法提供先後一致或完整的需求意見。
  • 清楚跟團隊中的其它程序員或其餘團隊中的程序員須要那些交互,如何交互,這包括:

    • 使用白板交流
    • 畫流程圖(UML或Visio)
你須要花大量的時間調研,來確保需求符合實情,來作工做讓你和同事的交流有共同的語言語義。然而,程序員都喜歡馬上衝上去編程,喜歡在電腦前不停的敲代碼。
在真正的軟件開發中,只有5%的開發時間是有效率的(你能夠參考《程序員開發效率悖論》)。若是你發現一個程序員用100%的時間都在盯着屏幕,那麼,你看到的這個程序員是最糟糕的程序員。
若是一個程序員老是在電腦前編碼,這絕對是一個很差的信號。
高效的程序員老是不斷檢查他對需求的理解,確保他們的代碼和需求是同步的。高效的程序員是頻繁的和產品經理/業務人員溝通交流,你能夠常常看到他們使用白板與同事和架構師交流討論。程序員的閱歷和經驗都是用來提升開發效率,這最優秀的程序員:
  • 他們思考代碼的時間增長而寫代碼時間減小
  • 對問題的透徹理解使調試代碼的速度更快
  • 深思熟慮後的代碼速度更快
  • 代碼長度更短
程序員從心理上講都是喜好本身的代碼的。
 
爛程序員不喜歡去修改已經寫成的爛代碼。相比起優化本身的代碼,他們更願意簡單的增長更多的代碼,以此來彌補以前的缺陷。更糟糕的是,他們喜歡把責任歸咎於他人。最終,一堆很差用的代碼上在來另一堆很差用的代碼,整個系統變獲得處是bug,極不穩定。
優秀的程序員常常也會寫出爛代碼,但他們能看到那些代碼須要優化,哪些須要重寫。優秀的程序員和不優秀的程序員的區別就在於對有問題的代碼的態度,優秀的程序員的作法是:
  • 若是代碼總體上好的,那就重構代碼。
  • 若是代碼總體上有問題,那就從新代碼
 
當 代碼中有須要優化或須要重寫的地方時,時間拖的越久,你就越難回頭解決這些問題。由於對這些代碼依賴的程序會愈來愈多,愈來愈深,當你優化這些代碼時,相 關的依賴也須要進行相關修改。當積累的問題愈來愈多時,輕鬆的優化/從新這些代碼已經變得不可能。而使用繼續增長代碼的方式來彌補以前代碼問題,會讓系統 變得愈來愈不穩定。
若是腦子裏沒想清楚,那就懶一些,把寫代碼的時間日後推。
相關文章
相關標籤/搜索