開發者福音:如何成為一名高級開發人員
這是《程序員希望提升自身技術》系列的第二部分。 Part 1 帶我們完成了最基礎的階段,在那部分我們著手尋找最有效的方法去完成一個合格開發者從無到有所需要的東西。今天,我們將進行更深入的講解。
這篇文章是寫給所有已經有幾年企業工作經驗並希望提升自己能力的開發人員,程序員,碼農的(或者那些希望找到一 個正確學習路線的新人)。這篇文章也是寫給那些懷有一個簡單希望的人: 想成為一個高級開發人員並在所屬領域有所成就。 讀完這篇文章後,你將找到提升自己的合適路線和最好資源,進而成為高級開發人員。下面讓我們開始吧。
免責聲明: 就像 生活中的所有事情,你總能按照自己的方式去做。儘管這並不意味著它是唯一的方法,但它是我在自己的職業生涯中,通過多年與一些社區高級和德高望重的開發者對話和交談總結出來的一套方法。這篇文章是我收集的所有具有共通性的東西。更進一步講,這不僅僅是一篇教你怎樣變成一個更好的開發者的文章,它更是教你怎樣用高效合適的工具去優化你的時間,使你能夠享受生活的文章。這種學習方式將使你終生受益。 我們要的是什麼?
我們都力圖在工作上做得更好。具體做什麼不同的人有不同的看法。然而,大部分人應該會同意如下基本內容:
我們不希望一生都被視為「不稱職者」
我們希望得到同事的尊重
我們希望能感受到智慧和成就
我們希望得到讚賞
為了達到上述目的,我們不能停留在過去的榮譽上,並期待好事情主動來找我們。特別是在編程的世界裡,技術總是在變化,巨大的信息量把我們淹沒,我們應該把注意力集中在成長和學習上,而不應浪費掉。隨著越來越多的開發都從高校和和訓練營中走出,我們需要讓我們的技能更好,並在學習方式上要做到靈活和高效。說的夠多了,讓我們開始吧。我們會嘗試採取最好的辦法。 什麼是高級開發人員?
一個通曉多種語言的代碼,可以用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 框架。」他們喜歡並嘗試著新鮮事物,在說出「討厭」某一事物之前,會先去學習和了解它。


※Python里的黃金庫,學會了你的工資至少翻一倍
※中標國電!浪潮中高端存儲為國電大渡河公司提供雙活服務
※Flickr存儲150億張圖片架構系統之Tripod揭秘
※Infortrend打破企業桌面級存儲市場現狀
※服役八年的「高齡」存儲即將淘汰?看FreeStor如何妙手回春!
TAG:中國存儲 |
※如何成為一名全棧開發人員
※成為一名更好前端開發人員的9個技巧
※《正當防衛》開發商招募人才為次世代開發做準備
※百度AI開發者大會官方紀錄片:致敬開發者,致敬這個時代
※開發 | 一個 Android 開發者的小程序開發之旅
※任天堂呼籲第三方開發商:請儘快為NS開發大作吧
※日立製作所開發出自發成長的語音對話人工智慧技術
※如何從開發者成長為雲端架構師
※做開發十年,我總結出了這些開發經驗
※谷歌開發者大會突發火災,三人被送往醫院
※自由職業模擬器:開發者版 漢化發布
※關節開發之開胯
※開發者如何進行快速學習
※忍術開發天才,二代火影,開發過多少忍術?
※螞蟻金服招聘高級前端開發工程師/前端開發專家
※開發者淚別愛奇藝Win10 UWP版:後者併入桌麵糰隊繼續開發
※《底特律 成為人類》開發組或正同時開發其他遊戲作品
※關節開發之開肘
※為開發者賦能,阿里雲大學人才培養再次升級