Devs.tw 是讓工程師寫筆記、網誌的平台。歡迎您隨手紀錄、寫作,方便日後搜尋!
常常看到非資訊背景的朋友問工程師:我最近想學寫程式!該怎麼入門?
通常他們會得到很多糟糕的答案:「先了解演算法」、「先弄懂資料結構」、「先認識物件導向」。
這些答案都夠糟糕了,但最糟糕的答案莫過於「從C/C++開始入門」。
(我看過最扯的建議是「去找C++ Primer Plus來看」。這本磚頭書絕對不適合一般人自學)
照著以上建議去做的朋友,大概會在兩週之內就得到滿滿的挫折感,然後認為自己「果然不適合寫程式」,也不好意思再去跟工程師講自己的狀況,最終再也不想踏入programming領域。
這些建議真是害人不淺。
資訊相關科系,是因為要接續到之後的資料結構、作業系統,所以大一從C/C++開始入門會比較連貫、才能完整學一次電腦的基本知識。
而這些想學coding的朋友,大部分只是這兩種情況:
他們的願望僅此而已,並沒有打算成為電腦專家、駭客,實在沒有必要從C/C++入門。
就像點火一樣,先從零星的火苗開始、小心保護不要讓它熄滅,接著慢慢加東西進去、讓火焰慢慢成為大火。學習,除了知識/技能之外,培養成就感與熱情也是很重要的。而從C/C++入門,會讓正要萌芽的小火苗直接消滅殆盡。
我對程式設計入門的建議很簡單。
一般人想到程式通常只想到「圖形化介面」,如果能寫出一個有介面的小玩意會非常有成就感。 那樣的話,學PHP來寫個網站、直接就是介面,絕對有趣;學Python很快就能把玩內建的tkinter函式庫、做出按鈕做出選單,樂趣無窮。
話雖如此,你到市面上找PHP或是Python的書,大概還是會落得「滿滿的挫折感然後正式放棄」的下場。
別擔心,這不是你的錯,是那些書寫得不夠好。沒有一本是真正的程式設計入門書。 那些書只想著給你知識/技能,沒有想到要培養你的成就感、保護你的熱情。
要找書的話,我只建議兩本。
已經出社會了嗎?去台灣大學資訊系統訓練班逛逛吧,看看時間跟課程費用能否負擔(我有經濟系背景的朋友去上過幾堂課程,學得滿開心)。
國外的線上開放課程也可以考慮。
Coursera的
麻省理工的
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還滿難入門的,實在給不出有建設性的建議。不知道。不過,上面的連結也許有一些手機相關課程,不妨試試?
(Photo via Sano Rin, CC licensed.)
其實現在寫網頁也好,寫app也好,八成都是package和framework,要從底層打造,基本相當少,除非項目很特別。如果不從這方面入手,即使弄出了簡易動態網頁,初學者一樣也是挫敗感滿滿,因為....成品基本不能見人。雖然是初學者,但是早已不能滿足這些"貪心"、沒有基礎又想邁大步的初學者,所以更多時候,是先看到好又漂亮的"結果",才會誘發這些初學者深究這些背後的基礎與原理。
個人也是直接從 react框架+ui框架+chart框架,配合java SSM框架開始開發網站網頁。遇到不熟的再回頭查找資料,這種方式似乎更符合快速開發與速食的台式文化,也符合在台灣一位IT工程師包上包海、被壓榨的文化。至於打基礎、穩札穩打配合公司教育訓練............這應該是少之又少的"現象級傳說"。
以上個人經驗分享
我是第一次看到人家寫的這麼好 很多網路上的建議都是狗屎 我也是狀況B 不過我沒買書,我看不太懂 我都是看youtube,覺得比較適合我 而且我英文不太行 只能看中文資料