開發者福音:如何成爲一名高級開發人員

 

這是《程序員但願提高自身技術》系列的第二部分。 Part 1 帶咱們完成了最基礎的階段,在那部分咱們着手尋找最有效的方法去完成一個合格開發者從無到有所須要的東西。今天,咱們將進行更深刻的講解。javascript

這篇文章是寫給全部已經有幾年企業工做經驗並但願提高本身能力的開發人員,程序員,碼農的(或者那些但願找到一 個正確學習路線的新人)。這篇文章也是寫給那些懷有一個簡單但願的人: 想成爲一個高級開發人員並在所屬領域有所成就。 讀完這篇文章後,你將找到提高本身的合適路線和最好資源,進而成爲高級開發人員。下面讓咱們開始吧。java

免責聲明:就像生活中的全部事情,你總能按照本身的方式去作。儘管這並不意味着它是惟一的方法,但它是我在本身的職業生涯中,經過多年與一些社區高級和德高望重的開發者對話和交談總結出來的一套方法。這篇文章是我收集的全部具備共通性的東西。更進一步講,這不只僅是一篇教你怎樣變成一個更好的開發者的文章,它更是教你怎樣用高效合適的工具去優化你的時間,使你可以享受生活的文章。這種學習方式將使你終生受益。程序員

 

咱們要的是什麼?

咱們都力圖在工做上作得更好。具體作什麼不一樣的人有不一樣的見解。然而,大部分人應該會贊成以下基本內容:算法

  • 咱們不但願一輩子都被視爲「不稱職者」編程

  • 咱們但願獲得同事的尊重數據結構

  • 咱們但願能感覺到智慧和成就架構

  • 咱們但願獲得讚揚框架

爲了達到上述目的,咱們不能停留在過去的榮譽上,並期待好事情主動來找咱們。特別是在編程的世界裏,技術老是在變化,巨大的信息量把咱們淹沒,咱們應該把注意力集中在成長和學習上,而不該浪費掉。隨着愈來愈多的開發都從高校和和訓練營中走出,咱們須要讓咱們的技能更好,並在學習方式上要作到靈活和高效。說的夠多了,讓咱們開始吧。咱們會嘗試採起最好的辦法。機器學習

 

什麼是高級開發人員?

 

一個通曉多種語言的代碼,能夠用10種不一樣的編程語言創建本身的 Jarvis (馬克·扎克伯格的 Jarvis——他的人工智能助理)不會使你成爲一個高級開發人員(儘管你頗有才華)。這是由於高級的開發者是能帶來增量效益的人,他能帶領團隊一同成長,並努力實現產品的商業價值。若是你的編程能力卓越,但缺少良好的溝通能力,或不能向顧客傳遞產品的實際價值,你就算不上高級開發者。這是重要的一點:你帶給你的公司/新創辦的小公司/生意以價值?若是你是公司裏少數幾個能給公司創造重要價值的開發者之一,你就算得上的高級開發者。高級開發者不僅是另外一個頭銜,而是用你的經驗提供真實利益給利益相關者的能力。編程語言

 

我怎麼作才能成爲高級開發呢?

這部分可能就是你一直所期待的。讓咱們深刻的思考,是否咱們能作成全部事。咱們一塊兒學習一下面的主題。若是你積極的實踐下面的技能,那麼你將會甩其餘人幾千米外。我稱它爲開發者福音: 在某個領域,總會有人比你更有經驗,可是你能夠追求精益求精。積累各類各樣的技能,你提高的效果將立竿見影。這不只讓你成爲更好的開發者,也會增長你總體的幸福感,由於你在爲人們奉獻真正的價值。

關於學習,你須要徹底集中注意力在一件事上。然而,這不是生活中的樣子。只有一項技能很難生存下去。尤爲,在像技術這樣突飛猛進的領域(誰知道5年後機器學習工程師會成什麼樣子呢?),你須要多種多樣的技能,這些技能讓你有更強的適應能力。

成爲一個高級開發人員,你須要學習 6個核心技能。

 

1. 技術技能

這是大多數人首先想到的技能,但這只是衆多技能的一部分。技能很重要,容不得半點含糊。高級開發人員須要花時間去了解一門技術的前因後果。爲何這個問題會出現?爲何這個框架會存在?這個庫正在解決什麼問題?做爲一名開發人員,你須要有對全部能受益於開發生命週期的工具和想法有好的理解力,並且能選擇對項目有最大積極做用的工具。而不是去專一於每個新版本的超級華麗測試框架的特性,相反地,當他們試圖爲公司解決一個實際問題時,他們會更專一於每一個測試框架的優勢和缺點。他們會問些相似於「爲了提供一個更好的產品,在咱們持續交付的過程當中哪些工做能夠被優化呢?「的問題。

 

他們也知道事情是如何鏈接在一塊兒的。要開始這樣的考,就要創建本身的思惟圖。你能夠用它將學習提高到更高的層次(給 Javascript 開發者思惟圖)。思惟圖將幫助你的大腦鏈接不一樣的想法和技術。

示例: 若是我是 Javascript 開發者,以 Cory House 的課程爲例,你將會了解到在 JavaScript 環境鏈接點。在一個行業中,一旦你掌握了相應的工具和技術,你就須要建立思惟圖,解決產品規模擴大時所面臨的問題。在頭腦中有上述的鏈接關係,經過更普遍的視角,你會把公司的主要資源集中在關係重大的事情上。

 

若是你僅經過實戰課程學習編程,或者沒有計算機科學的學位,那麼你須要學習數據結構、算法以及其餘計算機科學的主題。雖然架構和技術在變,通用的基本準則是不變的。 經過學習高級的主題,會再次意識到:雖然時間在變,語言在變,但大多數軟件問題以及好的實踐不變。這兩本書連接 (Rob Conery) 、 連接 (Gayle Laakmann McDowell) )是提高你技能的最好工具。雖然它們只是概覽,但能爲你未來的學習打下堅實的基礎。

收聽像 Jeff Meyerson 的 軟件工程師日報 的播客節目,你能時常關注當下的問題,而且用將來的視角看待這個行業。

最後,這裏有篇很不錯的文章 ,它以純技術的視角介紹了部分技能。

 

2. 團隊技能

這是一個常常被忽視的技能。你如何與團隊成員合做?你是否在審查 PR(pull request)時傲慢並自覺得是,並促成了一個有毒的文化產生?仍是說你體貼、合做以及會鼓勵你的團隊成員?高級開發者從不自吹自擂。他們知道本身很優秀,不須要向別人證實本身。他們編寫乾淨簡單的代碼,而不是寫團隊成員讀不懂的代碼來炫耀他們的技能。他們樂意幫助別人,也會在本身不知道的時候提問。

這就是情商的用武之地。社會心理學是提升這種技能的重要工具,沒有什麼比著名的 人性的弱點 更值得一讀。請記住:如何能讓你周圍的人變得更好?若是你的團隊中有 5 我的,1 + 1 + 1 + 1 + 1 應該大於 5,由於你應讓你周圍的人變得更好(別糾結純粹的數學理論了……讓我繼續)

若是你在一個項目裏,或者你參加了一個團隊,並能與團隊很好地協同工做,你已經比大部分人都領先了。你也使管理者、主管、敏捷專家和 CTO 的生活更輕鬆。這些人會獲得晉升,更重要的是,他們爲公司帶來了價值。

 

3. 客戶/用戶技巧

在與客戶交談的過程當中,你可否清楚地瞭解他們的需求?當他們向你求助時,你可否明白他們正面臨的問題?高級開發者能與客戶單獨溝通,是一個偉大的傾聽者,會在瞭解全部狀況後,向客戶提供推動的建議。他們擅於創建關係,且具備很好的說服力,但這種說服不是強迫。他們明白客戶與開發者的交易是一場互利互惠的遊戲,詳情瞭解

最後,你須要可以向非技術人員解釋複雜的編程概念。可經過觀看教練如何分解複雜的主題開始培養這種技能。這是我最喜歡的教練,以及個人第二喜歡的教練。雖然他們教授的內容很難,但他們都有一個共同點,而這也是他們的厲害之處。

 

4. 成長的技能

高級程序員老是都會學習新的東西。但並非花 14 個小時坐在電腦前閱讀文章,而是採用更高效的方法,他們會與其餘開發者一塊兒交流,互相詢問問題和解答問題。他們不會只專一於一項技巧。在某一領域你的能力多是最強的,可是,若是你對於你要解決的問題沒有一個全面的瞭解,就會在某個環節敗下陣來。

他們持有成長的觀念(相信智力是可塑的),並進行有目的的練習。他們明白學習全部的事情是不可能的,因此他們選擇將時間花在他們喜歡的和最重要的事情上。

他們不會只是抱怨:「我討厭這個類庫!」不少時候,說出這類抱怨的人都是由於他們對這項事物不夠了解。例如,有人會很自負地說:「我討厭 jQuery,只有低水平的開發者才使用它。」但在高級開發者眼裏:「jQuery 是 Web 開發的重要工具,是很是流行的 JavaScript 框架。」他們喜歡並嘗試着新鮮事物,在說出「討厭」某一事物以前,會先去學習和了解它。

 

5. 銷售/面談技巧

高級開發人員能得到資深職位,由於他們擅於與上級領導溝通。他們能很快把握僱主或商業需求,並表現出能很好知足這些需求的形象。高級開發者自信卻不自傲,他們有足夠的信心完成指定任務,並能在高壓下執行。並且他們也有充分的可是挑戰更高層的職位。銷售和談判看似與技術無關,倒是工做中並不可少的能力。Ramit Sethi 的一篇文章有相關的介紹。

 

6. 社區技能

高級開發者貢獻於開發者社區,無論是技術會談,主持會議,貢獻源碼,仍是發表文章。他們須要與整個社區的工做者進行溝通交流,拓寬他們的視野,所以他們在整個產業中充當的是分享信息資源的角色。這就比如是一次旅行:在與他人交談的過程當中瞭解的文化越多,你對人類之間的差別的理解就越深刻,就越能以欣賞的眼光看待他人。

 

寫在最後

若是你能在工做中主動運用這些技能,很快就能看到自身的改變。這篇文章最重要的主題就是:熱愛你的工做。若是你並不喜歡天天學習計算機科學和軟件開發技術的過程,你永遠不會成爲一個高級開發人員,由於你缺少進步的動力。 激情不是三分鐘熱度,真正的激情產生在你掌握一個技能以後。若是你已經努力成爲了某個領域的專家和領導者,已經掌握了這些技能,那麼如今,尊重與幫助他人能讓你得到持續的進步。 這就是你如何培養你對工做的熱愛的方式。

 

結論

若是你已經學會了代碼而且正在尋找你職業生涯的下一步,你須要以不一樣的方式思考。你怎麼能脫穎而出?你怎麼能成長?你如何幫助人們解決實際問題並提供價值?你要成爲一個高級開發人員就不能只作簡單的事情。你作的事情推進並挑戰你的思想和溫馨程度。你天天不斷的學習和調整,就像你第一次寫代碼。每一步都很小,但在一輩子的時間裏,一小步就會變成一英里。永遠不要中止閱讀和學習,但也要知道,你所花的時間哪些是有價值的,哪些是沒有的。

相關文章
相關標籤/搜索