工程師幹過最缺德的事:叫初學程式的朋友去學 C++!

【我們為什麼挑選這篇文章】工程師當道,現在世界上各大企業領袖都說「學程式很重要,是基本技能」,也有許多人很躍躍欲試,想開始自己寫個小程式玩玩。

但是,到底我該從哪開始學程式?

本文針對目前常見的各種「初學者指南亂象」提出分析,包含「為何你不該一開始就叫人去學 C++」,以及「你真正想學程式,該如何開始?」,相信這些教學對想初學程式的人會很有幫助。(責任編輯:林厚勳)

常常看到非資訊背景的朋友問工程師:我最近想學寫程式!該怎麼入門?通常他們會得到很多糟糕的答案:「先了解演算法」、「先弄懂資料結構」、「先認識物件導向」。

這些答案都夠糟糕了,但最糟糕的答案莫過於 「從 C/C++開始入門」

(我看過最扯的建議是「去找 C++ Primer Plus 來看」。這本磚頭書絕對不適合一般人自學)

不是資訊相關科系,沒必要一開始就 C++

照著以上建議去做的朋友,大概會在兩週之內就得到滿滿的挫折感,然後認為自己「果然不適合寫程式」,也不好意思再去跟工程師講自己的狀況,最終再也不想踏入 programming 領域。

這些建議真是害人不淺。

資訊相關科系,是因為要接續到之後的資料結構、作業系統,所以大一從 C/C++開始入門會比較連貫、才能完整學一次電腦的基本知識。

而這些想學 coding 的朋友,大部分只是這兩種情況:

  1. 最近覺得寫網站好酷,想試試看自己能否寫個 blog、或是個人網頁。
  2. 對工作上某些人工流程不滿意,想試試看自己能否學寫程式、用電腦解決問題。

他們的願望僅此而已,並沒有打算成為電腦專家、駭客,實在沒有必要從 C/C++ 入門。

就像點火一樣,先從零星的火苗開始、小心保護不要讓它熄滅,接著慢慢加東西進去、讓火焰慢慢成為大火。學習,除了知識 / 技能之外,培養成就感與熱情也是很重要的。

而從 C/C++ 入門,會讓正要萌芽的小火苗直接消滅殆盡。

程式設計入門,其實很簡單

我對程式設計入門的建議很簡單:

如果你是狀況 A,去學 PHP & MySQL,先弄一個醜醜網頁出來就可以了;

如果你是狀況 B,去學 Python,先弄一個能執行、能顯示幾個文字的程式就可以了。

一般人想到程式通常只想到「圖形化介面」,如果能寫出一個有介面的小玩意會非常有成就感。

那樣的話,學 PHP 來寫個網站、直接就是介面,絕對有趣;學 Python 很快就能把玩內建的 tkinter 函式庫、做出按鈕做出選單,樂趣無窮。

教材該怎麼選?

話雖如此,你到市面上找 PHP 或是 Python 的書,大概還是會落得「滿滿的挫折感然後正式放棄」的下場。

別擔心,這不是你的錯,是那些書寫得不夠好。 沒有一本是真正的程式設計入門書, 那些書只想著給你知識/技能,沒有想到要培養你的成就感、保護你的熱情。

要找書的話,我只建議兩本:

狀況 A,去找歐萊禮的「深入淺出 PHP 與 MySQL」(Head First PHP & MySQL)。

狀況 B,去找歐萊禮的「深入淺出程式設計」(Head First Programming)。

不只教材,還可以試試這些課程

已經出社會了嗎?去 台灣大學資訊系統訓練班 逛逛吧,看看時間跟課程費用能否負擔(我有經濟系背景的朋友去上過幾堂課程,學得滿開心)。

政府也有推動 青年就業讚 的課程,滿足某些條件還能申請補助(不過,我有朋友上過其中一堂 PHP 課程,印象很糟糕、覺得是業者要賺政府補助款隨便開設的課程。但畢竟是單一經驗,我還是列出來給各位參考。)

國外的線上開放課程也可以考慮,像是

Coursera 的:

人人都懂的編程課(Python)

學習編程:基礎

還有麻省理工的:

Introduction to Computer Science and Programming

A Gentle Introduction to Programming Using Python

全部都是用 Python 入門。

什麼都別管,先寫出會動的程式就對了

我對程式設計入門的建議就只有這樣。你不需要知道什麼演算法、資料結構、物件導向,什麼狗屁名詞都不需要知道。那大多只是工程師下意識地想讓你覺得他們很厲害而已。

你只要想辦法寫出一個會動的程式就可以了,所有偉大的東西都是這樣開始的。

Q1: 但是狀況 A 還要面對 HTML/CSS 耶.. 好像很難?
每個技能深入下去沒有不難的。但是 HTML/CSS 要入門實在不怎麼難。
就從隨便寫幾個表單或按鈕、弄個醜醜的靜態網頁出來開始吧。

Q2: 我是工程師,我能怎麼幫助朋友?
幫他們搞定環境設定吧!幫他們把最基礎卻又最給新手挫折感的環境給設定好!讓他們能用記事本跟幾個小工具就開始寫 code!給他們成就感!

Q3: 那寫手機 app 呢?你怎麼沒提到?
我覺得手機 app 還滿難入門的,實在給不出有建設性的建議。不知道。不過,上面的連結也許有一些手機相關課程,不妨試試?

─ ─

(本文經 阿川先生 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 工程師的缺德行為:叫朋友去學 C/C++ 〉,首圖來源: Sano Rin,CC Licensed。)

幫助你的工程師之路更加順遂

【附 Github 代碼】工程師必備的「裝忙」祕技,讓電腦自己動起來的神奇小程式
App 工程師注意:直接讓蘋果、Google 開發大神給你建議,就要這樣做!
學霸型工程師進步指南:寫「工作日記」,有效提升 coding 水準
五個月成為 JavaScript 工程師的完整攻略,每個月要幹嘛都寫出來讓你照著做!


《TechOrange》正在尋找社群編輯

我們正在尋找擁有以下特質的人,加入我們的團隊:

喜歡編輯 / 策展工作,認同編輯不只是寫字,而是包括採集素材、消化提出觀點,並策展的工作歷程。
對經營「內容」與「社群」有莫大興趣,希望參與線上 / 線下活動企劃與執行工作。
其他必備特質:

  1. 細心、主動、獨立思考、追求事半功倍、有問題不怕舉手。
  2. 不害怕總是在變動的工作環境與工作方式,樂於學習新工具與新鮮事。
  3. 喜歡挑戰、討厭一成不變。

月薪 3 萬起,畢業生可,具有 1~2 年網路社群相關工作經驗亦佳。

來信應徵, 請註明職缺 + 您的名字,並寄信到 [email protected]

點關鍵字看更多相關文章: