什么是“專家”?成為“專家”需要多長時間?
在我開始討論如何成為一名專家之前,我們一起來花上30秒時間,看看專家的定義,還有成為專家需要多長時間?
在使用某一技能三個月后,你還不是專家,即便使用時間是三年,你還不是。馬爾科姆·格萊德威爾在《 異類:不一樣的成功啟示錄 》一書中指出,成為一名真正的專家,需要10000小時。10000小時!如果一天用10小時,每天都學習,則大概需要3年時間。如果一天5小時,一年學習200天,則大概需要10年時間。10年!
根據這一說法,我想起來,我曾在有3年開發經驗時,自認為是一個專家級或高級開發人員。如今,在2010年我已有約10年經驗,我已經知道,自己已經掌握多少東西,還有多少東西尚未知曉。現在,我已覺得自己不再是一名專家了。
此外,在過去10年當中,這一行業(Java企業級開發)已經發生了翻天覆地的變化,所以我過去掌握的技能,已不再“風光”。所以,即便你是專家,你可能也會發現自己正在過時,不得不重頭開始。
還有一件事:你不可能是全才(即:各個領域的專家)。這也就是說,你或許在某一技能上比張三優秀,但張三在另一技能上或許比你優秀。你不可能在任何方面都比別人優秀或比不上別人。你總是能從他人身上學到東西。(更不能因為別人使用的技術和你不同而去攻擊他人,只要別人不是一無是處,你就可以從他們那里學到很多東西。正所謂,“三人行必有我師”。這也是《成為一名優秀程序員所需要知道的那些事》之一)。我曾經遇到過一些開發人員,他們總以為自己在全方面都比他人優秀似的,即便事實并非如此。
事實上,這通常就是區分新手的一種方法。不管是在線上還是線下,新手總是相信自己知道一切,并會至始至終地爭辯。他們的爭辯相當絕對,比如“這個總是比那個要好”,或“這就是解決事情的唯一方法”等。專家則幾乎不會那樣做。他們知道,一切事情取決于具體情況(也就是“具體情況,具體分析”),開發人員所掌握的技能,公司所選擇的工具,公司政策,個人喜好等等。沒有經驗的開發人員(和普通人)一般都認為“世界是非白即黑”。而專家知道,世界還充滿了灰色區域,甚至還有其他大量顏色和色調。
如何成為一名專家
對于大多數你需要學習的技能,這里有四個步驟,以助你成為一名專家。在大多數情況下,你可以按照順序完成如下步驟,也可以從上至下重復如下步驟:
1. 學習技能;
2. 實踐技能;
3. 討論技能;
4. 傳授技能;
學習技能
在你掌握一門技能之前,你必須先學習相關理論。你可以通過書籍和教程,或課程教育,或綜合前面這些方法來學習理論。
實踐技能
一旦你掌握了技能相關理論,你需要在現實中運用該技能。通過實踐,你會知道你所學的理論,哪些地方正確,哪些地方有誤。當然了,你在大學中所學到的理論,通常在現實中并不奏效,或者根本不適合你所處的環境。
討論技能
一旦你使用技能已有很長一段時間,并且發現自己能解決很多需要該技能的問題,那這時候你應該和其他經驗人士討論它了。討論使用該技能的最佳方法,技能相關理論的局限是什么,還可以增加什么東西等等。簡而言之,討論如何進一步推動該技能。(比如一個API,如何優化/改進它等。)
傳授技能
向他人傳授技能,無疑是完善自身技能的一種好辦法。可能有很多事情只顧著做了,但并未考慮為什么要那樣做。因為必須(向他人)解釋你的方法,這會迫使你自己重新思索“為什么要做”和“做了什么”。
此外,你的技能上或許有些邊邊角角事從來都不需要掌握的。(比如,Web服務規范的邊邊角角)。因為要傳授自己的技能,這迫使你也要掌握這些空白了,這會讓你更上一層樓。
如何成為一名專家級的開發人員
既然我已經談論了如何成為一名普遍意義上的專家,我將進一步談論如何成為一名專家級的開發人員。
作為一名開發人員,你將很可能在特定行業(至少有一段時間)做軟件開發,使用特定的平臺。如果不是,如果你一直在選擇工具或行業,就像一些Web開發人員一樣,那么你很可能將永遠不會成為一名真正的專家。你會成為萬金油或三腳貓(在某些方面還是挺有用)。如果你沒有專注某一平臺或行業,而你又想成為一名專家,那你要學會專注了。
1998年,那是一個春天,我開始做Web應用,開始了我的職業生涯。我發現自己一直在更換著工具,也就是說我并沒有真正擅長于某種工具。我只是一直在為新工具而戰。后來,我決定專注一門面向對象語言和一個平臺,并選擇了Java。那時候還沒有.Net。所以從1999年開始,我一直只用Java。
在成長為專家的路上,你必須要選擇一個平臺,可能還有一個行業。行業并不特別重要,但擁有業務領域知識,這將真正增強你的實力。
在你學習一個平臺時,你可以選擇一門語言來入手。比如,Java語言。在你學習語言之后,則需要學習一個平臺(包括所有的API和工具)。在Java中,有兩大平臺:標準版(J2SE)和企業版(J2EE)。(編者注:還有微型版(J2ME))
一旦你開始掌握選擇的平臺,你應當開始學習獨立于平臺的技能,比如模式設計、分布式系統設計、系統機構和可用性等等。在你取得進步時,你將要花更多的時間來學習這些技能。這是好事。因為這些技能不受平臺限制,更容易轉移新的技術平臺。
最后,你或許會脫離軟件開發,轉入到諸如項目管理或架構師的完全不同的業務領域。請謹記,一旦你停止使用你的開發技能,你的專家之路將更加長遠了。
下面有一張關于你的“專家之路”的圖表。你從最低端開始,逐層上升。藍色層表示獨立于平臺的技能。其他顏色層表示特定的平臺。即便下圖中并沒有你的平臺,你也可以自行添加。
(圖:“專家之路”:語言 -》 平臺 -》 獨立于平臺的技能)
你必須根據你所處的行業、所在的公司和所使用的平臺來填入具體的工具和技術等。這些事情,我無法一勞永逸地為各位一次性做好。
怎么知道自己該學習什么,查看招聘廣告不失為一個好辦法。看看最常用的工具和技術?閱讀一些在線軟件雜志,看看行業人士討論最多的技術是什么?泡相關論壇和博客,看看他們最常問的問題是什么?還有,人們談論最多的技術是什么?總之一句話,什么技術是明天的熱點?
-
開發工程師
+關注
關注
1文章
91瀏覽量
14934
發布評論請先 登錄
相關推薦
評論