[入門教學] 我想學程式語言,但這麼多該從什麼開始學起呢?
最適合初學者的程式語言是哪個呢,C、JavaScript、Ruby還是Swift?
拜自動化、科技化的福,這世界的工作越來越少。
如果有嘗試經營Facebook粉絲團發廣告的就會發現,這廣告生意好像滿好賺的,系統自動提醒回饋,大數據修正。讓你跟機器人溝通就可以一直賺進把把的鈔票。讓人好生羨慕,想說自己也可以做個一樣的賺錢機器就好了。
當然上面只是個例子,不過現在幾乎每個行業都跟程式脫離不少關係。
不會寫程式也要會用程式。如果自己當老闆,發包客製化程式或是買國外程式回來再請員工修改都是很常見的。但是真實情況總是霧裡看花,請工程師改個程式改老半天,總覺得不太對卻又非得接受不可。
總之各式各樣的原因,無論是為了更好的生活,或是想讓事業更加牢固地掌握在自己的手上。越來越多人開始學寫程式,或是說,想開始學寫程式。
那從哪裡開始好呢?
什麼是前端工程師(Front end Developer)?要成為前端工程師要學習什麼樣的技術呢?
後端工程師(Back end Developer)是什麼?成為後端需要學習什麼技術?很難嗎?
我已經開始寫程式了,但感覺好像一直不上手?本文作者以自身的經歷,給大家一些自我練習方向。
轉職成為程式設計工程師?文組也可以嗎?年齡有關係嗎?讓我們分享一些想法與經驗
前面鋪梗鋪太久了,這裡直接講我認為的結論與理由:
如果你是有特定的目標,就直接朝著目標前進吧 !!
以前很多人都說如果要學寫程式就從C語言開始,它可以打好你的根基。這是相當正確的。
如果你懂C語言,去看JAVA 、C#、Swift、JavaScript、PHP都會不太難理解,而這幾個程式語言各別可以讓你寫手機、網站與遊戲程式,也就幾乎是所有你想要做的事情。而且它們都是所謂C-like language 類C程式語言 (WIKI)。
但這也是大部分的人”放棄“寫程式的原因。C語言對初學者相當的不友善,一般學生學到“變數”都還不會有問題,通常都會死在”指標“。因為他跟“變數”的邏輯不同。而有趣的是,其他常被認為更容易理解的程式語言,幾乎只有“指標”,所以學不好並不完全是“指標”的問題。(專有名詞各位應該還看不懂,不用在意)。
所以在這裡提供幾個不同的方向:
1. 如果你的工作是平面藝術美工相關
那就會是照著 HTML -> CSS -> JavaScript 來開始會比較好。可以先嘗試用photoshop 或是 Sketch產出的圖檔可以直接變成HTML去修改。JavaScript在最初初階的網頁設計主要是讓網站看起來比較有互動性,不見得再最一開始要會。所以不會很難。
下一步看是要繼續往前端走(Front-end)或是要接觸一點後端(Back-end)。
如果目標是前端(Front-end)的話,恭喜你,就是Javascript用到底了。
什麼jQuery, Angular 或 React 都只是 Javascript 延伸,是用特殊的包裝讓你做複雜的架構功能可以更簡單。而Bootstrap, Foundation等則也是HTML / CSS / Javascript的再包裝。
HTML, CSS, JavaScript, jQuery 網頁從零開始 這門課開始,因為 HTML 與 CSS 是比較接近「設定檔」概念的網頁組成要素,寫設定檔基本上誰都可以完成。JavaScript 和 jQuery 才會是程式概念比較重的章節。當然最後也包含完成一個完整的網頁。
不過如果目標是轉職的話,這樣有點太淺。我們會建議加上 React 課程
ES6,ReactJS與Webpack,前端JavaScript全攻略。React 是 Facebook 的前端技術。以前端技術來說,全球市佔率目前數一數二,是很多公司前端技術的首選。但是他算是進階JavaScript 議題。
如果目標堅定,那我們會推薦你不妨參加我們的組合課程:
前端JavaScripts初中階組合 + 版本管理
Git 版本管理算是工作上必用的工具,但是可以先學會寫程式後再進修。只是組合課程當然會比較便宜,可以做為一個參考的選項喔!
後端(Back-end)的話
現在中小型系統比較多人選擇的有Ruby on Rails, PHP, Python 與 nodeJS。當然可以學最多人會的PHP,或是選擇接案神器WordPress。
一般來說全端的薪水會比較高,但近年來前端的薪水也高漲許多,常常看不出差距。這跟工程和商業的邏輯有關。
後端是一個網站的骨架,前端比較像是外觀,工程的骨架很重要,以建築來講,鋼樑結構不穩是會死人的,但室內裝潢就比較沒有這層顧慮,頂多不好看打掉重練。不過幾乎沒有大樓逢年過節在整修補強建築物的樑柱,而每季百貨公司專櫃或是馬路上開了又倒倒了又開的餐廳裝潢的需求倒是很大。有質感的設計是會直接跟生意收入有關,而不是與你的餐廳的樑柱超粗,防震係數超高有關。
不過雖然前、後端在薪水上沒有顯著的差異,但是前端的職缺通常會比較容易進去一點。但是因為門檻低,所以近年來入門前端其實也有點過剩了,公司還是比較喜歡即戰力。所以即使新入門的人很多,但是市場上的缺也很多,薪水也越開越高,因為要找到合適的即戰力並不是真的那麼容易。
但是也有公司把後端的基本功例如CRUD操作當作前端的部分,畢竟「網站」本來就是包含前後端,雖然不需要到專精全端,但是基本的概念還是要操作過與了解,畢竟你的上司很大的機會會是資訊相關科系畢業的,如果他認為你連「常識」都不了解,那面試應該是不會有太好的結果。
因此除非偏向設計的前端,不然前端工程師最好還是選一個後端網站框架來練練玩玩。(好Rails不練嗎?)
延伸閱讀:
快速開發後端程式,為何Ruby on Rails工程師可以常年佔據高收入排行榜前幾名?
2. 如果你想要寫遊戲的話
C#可能是你最好的選擇,但我完全不推薦新手做這樣的夢。因為遊戲關係著很多面向,遊戲故事、流程、美工、動畫。隨便做可能都半年跑不掉。
但你真的想寫的話,大概會用到 Unity 這套程式工具。用Swift / Objective - C是可以寫出遊戲,但完成品會比較偏向一般APP。(因為預設的可用的開發工具幾乎都是用來開發一般商業程式用的)。
要做到一般人心中所謂的遊戲還是用遊戲引擎比較快,自己開發"有用的"引擎是相當有經驗的人才辦得到。
最近比較熱門的是Unity(使用C#) 與 Unreal Engine 4(使用C++)。
C# 除了可以用來做遊戲外,還可以用來寫Windows 桌機程式與網站。但是用微軟的方式架網站而不用盜版,沒先支出個3萬、5萬是架不起來的。用C#現在也可以透過Xamarin同時寫Android 與 iOS程式,不過目前筆者測試起來的結果是找罪受。它目前的用途比較像是公司不用為了寫APP再去找Android與 iOS人才,但是時間完全沒有省到。
透過Xamarin確實可以用一套Code寫出跨平台的簡單程式,但是兩個程式沒辦法長的完全一樣,行為也無法一樣。如果要完全一樣的話必須對兩個平台做優化的動作,最後做出來還是兩套程式的量,沒有不同。
3. 如果你只是想寫個手機軟體來跟朋友炫耀。
要寫Android 還是 iOS 就很明顯了。Android沒得選,就是JAVA(2019/06補充,現在有Kotlin,但是"還"不建議新手去賭這把)。
iOS的話 Swift 會比 Objective-C 好懂一些。如果你如果沒有Mac 那就無法寫 iOS, 就算是用上面提的Xamarin,它在編譯iOS版本程式也需要一台Mac。
延伸閱讀:我想寫手機程式,但我不知道該選iOS還是Android
想成為開發者嗎?我們也有完整的線上教學課程喔!
iOS 13 - Swift手機程式開發,使用APP與網站互動
接者就是看你手上的手機是哪個作業系統。學習最重要的就是有成就感,所以儘管放上手機去炫耀吧!! iOS開發者目前雖然可以把作品直接放在手機上Demo,但是只能擺7天,如果想放久一點或是讓別人也試用的話,建議還是選擇交每年99美金的保護費開發者授權。
再來舉個反例
4. 如果你是對真實互動裝置有興趣的話
那你該學的就是C語言(我們也有提供課程喔,包含上面說的"指標"的教學試看!!)。不過不應該從第一章開始學,而是直接買一塊Arduino來玩。
他雖然是C語言,但因為提供了很多功能,所以寫起來向下指令。
因為他的初衷是讓藝術家可以很輕鬆地做出互動裝置,所以本來就是為不會程式的人製作的套件。
用這當成C語言的開始,會比在終端機畫聖誕樹來的好玩的多。
延伸閱讀:從藝術視覺音樂互動到自走車與真人密室逃脫,軟硬整合開發「Arduino」讓你創意不受拘束!
額外加碼
5. 如果你想要很快的有一個網站的話
WordPress可能是你的首選,但它之所以是「額外加碼」是因為他主流玩法有兩種方式,一種比較多人但90%以上的人不懂程式,另外一種人較少但是可以做的事情很多。如果你不想懂程式也要有個網站的話,其實WordPress不太能放在這篇裡面,因為這篇畢竟是在探討學寫程式。
但是WordPress是使用PHP為開發語言,加上網站一定會有的元素HTML / CSS / JavaScript 以及WordPress使用的jQuery套件。並且架站會碰到的很多議題,比方說資料庫與Web Server等,幾乎全包了。
但為什麼議題這麼多WordPress卻還是初學者導向的呢?原因是因為他設計的原意是任何人都可以「使用」的部落格系統。所以目標在於使用,而非開發。但又因為他是開放原始碼的,而且類似App Store,任何人只要符合開發最低的規範,就可以幫WordPress開發外掛增加新功能(外掛需要用PHP寫)。所以你可以下載別人的外掛(不需要程式概念),或是用你自己開發的外掛增加功能。詳細介紹可參考:
任何人都可以辦得到的網路架站,你知道什麼是WordPress嗎?
那如果你是想藉此順便學一下程式語言,那也可以看看我們的WordPress課程
WordPress - 從頭教起的網站架設
另外常見問題,「我朋友說WordPress做得效能很爛,自己寫好很多。」
這只能說,效能不好是事實,但是可以調得超好。自己寫是可以寫出符合專案需要的功能,但「不可能」短時間複製出所有WordPress所有功能。WordPress是「通用型」的程式,當然在設計上比起你自己寫的「專用型」程式會有效能上的差異。但是「可擴充性」上WordPress當然完勝,除非你也耗個數年數月在自己的程式上面。
最後做個列表來做結論
對"初學者"來說
1. 如果完全沒有想法就先學HTML,然後一直推到JavaScript。
(很多人覺得HTML不算程式語言,可以參考我們的課程)
2. 如果想寫App, Android 就寫Java, iOS就寫Swift。
3. 如果想寫遊戲,請打消這個念頭,或是享受苦難。
4. 如果要做互動裝置,請玩Arduino寫C語言
5. 先有一個網站再說,那就用WordPress
6. 無論是用C語言, Python, JavaScript, 叫人畫聖誕樹其實滿無聊的。
7. 選可以做出有圖形化介面的程式或網站開始會比較好。
8. Windows桌面程式還算好寫,當入門沒問題。 Mac 桌面程式資料很少,最好不要以這為目標。
最後,新手沒有必要以全語言制霸為目標,也沒必要跟風當紅的名詞(雖然很難),先培養興趣比較重要,而興趣來自於成就感。
如果一開始就把短期目標設為獲得高薪,那應該隔一個星期就放棄了...要會的東西太多了。建議先完成一個好玩的、別人看起來沒用但是自己覺得很開心的小程式,再來開始強化知識與內容,如果有轉職需求,這時可以開始看比較一般的語言入門書籍去背名詞。然後先想辦法獲得一份工作,因為業界比較需要"即戰力",尤其是高薪的工作。沒有經驗會很吃虧,請大家多多充實作品集。
另外作品集要的不是多、是精。
你把一個網站的各個元素拆成50個作品也不比一個包含50個功能元素的網站要來的令人驚艷。不過也不要把不相關的東西全部塞在一起,公司非常怕弄不懂需求整天空轉的員工喔!
最後提醒一下,時間不等人,一般公司開放比較多名額的時間點是跟季節節日有關。
比方說6月畢業季,公司也知道要搶新鮮人,所以預期7、8月補完人以後,9月、10月的缺可能就比較少。
2月過年,預計領完年終後離職的人有一定的人數,主管上司其實也都有預期。高階工作可能12月、1月就開始面試,錄取年後上工。常態性職務可能2月底3月初才會有人走才補人。
當然你也可以在這些時間點賭一發,不過更實際的方式是平時就準備好,畢竟學習一個新技術如果沒有2 ~ 3 個月,通常就代表這個技術其實含金量很低,或是實際上根本沒學好。所以日常還擠得出時間與生活還不算太拮据的話,最好可以先安排自己的進修進度喔!畢竟工作待遇除了個人的能力外,進有賺錢能力的好公司也是相當重要的(公司沒賺錢還給員工高薪?老闆借貸負債只為了員工薪水?童話故事?)
如果對這個議題有興趣的話可以看我們這篇文章喔!
軟體工程師的薪水是怎麼算出來的?怎麼知道你的薪水是否合理或是應該要跳槽呢?
當然,想加入進度條的課程學習的話(點我看所有課程),萬分歡迎喔!課程播放頁面與Facebook Messager都可以讓學生問問題喔!不用怕看到一半卡住沒人救你。
最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!