差距在哪裏,你與開發高手的距離有多遠?

 【51CTO觀察】開發者的技術成長是個永恆的話題。最近,51CTO又有一篇與此相關的文章受到網友們的普遍關注——《如何成爲一個專家級的開發者》 。文中雖然界定了專家的概念和開發者成長爲專家級的通常路徑,但卻忽視了一個問題:爲何只有少數人能成長爲開發高手和專家級程序員?通常程序員與開發高手的差距在哪裏? 程序員

事實上,咱們一直在關注這一問題,並就此進行了數月的調查走訪,受訪的十幾位技術專家對此問題的回答有些出乎咱們的意料,也與衆多入門級開發者所想象的「差距」大不相同。編程

 

入門者 說架構

咱們在開發頻道QQ羣(50677317)和身邊的一些具備1-2年開發經驗的程序員就「你與開發高手的差距在哪裏」的問題進行調查,獲得的答案大體能夠概括爲如下幾種:ide

◆項目經驗。多數入門級程序員認爲,大量的項目經驗是提升自身技術水平的關鍵;高手們每每具備更多的項目經驗,解決問題有更普遍的思路和方法。佈局

◆對語言和平臺的理解掌握。有至關一部分人以爲本身的技術積累還不夠,不少語法和API並不熟悉,甚至有人還要翻看語法手冊才能完成一段代碼的編寫。而高手們對語言和平臺早已爛熟於心,不少東西都到了「信手拈來」的境界。性能

◆良師高徒。少數開發者抱怨沒有高手和主程序員代領,沒法得到好的項目實操技能和指導。而高手們每每一開始就有好的機遇獲得更好的經驗傳授。學習

◆努力程度。一些開發者以爲本身不夠努力,不少知識沒有深刻學,不少項目沒有用心作。他們認爲,高手們的技術水平與勤奮刻苦的技術積累有必然的關係。測試

這些差距的確存在,且帶有必定的廣泛性。但仔細想來,卻多少有些主觀:一樣的項目,同一個團隊,爲何有人能夠得到更多的經驗並逐漸成長;同一個SDK一樣的IDE,爲何高手就能夠「信手拈來」;一個主程代領3-5名程序員,爲何有人會脫穎而出?這也從另外一個角度印證了新浪微博技術經理楊衛華所提到的:爲何5%的技術人員開發效率是其餘95%的20倍?優化

 

高手 說spa

「差距在哪裏」的問題在受訪的專家級開發高手看來有不同的答案。這些答案可能是指向技術內涵和開發者自己。

 

代碼的「斟」與「酌」

高手在編程效率方面可能並不比普通程序員快多少,由於他們會吝嗇本身敲下的每一行代碼。這種「吝嗇」有兩方面的含義,一是項目的架構性和總體性考量,二是從性能和優化的角度進行Coding。其實,這裏所映射的是一個開發者的技術視野。

有多位技術專家強調項目執行時的全局觀。面對一個項目,即便是團隊中的普通一員,也要力求從項目總體架構的角度審視開發需求,對各個模塊、接口和通訊作最優化的預想和配置。這樣能夠從全局審視整個項目的技術佈局,預判可能出現的問題。

在肯定了總體以後,落實到具體的模塊實現,每一行代碼不但有上下文的考量與規劃,還要具有模塊間的總體佈局。這是模塊內的技術視野,好比接口的定義、註釋的可讀性、代碼的執行效率等。當你寫下一行代碼前,要考慮它是否會對整個系統形成影響,是否方便其餘接口進行調用,這些都是一個開發高手的「技術潛意識」。

據一些常常帶領入門級開發者的技術經理介紹,多數人只考慮本身所負責的模塊進行開發,缺少一個全局性的技術視野和對代碼性能苛刻的態度,這樣雖然能按交付日期完成項目,卻對項目質量和開發者的自我提升有很大阻礙。

喜歡×××煩

通常開發者對工做中的一些技術問題至關排斥,每一個人都但願手裏的項目能夠順利進行,一旦遇到問題就會有負面情緒。而咱們所看到的一些開發高手對待技術問題則是一種很是積極的態度。

問題、難點是提升的機會。解決一個問題,能力就提高一點;解決一個大問題,能力就提高一大截。不少技術高手喜歡×××煩,若是開發工做能夠順利進行固然是好事,但沒有難度就沒有高度;高手們會認爲沒有技術挑戰性,很難讓高手們在項目中發揮應有的激情。

一樣有技術經理反映,用一個開放的態度迎接問題、解決問題,這是目前入門級程序員所缺少的心態。「喜歡×××煩」的態度也是程序員向開發高手進階的必備內心素質。

代碼閱讀者

開發高手是代碼閱讀者。大多數技術專家的代碼閱讀量是普通程序員的百倍,代碼閱讀的時間比寫代碼的時間要長得多。《Java編程思想》的做者Bruce Eckel對閱讀代碼的好處作出兩種說明:

◆代碼被閱讀的時間比寫代碼的時間要長,這有助於你的代碼被人理解,並改善或者修改其中的Bug。

◆ Code Review是最有成效的改善軟件缺陷的方法,但在咱們卻常常「沒有時間來考慮它」。

關注代碼的可讀性有助於團隊的其餘同事幫助你修正技術問題,而技術問題的修正可使你再也不犯一樣的錯誤。Code Review可讓你有更高的視角來審視已完成的項目,這樣作,每每能有意外的收穫——你發現一樣一個項目,你能夠作的更好。

除了本身和團隊中的代碼,高手們還願意花大量的時間研究「代碼大全」,從別人的代碼中吸取不一樣的技術思想並與本身的技術風格融匯貫通。而普通程序員多數只閱讀與本身項目相關的程序代碼,不多分配精力閱讀優秀代碼。

其餘「差距」

◆參與開源項目。高手們每每都會參加2-3個開源項目,從頭至尾完成一個項目的實現和後期升級。開源項目能夠與世界各地的優秀程序員接觸,協同完成工做,學習和應用最前沿的技術;並獲得更多人對你的技術反饋。

◆技術探索者。專家級開發者每每是技術探索者和新技術的佈道者。高手們每每對現有技術並不知足(並且常常抱怨這些技術的不足之處),能清晰看到現有技術的缺陷。與開源社區的結合讓高手們有更多機會接觸到最前沿的技術和應用理念,這些技術每每是解決現有技術缺陷的最佳方案。高手們還會把新發現的技術帶到國內加以推廣和應用,成爲這門新技術的專家。

與以前入門者的答案想對比,你是否想到了什麼?

 

技術與夢想

事實上,在「高手 說」的部分咱們還有一個答案沒有列出——技術熱情。雖然受訪的幾位開發高手給出的答案雖各有側重,但卻幾乎同時提到了這一點,「要有足夠的技術熱情」。

多數程序員只把程序開發當成一份工做,他們在意平臺的前景、語言的優劣、報酬的高低;他們不肯爲一個技術點反覆鑽研,不肯爲一個bug精心測試,不肯爲自身技術水平的提升多花時間。而開發高手每每具備單純的技術夢想,願意爲技術付出本身所有的時間

歸根結底,這仍是技術與夢想的話題:你想用技術成就怎樣的夢想?在你的夢想中,技術佔到幾分?

這個比例,纔是你與開發高手的真正「差距」,也是你與開發高手的最大「距離」。

 

【更多關於程序員成長的話題】

  1. 尋找成爲開發高手的密匙
  2. 充滿荊棘的專家程序員之道
  3. 技術總監談好的程序員如何寫代碼
  4. 架構師最怕程序員知道的十件事
相關文章
相關標籤/搜索