我是如何學習寫代碼的?

代碼 」對於我來說,如同「 設計 」一樣,都是為了「 創造 」 出某種產品的一種手段。

作為設計師,與開發打交道,難免會有種 ” 巧婦難為無米之炊 “ 的感覺;

而程序員,當自己開發了某個工具之後,為了追求更好的體驗,苦於不懂「 設計 」,也很難更上一層樓。

我是如何學習寫代碼的?


寫代碼重要嗎?

“代碼只服雷軍”,雷軍在小米之前,做了10年程序員。

據網友爆料,京東劉強東在一次講座上,稱自己大三(1995年)的時候,他給別人寫代碼,一個晚上就能賺5萬。

設計師應該會寫代碼嗎?

設計工具的演進,從Sketch 、 Pixate, 再到 Framer,設計師的工具,越來越簡單有效地通過原型表現創意。

設計工具引入代碼

Framer是一款結合代碼與可視化實現的交互設計工具,因為通過代碼,可以完全控制交互效果,設計師不僅停留在畫圖的層面,更多的可以關注到實現的真實效果。

寫代碼難嗎?

一位朋友,在諮詢了我一陣子後,開始學習 Python ,但是在堅持了2個月的時候,他逐漸減少學習時間,並最終放棄了。因為,他覺得代碼要學習的知識太龐大了,不知如何入手,一旦有新問題解決不了學習進度就卡在那裡,從而越學越覺得難。

知識量龐大,問題不斷

其實寫代碼,入門並不難

因為還有積木式編程語言:Scratch

不管是成年人,還是青少年,通過Scratch可以快速得掌握編程的核心思想。但核心思想是什麼?往往被許多人所忽略。

學習編程,應該掌握其運行的邏輯,試試回答以下幾個問題:

1 我們是如何通過一個個的指令給計算機安排任務的?

2 計算機如何按照我們設定的條件,執行任務?

3 計算機是如何執行重複執行任務的?

4 計算機完成任務的時候,是如何反饋給我們的?

代碼最難的是邏輯

引一位Oracle程序員在Hacker News上吐槽自己的工作的討論。這個工程師的核心痛點是,Oracle經歷長期的產品線迭代,代碼異常龐大、邏輯複雜。每新增一個特性或者修復BUG,該工程師都需要大量的調試,小心謹慎的進行著日常的工作。而Oracle每次的版本發佈都經歷數百萬次的測試,工作量可想而知。

學習代碼也是有方法

一般的初學者是這2類:

零基礎,指的是對代碼一點了解,或者曾經看過一點點,沒有系統瞭解過編程語言的。

入門級,會一門編程語言,會寫一點點代碼,但是無法自己完成一個項目從0到1構建的。

以下是給初學者如何學習代碼的指南。

我是如何學習寫代碼的?


01

最小項目實踐+系統地刻意練習

如果是零基礎,建議先學一門語言,一步步來,按章節進行,同時,適當增加實踐項目的練習,比如DIY一個以圖搜圖引擎等類似的項目。

當你學完這一階段的入門,不再是0基礎之後,就可以嘗試瞭解各種語言的環境安裝、最小可運行代碼集,以及各種開發工具,嘗試各種好玩、複雜的項目了~

我是如何學習寫代碼的?


02

最小可運行的代碼集

主要通過看示例,包括作者提供的示例代碼,網上文章提供的示例代碼等;舉一個turicreate的以圖搜圖代碼示例:


我是如何學習寫代碼的?




03

理解功能

get到思想就好,理解代碼裡的每一句的含義,真實的行為,就跟讀書一樣,知道作者的核心思想是什麼;

比如下面這3句,第1句是初始化一個類,該類可以提取圖片的特徵向量,第2句是通過文件路徑打開圖片,第3句是從圖片提取特徵向量。


我是如何學習寫代碼的?



04

關注輸入、輸出的數據結構

輸入的是字符串,還是一個列表,還是一個字典?輸出的是什麼也非常重要,比如輸出的時候,有None的可能,那下一段代碼對此輸出結果引用的時候,就要注意啦。


我是如何學習寫代碼的?



如果輸入_idea為"",輸出為None,這個時候寫代碼的時候就要留意輸入跟輸出的各種可能。

05

即搜即用

當你掌握以上技巧的時候,就會發現沒必要從頭到尾全部一口氣把代碼全部學完,需要的時候再快速翻閱文檔,通過示例、輸入輸出、理解功能這三個點,就可以現學現用啦。

06

優雅的代碼

對於初學者來說,需要關注如何書寫優雅的代碼,主要表現在:

代碼所在位置恰當;

有適當的註釋;

適當的縮進和空行;

以及沒有重複代碼……

這裡面的內功修養,離不開設計模式和代碼重構,還要有非常多的實踐與刻意練習。這幾本書都可以抽空讀一讀:

《Head First設計模式》

《重構》

《Clean Code》

寫代碼是基本功,鍛鍊的是邏輯思維能力,跟解決問題的能力。

在不久的未來,寫代碼也是可以機器完成的,不知大家關注過這項研究嗎?

pix2code 等論文提出了一個強大的前端代碼生成模型,解釋瞭如何利用 LSTM 與 CNN 將設計原型轉化為 HTML 和 CSS 網站。

人工智能寫代碼,未來可期;

學習代碼,我們應該更多地關注背後的邏輯思維能力。

你想要學代碼麼?私信二柱子“資料”獲取更多學習資料

我是如何學習寫代碼的?



相關推薦

推薦中...