一個從事多年的開發的老程序員和一個剛入職的新手,同樣開發一個新功能,都按照產品Prd實現了相關功能,這是不是就意味著新人有替代“老人”的能力呢?他們的差別有多大?有十萬八千里那么遠嗎?
細思,發現差別有以下五點:
一是時間成本。毫無疑問“老人”熟悉項目開發的流程,比新人有更熟練的技能,對工具運用的更熟練,有扎實的基礎知識,對于功能的實現能正確的使用API。
二是效率。開發中經常會遇到各種編譯問題:如不能識別的類,接口,甚至變量,甚至各種maven的報錯,這些問題往往是協作開發中某人不小心提交的錯誤,“老人”面對這些問題往往能在最短的時間能追根溯源解決這些它,而新人通常是無所適從,沒有解決思路,如不及時尋求幫助的話,開發進度會大大的滯后。
三是代碼的規范性。規范性簡單的說包括變量、類、接口的合理的定義和命名,空指針的判斷,異常的處理,代碼的重構,常規通用寫法,還有更重要的事代碼注釋。代碼注釋體現的是一塊功能實現的邏輯思路。好的注釋不僅有助于其他開發人員迅速讀懂代碼,對自己而言也能迅速了解當初設計的初衷。這個過程中顯眼“老人”比新人做的更好,能寫出恰當的注釋和規范。
四是代碼的擴展性?!袄先恕蓖ǔ鶕I務寫出便于擴展的代碼,重構常用的功能。新人可能只注重業務實現的當下的功能,代碼缺乏一定的擴展性。
五是性能。經常有一些功能的實現可能存在的一些性能問題,可能是應該批量調用而目前接口只支持循環調用,也可能是復雜的SQL查詢導致性能慢的問題,也可能自己代碼寫出性能隱患,“老人”更善于發現,規避,解決此類問題。而新人往往因為經驗的缺乏會帶著問題上線,導致后續一系列的問題。
以上五點總結起來無非是“經驗”二字,但是經驗又是不可衡量,非標準化的。有些人經驗是不斷的重復,五年的開發經驗如同一年,而有的人則是不斷的累加。
新人和“老人”差別多少諸君自己判斷。