'程序員基本功,做到這幾點,你就能跑贏99%的人'

"

前言

2019年春節,美團點評CEO王興在其發出的一封內部信提到一個關鍵字--“基本功”,他表示在互聯網下半場,練好基本功是最正確的事。

在互聯網上半場,基本功不太好,還可以靠紅利、靠戰略、靠資源帶動快速發展,但到了下半場,基本功不過關,活下去都很難。要通過苦練基本功,把它內化成為我們組織的能力。把基本功練紮實,我們就能贏99%的事情。

"

前言

2019年春節,美團點評CEO王興在其發出的一封內部信提到一個關鍵字--“基本功”,他表示在互聯網下半場,練好基本功是最正確的事。

在互聯網上半場,基本功不太好,還可以靠紅利、靠戰略、靠資源帶動快速發展,但到了下半場,基本功不過關,活下去都很難。要通過苦練基本功,把它內化成為我們組織的能力。把基本功練紮實,我們就能贏99%的事情。

程序員基本功,做到這幾點,你就能跑贏99%的人

基本功,這個詞是比較虛的,經歷了大半年對基本功的思考,也有了些感悟,故想聊聊就我身為一個程序員來說,基本功到底是什麼?

基本功是什麼?

不同的行業、不同的領域、不同的學科都會有不同的基本功,例如醫生,需要知道人體各個器官、各個系統的作用,知道細胞的作用、細菌和真菌的區別、病毒是怎麼形成的,還得知道各種藥的作用,如何對症下藥等;再比如練武之人,其需要從小就開始扎馬步,凝神,瞭解人體的穴位;要想成為高手,其基本功都是很紮實的。

"

前言

2019年春節,美團點評CEO王興在其發出的一封內部信提到一個關鍵字--“基本功”,他表示在互聯網下半場,練好基本功是最正確的事。

在互聯網上半場,基本功不太好,還可以靠紅利、靠戰略、靠資源帶動快速發展,但到了下半場,基本功不過關,活下去都很難。要通過苦練基本功,把它內化成為我們組織的能力。把基本功練紮實,我們就能贏99%的事情。

程序員基本功,做到這幾點,你就能跑贏99%的人

基本功,這個詞是比較虛的,經歷了大半年對基本功的思考,也有了些感悟,故想聊聊就我身為一個程序員來說,基本功到底是什麼?

基本功是什麼?

不同的行業、不同的領域、不同的學科都會有不同的基本功,例如醫生,需要知道人體各個器官、各個系統的作用,知道細胞的作用、細菌和真菌的區別、病毒是怎麼形成的,還得知道各種藥的作用,如何對症下藥等;再比如練武之人,其需要從小就開始扎馬步,凝神,瞭解人體的穴位;要想成為高手,其基本功都是很紮實的。

程序員基本功,做到這幾點,你就能跑贏99%的人

而對於程序員來說,其基本功的重要性也相當重要,我曾經問過一些同事和朋友他們對基本功的理解,頻率最高的幾個回答項是:

  • 溝通表達能力
  • 學習能力,好奇心
  • 領域基礎知識,高效編碼
  • 工程素質:質量意識、規範化

上述總結起來我把基本功定義為以下兩個部分:

  1. 專業能力及素質
  2. 溝通表達能力

專業能力及素質

專業能力

任何一個程序員,其開發過程中都離不開對專業知識的運用,我們先以科班程序員的幾個必讀課程為主線,來探索程序員專業能力基本功的建立。

"

前言

2019年春節,美團點評CEO王興在其發出的一封內部信提到一個關鍵字--“基本功”,他表示在互聯網下半場,練好基本功是最正確的事。

在互聯網上半場,基本功不太好,還可以靠紅利、靠戰略、靠資源帶動快速發展,但到了下半場,基本功不過關,活下去都很難。要通過苦練基本功,把它內化成為我們組織的能力。把基本功練紮實,我們就能贏99%的事情。

程序員基本功,做到這幾點,你就能跑贏99%的人

基本功,這個詞是比較虛的,經歷了大半年對基本功的思考,也有了些感悟,故想聊聊就我身為一個程序員來說,基本功到底是什麼?

基本功是什麼?

不同的行業、不同的領域、不同的學科都會有不同的基本功,例如醫生,需要知道人體各個器官、各個系統的作用,知道細胞的作用、細菌和真菌的區別、病毒是怎麼形成的,還得知道各種藥的作用,如何對症下藥等;再比如練武之人,其需要從小就開始扎馬步,凝神,瞭解人體的穴位;要想成為高手,其基本功都是很紮實的。

程序員基本功,做到這幾點,你就能跑贏99%的人

而對於程序員來說,其基本功的重要性也相當重要,我曾經問過一些同事和朋友他們對基本功的理解,頻率最高的幾個回答項是:

  • 溝通表達能力
  • 學習能力,好奇心
  • 領域基礎知識,高效編碼
  • 工程素質:質量意識、規範化

上述總結起來我把基本功定義為以下兩個部分:

  1. 專業能力及素質
  2. 溝通表達能力

專業能力及素質

專業能力

任何一個程序員,其開發過程中都離不開對專業知識的運用,我們先以科班程序員的幾個必讀課程為主線,來探索程序員專業能力基本功的建立。

程序員基本功,做到這幾點,你就能跑贏99%的人

  • 數據結構:數據結構是計算機存儲、組織數據的方式,是指相互之間存在一種或多種特定關係的數據元素的集合。
  • 算法:算法是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。
  • 操作系統:操作系統是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。
  • 計算機網絡:計算機網絡是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。
  • 編程語言:編程語言是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。

以上數據結構、算法、操作系統、計算機網絡、編程語言可以說是我們程序員專業能力的基本功,但是我們似乎沒有認真的去體會這些給我們帶來的幫助,更沒有去認真挖掘這些知識能給我們的編程帶來的好處。

以一個推送系統為例,

  • 通過編程語言我們能開發出這樣一個系統
  • 選擇什麼樣的數據結構來存在億級用戶和設備信息的關係
  • 計算機網絡能讓我們瞭解到底層TCP是如何通信的,用戶在不同網絡環境下的區別等
  • 算法能讓我們選擇更好的、更高效的推送策略
  • 操作系統能讓我們瞭解到計算機內部是如何工作的,從而選擇更優的連接策略,是select還是poll還是epoll

專業素質

軟件開發這件事,不是隻要能把功能寫出來就行的。我每天的代碼應該如何提交?我提交的代碼怎樣才能不破壞昨天提交的功能?如何確保交付的軟件質量過關?我覺得程序員最重要的專業素質就是會編程,如何編寫更高效更優雅的程序。

編程的基本功應該遵循以下流程:

  1. 問題定義:清晰明確的問題描述和定義
  2. 應用框架和界面設計:思考如何求解問題
  3. 選擇合適的數據結構和高效的算法:選型
  4. 性能估計:預估可達性能是否滿足
  5. 接口聲明:系統設計
  6. 偽代碼:表達思路
  7. 程序驗證:循環不變式和斷言
  8. 編碼:良好的代碼規範
  9. 測試與調試:單元測試、自動化測試
  10. 代碼優化:性能優化
  11. 代碼重審和回顧:代碼重構,質量追求

溝通表達能力

言語與魔法起初是同一件事兒,直到今天,言語仍保持著它絕大部分古老的魔力。通過言語,我們可以給別人帶來極度的喜悅或最深的絕望;通過言語,老師將知識傳授給學生;通過言語,演說家影響著聽眾,甚至主宰聽眾的判斷和決定。言語喚起情緒,是人類相互影響的方式。——西格蒙·弗洛伊德

溝通(communication)是人們分享信息、思想和情感的任何過程。這種過程不僅包含口頭語言和書面語言,也包含形體語言、個人的習氣和方式、物質環境——賦予信息含義的任何東西。

"

前言

2019年春節,美團點評CEO王興在其發出的一封內部信提到一個關鍵字--“基本功”,他表示在互聯網下半場,練好基本功是最正確的事。

在互聯網上半場,基本功不太好,還可以靠紅利、靠戰略、靠資源帶動快速發展,但到了下半場,基本功不過關,活下去都很難。要通過苦練基本功,把它內化成為我們組織的能力。把基本功練紮實,我們就能贏99%的事情。

程序員基本功,做到這幾點,你就能跑贏99%的人

基本功,這個詞是比較虛的,經歷了大半年對基本功的思考,也有了些感悟,故想聊聊就我身為一個程序員來說,基本功到底是什麼?

基本功是什麼?

不同的行業、不同的領域、不同的學科都會有不同的基本功,例如醫生,需要知道人體各個器官、各個系統的作用,知道細胞的作用、細菌和真菌的區別、病毒是怎麼形成的,還得知道各種藥的作用,如何對症下藥等;再比如練武之人,其需要從小就開始扎馬步,凝神,瞭解人體的穴位;要想成為高手,其基本功都是很紮實的。

程序員基本功,做到這幾點,你就能跑贏99%的人

而對於程序員來說,其基本功的重要性也相當重要,我曾經問過一些同事和朋友他們對基本功的理解,頻率最高的幾個回答項是:

  • 溝通表達能力
  • 學習能力,好奇心
  • 領域基礎知識,高效編碼
  • 工程素質:質量意識、規範化

上述總結起來我把基本功定義為以下兩個部分:

  1. 專業能力及素質
  2. 溝通表達能力

專業能力及素質

專業能力

任何一個程序員,其開發過程中都離不開對專業知識的運用,我們先以科班程序員的幾個必讀課程為主線,來探索程序員專業能力基本功的建立。

程序員基本功,做到這幾點,你就能跑贏99%的人

  • 數據結構:數據結構是計算機存儲、組織數據的方式,是指相互之間存在一種或多種特定關係的數據元素的集合。
  • 算法:算法是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。
  • 操作系統:操作系統是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。
  • 計算機網絡:計算機網絡是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。
  • 編程語言:編程語言是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。

以上數據結構、算法、操作系統、計算機網絡、編程語言可以說是我們程序員專業能力的基本功,但是我們似乎沒有認真的去體會這些給我們帶來的幫助,更沒有去認真挖掘這些知識能給我們的編程帶來的好處。

以一個推送系統為例,

  • 通過編程語言我們能開發出這樣一個系統
  • 選擇什麼樣的數據結構來存在億級用戶和設備信息的關係
  • 計算機網絡能讓我們瞭解到底層TCP是如何通信的,用戶在不同網絡環境下的區別等
  • 算法能讓我們選擇更好的、更高效的推送策略
  • 操作系統能讓我們瞭解到計算機內部是如何工作的,從而選擇更優的連接策略,是select還是poll還是epoll

專業素質

軟件開發這件事,不是隻要能把功能寫出來就行的。我每天的代碼應該如何提交?我提交的代碼怎樣才能不破壞昨天提交的功能?如何確保交付的軟件質量過關?我覺得程序員最重要的專業素質就是會編程,如何編寫更高效更優雅的程序。

編程的基本功應該遵循以下流程:

  1. 問題定義:清晰明確的問題描述和定義
  2. 應用框架和界面設計:思考如何求解問題
  3. 選擇合適的數據結構和高效的算法:選型
  4. 性能估計:預估可達性能是否滿足
  5. 接口聲明:系統設計
  6. 偽代碼:表達思路
  7. 程序驗證:循環不變式和斷言
  8. 編碼:良好的代碼規範
  9. 測試與調試:單元測試、自動化測試
  10. 代碼優化:性能優化
  11. 代碼重審和回顧:代碼重構,質量追求

溝通表達能力

言語與魔法起初是同一件事兒,直到今天,言語仍保持著它絕大部分古老的魔力。通過言語,我們可以給別人帶來極度的喜悅或最深的絕望;通過言語,老師將知識傳授給學生;通過言語,演說家影響著聽眾,甚至主宰聽眾的判斷和決定。言語喚起情緒,是人類相互影響的方式。——西格蒙·弗洛伊德

溝通(communication)是人們分享信息、思想和情感的任何過程。這種過程不僅包含口頭語言和書面語言,也包含形體語言、個人的習氣和方式、物質環境——賦予信息含義的任何東西。

程序員基本功,做到這幾點,你就能跑贏99%的人

俗話說“美言一句三冬暖,惡語傷人六月寒”。溝通是一項藝術,在心理學中也是一門很重要的課程。

日常工作中,我們除了編程做的最多的事情就是溝通,聊需求、討論技術方案、彙報工作等,而溝通的好壞也直接決定了我們做事情的結果、效率等;

溝通中,要做到的幾個關鍵點:

  • 學會傾聽
  • 有同理心
  • 主動溝通&及時反饋
  • 客觀理性&提問
  • 情緒控制

ps:我前面有篇文章專門談了溝通應該注意什麼,附上鍊接:晉升時,你和優秀的人最大的區別是...

結語

當今互聯網飛速發展,迅速搞產品快速上線的時代已經不是主流,而且當下行業不景氣;大廠們招聘標準上對基本功也是越來越看重,基本功的修煉已經刻不容緩


如果你也想要保持”Stay Hungry Stay Foolish “和”每天進步一點點 “的精神,歡迎大家和我一起學習,每天都感受自己的成長。一起加油一起努力!!

如果覺得本文有幫助,請動動小手分享給更多人,一起學習!!

"

相關推薦

推薦中...