1. 程式人生 > >我是如何提高自己的「程式設計能力」的?

我是如何提高自己的「程式設計能力」的?

上週的投票,大家最關心的還是提高技術,那我們今天就來聊聊這個話題。

之前主要分享的多是演算法和資料結構方面(年後繼續),因為我認為演算法和資料結構是程式設計師最最最重要的內功,但是並不是唯一。

我自己作為一個非科班的程式設計師,並且在工作中觀察了“這兩類”工程師的表現,我認為科班和非科班最大的區別在於:科班的同學知道去學什麼,問題出現了他知道自己是哪裡有知識漏洞;而非科班的,可能壓根不知道自己不知道什麼。

(解決方式:建立系統的知識體系、尋求老闆、tech lead 的指點,快速補充基礎並反覆學習。)

因此這篇文章我想粗淺的聊聊成為一個工程師需要掌握的大致學習路線,更多的偏入門一些,不涉及具體的工作方向。歡迎大家在文末分享你的學習心得,正如柏拉圖所說:

人只有通過和別人討論,才能知道我們的經驗是不是真實的。

文章略長,如果一次沒時間看完,建議先拉到文末參與抽獎送書活動~

如果把學習比作練功的話,我把我的學習內容分為:

  • 修煉“外功”:偏應用
  • 修煉“內功”:偏基礎

兩者配合,才能仗劍走天涯!

一、外功

1. Linux 作業系統

對於想做開發的同學,如果還是個小白,問我第一件事情該做什麼,我會強烈推薦先學習 Linux 作業系統,因為網際網路公司基本上大部分業務框架部署都是在 Linux 作業系統上進行的。

我認為學習 Linux 作業系統的重點就在於學習各種強大命令如何組合運用。

一是因為工作中我們經常需要用到,比如對各種日誌檔案進行分析,寫指令碼驅動機器幫助我們工作。

二是面試時經常會給出一個需求場景讓你編寫相關的組合命令,比如統計一段日誌中各種 IP 地址出現的次數。

給大家推薦一本 Linux 界的“聖經”。

《鳥哥的 Linux 私房菜》蟬聯最受歡迎華語 Linux 書籍第一的位置,無人能撼動。

對於想走開發路線,或者網際網路技術路線的同學,學習 Linux 絕對是必須的。

這是一本既能幫助你入門,又能隨時備查的工具書。更特別的是鳥哥的寫作風格,非常口語化,讀起來感覺像是有人在跟你實時互動聊天。

建議想要學習的同學可以收藏一本電子版隨時備查。第一次閱讀的同學估計會被它的厚度嚇到,但其實沒有必要去一字一字的全部讀完,快速的看完前面十章,你就會對 Linux 有一個初步的認識。以後需要用到哪些命令和知識隨時再查就可以了。

2. 學習一門語言和框架

對 Linux 作業系統有了一定的瞭解之後,大家就可選擇一門程式語言及其通用框架進行學習開發。

語言的學習和框架可以藉助的資料就很多了,每個人的習慣都不一樣。喜歡跟著視訊學習的可以去慕課網、極客時間,上面有很多價效比很高的課程。另外推薦大家可以加入一些交流群,嗯,比如我的讀者交流群,另外一些框架或者語言的官網裡面都會有自己社群和交流群的聯絡方式,裡面會有很多精華帖子和大牛進行分享。


說回我自己,當時入門語言是 C++,研究生課程要用,沒基礎也只能硬著頭皮上了。

但其實很多 C++ 的課程或者書籍都是先講 C 語言,比如《C++ Primer》前面幾章都是講的 C 語言,所以也還好。

後來刷題的時候覺得 C++ 刷題有些麻煩,聽了朋友建議選擇了 Java,真心感謝他的建議,在這裡我也建議如果你不知道應該選什麼語言,自己也沒有特殊偏愛的話,那就無腦選 Java 吧。

因為 Java 市面上學習資料非常的多,無論是國內還是國外大廠 Java 的就業面都非常廣,對於新人來說目前是個很穩妥的選擇。

當然,如果你不放心,可以在任何一個招聘網站上面查一查各種語言給崗位需求,只要不是那種很窄門的語言,我覺得學習都是沒有問題的。像 Go、Python、C++ 等等就業面還是廣泛的。

現在看來,我認為這三門語言都是需要學習的:

  • Java 是綜合能力很強的語言,很多網際網路公司大型的框架或者開源專案都是基於 Java 的,因為它有非常完成的一套輪子,能夠快速幫助企業解決業務問題;
  • C 語言偏底層,很多軟體都是用 C 來寫的或者和它有間接的關係,學習 C 能夠幫你更好的理解計算機;
  • C++ 雖然有些複雜,但它在某些應用場景中有很強的不可替代性,很多公司還在用 C++ 開發核心架構,比如騰訊、百度、谷歌等。

如何學習呢?這裡拿 Java 舉例來說。

A. 基礎部分

推薦書籍:

同時推薦 B 站尚學堂的這套免費課程,可以說包含了 Java 的全部內容了。

https://space.bilibili.com/392179313

我自己總結的關於 Java 集合的文章: