|
當你瀏覽這篇文章的時候請記住:成為一個真正的專家和被當成是一個專家之間是有區別的。許多人都被晉升為專家,但是他們真的不是。但是,如果有人相信他們是,他們就會一直賺很多錢,雖然他們很平庸。另外,有許多專家,沒有人知道他們是專家。如果你真的是一個專家,你的下一步行動就是要被大家當成是一個專家。如何做到這一點已經超過了這篇文章的討論范圍。這是一個的不同主題——關于個人品牌等。
什么是“專家”,要花多長時間才能成為一個專家?
在開始討論如何成為一個專家之前,我們先來花30秒的時間來說明專家是什么,和要花多長時間才能成為一個專家。
在你使用一項技能3個月以后,你不是一個專家,使用3年以后也不是一個專家。根據Malcom Gladwell的圖書《局外人》所說,要成為一個真正的專家需要平均花費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中,平臺被劃分成了兩個:標準版和企業版。
一旦你開始掌握你的平臺,你應該開始學習一些獨立于平臺的技能,像設計模式,分布式系統設計,架構,可用性等等。當你取得進步的時候,你會花更多的時間來學習這些技能。這是一件好事情。這些技能可以更容易的遷移到一個新的技術平臺上。
最后,你可能會完全脫離軟件開發工作,進入到像項目管理,架構師那樣的完全不同的業務領域。請記住,一旦你停止使用你的開發技能,那么你也就在專家之路上駐足不前了。
這是一張圖表,表示你的“專家級開發者之路”。你從底下開始,一直向上面一層前進。藍色的層是獨立于平臺的層。其他顏色的層是特定于平臺的層。即使你的平臺不在這里面,你也可以自己把它添加上。
從語言上升到平臺,再到平臺獨立的技能,用這種方式來成為一個專家級的開發者
你不得不針對你的行業,你的公司和你的平臺添加具體的工具。我無法一次性的為每一個人做這件事情。
找出你應該學習什么的一個好方法是看招聘廣告。看看他們通常需要什么工具和技術?讀一下在線的軟件雜志。看看他們談論的最多的是什么技術?瀏覽一下論壇,看看人們問的最多的問題是什么?還有,人們討論的最多的是什么技術?換句話說,什么會成為將來的熱點?
關于作者
作者Jakob Jenkov是一名資深的獨立軟件開發者,同時也是部分學科的科學家、哲學家以及企業家。
原文作者:Jakob Jenkov 周雪峰譯
原文地址:http://tutorials.jenkov.com/software-as-career/how-to-become-an-expert-developer.html
it知識庫:如何成為一個專家級的開發者,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。