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