許多人都在提倡學習 Coding ,但卻很少人告訴我們,該從哪種語言下手。
美國知名媒體 Business Insider 最近一篇文章 <The 100 Best Jobs In 2014> 討論美國 2014 前百大最佳職業,第一名就是「軟體工程師」,平均年薪 90,060 美金(約 270 萬台幣、XX 港幣、XX 新幣、XX 馬來幣),而且相關人才需求在未來仍然持續成長。這幾年美國、亞洲興起大量程式設計學校積極培養軟體人才,因應需求。
但是,這麼多的程式語言:Javascript、Java、Python、C、C++、C# 、Ruby、Objective – C …… ,如果你是一個想成為一個軟體開發者的初學者,到底該先學習哪一種程式語言當入門第一課 ?
我請教幾位在不同產業的軟體工程師,他們都認為,在跳進任何一種語言前你最好先問自己:想成為哪一種應用的開發者,想做什麼樣的產品。想設計網站、開發 App ( 在 Android 上還是 iOS 上?)、遊戲 …… 還是現在只是想要學,還沒有具體要做的產品或專案?
- 不知道要做什麼,只想學程式語言?
曾聽到一位設計師在演講中說:「最好的設計師不是先學技術,而是先想出欲創造的點子,再從產品的需求端拉技術進來」,學習程式也裡當如此。
但如果你和我一樣還不知道該創造什麼樣的產品,我認為可以從網頁端先開始,從學習過程中邊走邊看,找出比較想開發的產品和必須學習的語言和工具。而且,最好的程式設計師並不會只專注在一種語言上,而是必須具備學習「任何一種語言」的能力,並把「不斷學習」當作程式設計師的責任。就如同美國知名程式設計學校 Hacker School 的名言:
「 學程式永遠不會有畢業的一天。」
前端語言入門款:HTML、CSS、jQuery
回歸主題,我認為剛開始還是從網頁的基礎設計語言 HTML(正確稱呼為『標籤語言』) 、 CSS 先著手是最適合的,因為這幾種工具,對你理解網頁「視覺」上的設計上最快,也是最簡單的途徑。
去哪學最快?
1. Codecademy (免費)
目前在免費網站中,最知名的應該就是它了。上面所有的程式語言課程都是免費(HTML & CSS 、jQuery、JavaScript、PHP、Python、Ruby),互動式的界面做的不錯,也有討論區可以跟別的學習者一起討論問題,每個單元結束時都會有實作的作業可以及時了解學習成效。
Codeacademy 的缺點是,單元練習時的介紹文字稍嫌簡略,對初學者來說可能不夠清楚,需要去 Google 額外的資訊來補充、理解。
建議初學者先從 Web Fundamentals ( HTML & CSS)開始,結束後再往 jQuery…… 學習。
跟 Codecademy 的教學方式和特色都不太一樣,跟 Codecademy 不同的是,它是從「你想成為哪一種設計師、開發者」幫你做全盤的課程規劃,內容也相對完整許多。
舉例來說(下圖),你可以在「Tracks」選擇想學前端設計、網頁設計、iOS 開發、Android 開發、Rails 、PHP 等等課程,有許多基本的課像是 HTML、CSS、jQuery 都會在一些 Tracks 重疊。
另外,跟 Codecademy 不同的是,在 Treehouse 有真人(知名開發者)錄製的影片穿插在課程之間。
另外在幾個知名的線上學校裡,有幾個非常棒的電腦基礎課程(免費)也推薦給大家:
線上教育有幾個知名網站像 Udacity、edX ,裡面其實都有非常棒的電腦科學基礎教育、軟體開發等課程。不只是教材(講義、上課影片)完整,而且師資也都是麻省理工學院、哈佛大學、北京清華大學、Cornell 大學、Caltech 等全球頂尖資工學府的教授,值得大家參考。
- 我想成為前端工程師(網頁設計師)
如果你想成為前端工程師上面提到的 HTML、CSS、jQuery 是少不了的,但另外你也必須了解一些後端語言像是 PHP 等等。一位資深程式設計師曾經給我的建議:「如果你是一個想成為前端工程師的初學者,我建議你先把『前端』學到精通,也就是非常熟悉 HTML、CSS、jQuery 。後端的東西,可以進去職場依公司慣用的開發語言的不同,再做學習。」
- 我想成為 App 開發者
這就看你想在哪一種裝置上開發了,在 Android 上你必須要學習 Java ,在 iOS 上你必須要學習 Objective – C 。當然,如果你已經學會了 HTML 、CSS 、jQuery 等前端工具,你也可以用 PhoneGap 的技術做出 Android 、iOS App 出來(只是效能沒有 Native App 的好,除非你真的把前端的技術學到精通,才有可能用 PhoneGap 做到『幾乎』一模一樣。」
但以一個初學者而言,你必須要考慮到「直接」進入 Java 、Objective- C 的學習門檻相對於 HTML、CSS 、jQuery 來說是比較高的(其中 iOS 的門檻對於資訊背景出身的人比 Android 更高,因為在學校都教 Java、C++)。但除果你發願想成為一個 iOS 、Android 開發者,那這就是你的必經之路。
以下提供幾個學習資源:
iOS
2. Treehouse ( 可惜 Codecademy 上沒有 Mobile 方面的課程)
Android
1. Udacity 的 Java 課程非常適合初學者一步步學習。
2. Android 官方的開發教學
3. Treehouse( Android 和 iOS 的開發課程都有,但需要付費)
- 如果我的小孩想學 Coding,也要從 HTML 開始?
當然不用,其實專門給小朋友學習程式的資源非常多,甚至有針對孩子學習而設計的程式語言,通常都把學習程式的氛圍遊戲化了,像是 Scratch。Scratcch 是美國麻省理工學院(MIT)的媒體實驗室(Media Lab)在 2006 年所推出,專門設計給年約 8 歲的小朋友學習的程式設計語言 ,讓小朋友以熟悉的堆積木方式更快進入程式語言的世界。另外還有一套從 Scratch 分拆出來的學習工具 ScratchJr,讓年紀更小的孩子,也能接觸程式設計。
ScratchJr 在學習與操作上,比 Scratch 來的更容易一些。與一般複雜的一行行程式碼不同的是,這套語言是以一種可愛的圖像區塊式的學習方式,在遊戲中的種種挑戰裡,完成程式設計概念的學習。讓小朋友即使在還沒學會閱讀、寫作前,就可以學會程式語言的操作概念了。
另外一個適合小孩接觸的程式語言是 Tynker,在課程中, Tynker 在設計上也偏向簡單有趣,讓小朋友經由視覺程式語言,來學習程式語言的邏輯和架構,但沒有那些開發者常用的那些困難的技巧,小朋友可以用視覺程式語言來建立演算法的區塊,使得他們學習用邏輯性的語言來思考與解決問題。
除了上述的資源,你也可以讓小朋友上美國知名的線上 Coding 學校 Code School 上學習更進階的知識。
如果你有不錯的學習資源,也請分享給大家吧!
延伸閱讀:
(圖片來源:CodeEval )
Source: techorange.com