相信每個初入計算機編程大門的小白都會有很多問題?例如我應該學習哪門程式語言?學習了這門程式語言我能進入 BAT 大廠嗎?除了程式語言我還要學習什麼?
網上有很多文章講述初學者應該如何去學習,內容五花八門,錯綜複雜。文章翻了又翻,初入編程大門的小朋友們最終還是無法下定決心,反而看了以後開始變得更加迷茫,懷疑自己的智商。
在這裡我想要說的是,我和你一樣曾經也迷茫過,不是因為你太笨,而是因為網際網路上的知識太多了,作為初學者的你根本不知道如何抉擇。
我和你一樣,曾經迷茫過,但慶幸的是我最後找到了答案,打開了計算機編程的大門。
如今作為一個編程近十載的老碼農,我想就此將我的經驗分享與你。此文僅代表的我的個人觀點,歡迎一起討論學習。
我將編程生涯分為了三個階段,並且我會告訴你這三個階段你分別要掌握什麼樣的技能,以及這三個階段你可以做什麼樣的事情。
三個階段
站在食物鏈頂端的程式設計師必然會經歷過三個階段。
悲催的是有些人整個職業生涯都處於第一階段,而還有一部分停留在了第二階段,只有少量的人才能進入第三階段。
這三個階段分別是:碼農(代碼民工)、程式設計師 和 架構師。
接下來我們一起詳細聊聊這三個階段:
第一階段:碼農
每個程式設計師都會從碼農做起。
還記得大學上第一節 C 語言課程的時候老師問誰有編程經驗,教室裡面有十來個同學舉起手來,然而那時候我不知道編程是什麼。沒錯,很多人還沒進入大學就達到了碼農階段。
碼農到底是什麼,如何定義碼農?
碼農知道如何跟機器交流,他可以編寫計算機能讀得懂的文字。
當遇到一些問題時候,碼農可以將問題轉換為計算機可以讀懂的代碼,讓計算機幫助我們幹活(不管三七二十一,先 run 起來再說)。
如何你在這個階段感覺到非常痛苦和難受,那麼你應該認真思考一下是不是適合程式設計師這個職業。
如果 feel so good,那麼恭喜你,你有可能會成為一個不錯的程式設計師。
然而可悲的是,很多人在整個職業生涯中都處於碼農這一階段。
但是我要告訴你的是,這一階段的你雖然能幹活,但是很容易被年輕人替代,因為隨著你年紀的增長,年輕人會比你更有活力,而且他們可以忍受拿更少的錢,搬更多的磚頭。
如果你只是個碼農,你的晉升機會也會很少,同時意味著你的薪水也會較少。
如果你想加入 BAT 級別的大公司,這個階段的你會處處碰壁,面試一次被打擊一次,你會面到開始懷疑人生,自暴自棄。
因此你需要掌握更多的技能,然後達到第二個階段,成為一名程式設計師。
第二階段:程式設計師
在這個階段,你可能接觸了至少 2 門程式語言,一個動態類型語言和一個靜態類型語言。
程式設計師本質上是一個高級的碼農,那麼我們該如何進一步提升自己呢?
碼農編寫可以正常 run 起來的代碼,俗稱搬磚。而程式設計師呢,是編寫高質量高性能的可以 run 的代碼,俗稱高級搬磚(哈哈哈)。
那想成為程式設計師你需要掌握哪些技能呢:
了解代碼最終如何變成硬體晶片可以理解和執行的指令。
了解如何讓代碼有效利用計算機資源,例如 處理器、內存和網絡。
了解如何使用數據結構和算法編寫高效的代碼。
了解代碼質量很重要,並且會編寫測試代碼。
到此你是不是被嚇到了,成為程式設計師居然還有這麼多知識要學習,安安靜靜地做一個碼農不香嗎。
我要告訴你的是,碼農很多,但是真正基礎紮實的程式設計師並不多。如果你能靜下心來修煉內功,達到這一階段,BAT 的大門將隨時為你敞開,你會收穫更多的東西。
絕大多數人一輩子都會停留在這個階段,直到退休。
第三階段:架構師
很悲催的告訴你,編程永無止境,你需要不斷的去學習去進步。
當你到達這個階段時候,你會站在一個更高的角度,對系統的全局的思考比對細節的細膩了解更多。
你對設計大型分布式系統有紮實的了解,並且知道如何構建高可用,高並發,高可伸縮的大型分布式系統。
你永遠不會停止學習,並且始終關注前沿的技術,當然你可能也會創造出一些技術。
在這個級別上,你可能會負責公司的大型項目,並且管理著一個團隊,團隊裡面有幾個骨幹程式設計師和多個碼農來完成工作。
你可能會經常和其他團隊開會討論和制定技術方案,同時你需要有出色的社交和領導才能。
如上就是我認為的程式設計師職業發展的三個重要階段,那麼接下來我們一起聊聊在這三個階段我們該如何去學習,逐步打怪升級走向程序人生的疊峰。
1 - 編程
首先考慮如何成為一個碼農,在這個階段你往往會有這樣的困惑,我到底該學哪門程式語言?
Java,Python,C#,Ruby,Go,JavaScript 。。。
其實你不應該為選擇程式語言發愁,因為這個階段,重要的不是特定的程式語言,而是一些編程的概念。這些概念在幾乎所有其他程式語言中都適用。
當你成為經驗豐富的程式設計師時,學習一種新的程式語言所需的時間不超過一個星期,所以不要浪費時間去糾結 「完美的」 程式語言,因為根本不存在,也沒有必要。
話雖如此,我還是會推薦 2 門程式語言給你,從最簡單的開始慢慢建立自信心,打怪升級從編程中獲得樂趣。
Python
我強烈建議你從 Python 開始學習。
為什麼?
因為 Python 是一門非常易於學習的語言,它真的,真的,真的很容易!
Python 是一門高級的程式語言,使用它可以非常快速的開發出一個程序,正如 Python 之父的名言:人生苦短,我用 Python。
誇張一點說,100 行 Java 代碼完成的事情,Python 只要一行就搞定了。
那麼如何學習 Python 呢?
在此推薦一下廖雪峰大神的在線圖文 Python教程,這是比較全面的一套教程。
如果要繼續簡單點,你還可以在這個在線學習網站開始學習:Python 基礎教程。
當然最好還是要搭配一本書一起學習,我推薦一下《Python 編程從入門到實戰》,喜歡讀紙質書的同學,它可以是你的一個選擇。
Java
學完 Python 之後,我強烈建議你學習另外一門語言 Java。學習 Java 將會把你帶入面向對象的世界,這是和面向過程完全不同的編程思想。
Python是一種動態類型的語言,而 Java 是一種靜態類型的語言,此時你可能一臉懵逼,當你學完這兩種語言之後你會茅塞頓開。
Python 和 Java的組合是很好的入門方法,學習他倆你會掌握到幾乎所有的編程概念,為以後學習其他程式語言打下紮實的基礎。
我要告訴你的是,Python 和 Java 目前在企業裡被大量使用,同時 Python 是機器學習首選語言,Java 是大數據生態的核心語言,學習他們也會更利於你找到一份好的工作。
對於 Java 的學習,初期我建議你主要學習 Java Core 知識,等到熟悉以後再去學習高階知識。此時,我不再會推薦你去在線網站學習,因為你已經擁有了編程基礎,同時有了很強的動手能力,我會推薦你從書籍入手。
學習 Java 當然少不了經典的 Java 編程思想,我推薦 Bruce Eckel 大師的最新 Java 巨作《 On Java 8 》,這是內容相當充實的一本書,學完它你將掌握 Java 編程的核心技能,同時關於 Java 語言的面試題對你來說將會是小菜一碟,不信你讀讀看?
如果此時你仍然不滿足,我會推薦你去學習一下 Java 之父 James Gosling 鼎力推薦的 《 Effective Java 》,它將教會你如何寫出高效的 Java 代碼,學完此書你的 Java 技能將會更上一層樓,此時你已經甩掉一大部分 Java 碼農。
此處我要恭喜你!你已經獲得碼農資格證!
此時你已經成為了一個碼農,你入門編程了,但是你還不是一名真正的程式設計師,那究竟如何達到第二階段成為一名程式設計師呢?下一篇文章我們就來聊聊怎樣成為一名合格的程式設計師!
碼字不易,喜歡就點個讚