|
開發者的技術成長是個永恒的話題。《如何成為一個專家級的開發者》文中雖然界定了專家的概念和開發者成長為專家級的一般路徑,但卻忽視了一個問題:為什么只有少數人能成長為開發高手和專家級程序員?一般程序員與開發高手的差距在哪里?
事實上,我們一直在關注這一問題,并就此進行了數月的調查走訪,受訪的十幾位技術專家對此問題的回答有些出乎我們的意料,也與眾多入門級開發者所想象的“差距”大不相同。
入門者說
我們在一些具有1-2年開發經驗的程序員就“你與開發高手的差距在哪里”的問題進行調查,得到的答案大致可以歸納為以下幾種:
- 項目經驗。多數入門級程序員認為,大量的項目經驗是提高自身技術水平的關鍵;高手們往往具有更多的項目經驗,解決問題有更廣泛的思路和方法。
- 對語言和平臺的理解掌握。有相當一部分人覺得自己的技術積累還不夠,很多語法和API并不熟悉,甚至有人還要翻看語法手冊才能完成一段代碼的編寫。而高手們對語言和平臺早已爛熟于心,很多東西都到了“信手拈來”的境界。
- 良師高徒。少數開發者抱怨沒有高手和主程序員代領,無法獲得好的項目實操技能和指導。而高手們往往一開始就有好的機遇得到更好的經驗傳授。
- 努力程度。一些開發者覺得自己不夠努力,很多知識沒有深入學,很多項目沒有用心做。他們認為,高手們的技術水平與勤奮刻苦的技術積累有必然的關系。
這些差距的確存在,且帶有一定的普遍性。但仔細想來,卻多少有些主觀:同樣的項目,同一個團隊,為什么有人可以獲得更多的經驗并逐漸成長;同一個SDK同樣的IDE,為什么高手就可以“信手拈來”;一個主程代領3-5名程序員,為什么有人會脫穎而出?
高手說
“差距在哪里”的問題在受訪的專家級開發高手看來有不一樣的答案。這些答案多是指向技術內涵和開發者本身。
代碼的“斟”與“酌”
高手在編程效率方面可能并不比普通程序員快多少,因為他們會吝嗇自己敲下的每一行代碼。這種“吝嗇”有兩方面的含義,一是項目的架構性和整體性考量,二是從性能和優化的角度進行Coding。其實,這里所映射的是一個開發者的技術視野。
有多位技術專家強調項目執行時的全局觀。面對一個項目,即使是團隊中的普通一員,也要力求從項目整體架構的角度審視開發需求,對各個模塊、接口和通信做最優化的預想和配置。這樣可以從全局審視整個項目的技術布局,預判可能出現的問題。
在確定了整體之后,落實到具體的模塊實現,每一行代碼不但有上下文的考量與規劃,還要具備模塊間的整體布局。這是模塊內的技術視野,比如接口的定義、注釋的可讀性、代碼的執行效率等。當你寫下一行代碼前,要考慮它是否會對整個系統造成影響,是否方便其他接口進行調用,這些都是一個開發高手的“技術潛意識”。
據一些經常帶領入門級開發者的技術經理介紹,多數人只考慮自己所負責的模塊進行開發,缺乏一個全局性的技術視野和對代碼性能苛刻的態度,這樣雖然能按交付日期完成項目,卻對項目質量和開發者的自我提高有很大阻礙。
喜歡大麻煩
一般開發者對工作中的一些技術問題相當排斥,每個人都希望手里的項目可以順利進行,一旦遇到問題就會有負面情緒。而我們所看到的一些開發高手對待技術問題則是一種非常積極的態度。
問題、難點是提高的機會。解決一個問題,能力就提升一點;解決一個大問題,能力就提升一大截。很多技術高手喜歡大麻煩,如果開發工作可以順利進行當然是好事,但沒有難度就沒有高度;高手們會認為沒有技術挑戰性,很難讓高手們在項目中發揮應有的激情。
同樣有技術經理反映,用一個開放的態度迎接問題、解決問題,這是目前入門級程序員所缺乏的心態。“喜歡大麻煩”的態度也是程序員向開發高手進階的必備心里素質。
代碼閱讀者
開發高手是代碼閱讀者。大多數技術專家的代碼閱讀量是普通程序員的百倍,代碼閱讀的時間比寫代碼的時間要長得多。《Java編程思想》的作者Bruce Eckel對閱讀代碼的好處做出兩種說明:
- 代碼被閱讀的時間比寫代碼的時間要長,這有助于你的代碼被人理解,并改善或者修改其中的Bug。
- Code Review是最有成效的改善軟件缺陷的方法,但在我們卻經常“沒有時間來考慮它”。
關注代碼的可讀性有助于團隊的其他同事幫助你修正技術問題,而技術問題的修正可以使你不再犯同樣的錯誤。Code Review可以讓你有更高的視角來審視已完成的項目,這樣做,往往能有意外的收獲——你發現同樣一個項目,你可以做的更好。
除了自己和團隊中的代碼,高手們還愿意花大量的時間研究“代碼大全”,從別人的代碼中吸收不同的技術思想并與自己的技術風格融匯貫通。而普通程序員多數只閱讀與自己項目相關的程序代碼,很少分配精力閱讀優秀代碼。
其他“差距”
與之前入門者的答案想對比,你是否想到了什么?
技術與夢想
事實上,在“高手說”的部分我們還有一個答案沒有列出——技術熱情。雖然受訪的幾位開發高手給出的答案雖各有側重,但卻幾乎同時提到了這一點,“要有足夠的技術熱情”。
多數程序員只把程序開發當成一份工作,他們在乎平臺的前景、語言的優劣、報酬的高低;他們不愿為一個技術點反復鉆研,不愿為一個bug精心測試,不愿為自身技術水平的提高多花時間。而開發高手往往具有單純的技術夢想,愿意為技術付出自己全部的時間。
歸根結底,這還是技術與夢想的話題:你想用技術成就怎樣的夢想?在你的夢想中,技術占到幾分?
這個比例,才是你與開發高手的真正“差距”,也是你與開發高手的最大“距離”。
it知識庫:差距在哪里,你與開發高手的距離有多遠?,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。