前言

隨著資訊科技的發展以及 108 年課綱列入程式設計和資訊科技能力素養相關科目,讓許多家長和學生,甚至是職場上班族開始思索是否要開始進修學習資訊技能以及自學程式設計,以免自己或小孩輸在人生的競技場中。過去一段時間我們 HappyCoder 自學程式設計學院社群輔導超過 3000 位學員跨領域學習程式設計,有許多學員和社群朋友提出許多關於跨領域自學程式設計的相關疑問。為了能讓更多的人可以對於跨領域自學程式設計有更清楚的認識,我們整理了以下常見自學程式設計相關的問題,希望能解決許多朋友心中的疑惑,也歡迎大家一起加入我們,一起交流討論,分享你的自學程式設計經驗。

關於跨領域自學程式設計你想知道的都在這裡了

問題一:自學程式設計是在學什麼?

在學習一項新的技能或是才藝時若能明確自己的目標和動機可以讓學習的路上更為順遂。所以事先釐清自己的動機、目的和需求才開始選擇合適的程式語言和工具以及合適的學習資源才是跨領域自學程式設計的第 0 步開始。一般而言跨領域非資工資管等資訊相關科系的學生自學程式主要有分三種方向和動機:

1. 希望轉換跑到轉職成為程式設計師和軟體工程師

事實上,程式設計師或是軟體工程師若是對於撰寫程式和解決問題很有熱忱的話,是一個十分令人羨慕的職業:因為可以將興趣和職業相結合,這是許多工作比較難有辦法達到的部分。

若是以希望轉換跑到轉職成為程式設計師和軟體工程師為目標的話,著重的主要就是求職相關技能的養成,包含對應職業的職能培養、履歷撰寫、面試技巧和軟體工程師素養的養成等。例如:Web 前端軟體工程師、Web 後端軟體工程師、Mobile 行動應用工程師、IC 設計演算法工程師、IoT 軟硬整合工程師/嵌入式系統開發、Blockchain 開發者、DevOps 開發運維以及資料科學家、資料工程師、資料分析師等分別有不同和共同的工作職能需要養成。但需要注意的是 IT 資訊科技產業技術和新知變化快速,要有願意持續刻意練習和克服困難的毅力、自學能力和熱情才能走的長久。

至於如何準備轉職面試、如何度過新手期,如何規劃軟體工程師的職涯發展,資淺工程師如何邁向資深工程師,這部份議題太大太廣,需要之後另外開主題來討論。

2. 磨練運算思維(Computational Thinking)、解決問題的能力及跨領域自學能力

這部份是我們 HappyCoder 自學程式設計學院致力於推廣的自學程式設計精神。學習程式設計並不是希望每個人都成為程式設計師或軟體工程師,因為沒有必要,也不可能。由於撰寫程式最重要的其實是需求分析和系統設計的部分,在這個階段透過問題的拆解、模式識別和歸納、抽象化以及問題的分析與演算法設計等都是很好用來培養解決問題、搜尋資料和團隊溝通協調合作的機會。換言之:學習程式設計並不等於學習運算思維,只是透過正確的方式學習程式設計是學習運算思維和解決問題的能力相對快且有效的方式之一

那學習運算思維和解決問題有什麼好處呢?事實上,生活中無處不需要運算思維(Computational Thinking)和解決問題的能力。舉凡規劃旅行計畫、分析投資策略、通勤路線規劃、購物選擇、工作商業邏輯分析等。而培養跨領域自學能力則是在各行各業面對自動化 AI 人工智慧等科技發展很重要的競爭力。

學習程式設計並不是希望每個人都成為程式設計師或軟體工程師,因為沒有必要,也不可能。而是在學習程式設計的過程中,磨練運算思維(Computational Thinking)、解決問題的能力及跨領域自學能力,成為更好的自己

3. 學習基礎程式設計用於解決自己專業領域或生活上重複繁瑣的工作

這時候主要是根據想解決的問題去學習和選擇適合的程式語言工具,用來解決生活上的問題。例如:學習 Python 網路爬蟲自動化爬取資料、學習使用 Pyhon 操作 Excel 減少重複性工作、製作小遊戲自娛娛人、開發聊天機器人自動回覆訊息提升工作效率等。

問題二:自學程式設計英文要不要很好?

初期不一定需要,但若具備良好的英文閱讀和理解能力,將讓自己在學習進階內容時可以更快理解內容。這個原因在於目前程式語言主流資訊和學習資源以英文為主,若是具備好的英文能力將有助於學習相關知識,尤其若是學習目標為轉職程式設計師和軟體工程師的話,這部份尤為重要。未來若是希望往資深工程師或是更高深的領域鑽研的話,英文閱讀和理解以及能夠在工作場合、論壇或是演講以英文書寫、口語表達自己的能力就非常重要。

問題三:自學程式設計數學要不要很好?

看目標需求而定。若是志在轉職程式設計師和軟體工程師的話,大部分情況下數學能力只要高中程度即可(前提是高中有好好學習)。若是希望轉職資料科學家或是機器學習專家等對於統計學、離散數學和線性代數等數學能力有更高的要求。所以簡而言之,大部分的情況下軟體工程師更重要的是理解能力、自學能力和邏輯和抽象化歸納能力,在特定領域或是研究機構數學能力相對要求比較高。

問題四:自學程式設計要學什麼程式語言?

端看你的需求決定需要學習哪一種程式語言。若是希望轉職軟體工程師或是程式設計師,可以先從 Web 開發入門,相對而需求量較多也比較容易讓跨領域自學的人進入。對於 Web 開發、前端基本需要學習 HTML/CSS 語法以及 JavaScript 程式語言(也可以使用 NodeJS用於後端開發)。若是 Web 後端則可以選擇 Python、Ruby、PHP、Java 等。行動應用則是選擇 Android(Java/Kotlin)或是 iOS(Swift/Objetive-C)。若是有志於資料科學相關職涯發展的話 Python 是推薦入門的程式語言。若是對於嵌入式系統應用有興趣,C/C++ 就是首選程式語言。

若是你希望磨練運算思維(Computational Thinking)和解決問題的能力、學習基礎程式設計用於解決自己領域或生活上重複繁瑣的工作,選擇 Python 程式語言是很好的入門方式。

問題五:超過 30 歲自學程式設計轉職軟體工程師合適嗎?薪水待遇好嗎?

因人而異。不可諱言越年輕轉職成本越低,因為家累負擔小,機會成本低。隨著市場上軟體工程師的缺口增加,當然也有不乏更年長的朋友轉職成功,但年紀越大需要的是完善的規劃、毅力和執行力。一般會建議若是非本科生跨領域自學程式設計轉職軟體工程師或程式設計師可以和本身領域有相關,這樣一來你過去的經驗就是加分,尤其現在跨領域人才越來越被重視。舉例而言:若是你過去的背景在金融銀行相關,在現在純網銀和金融科技快速發展的情況,若能把握相關機會則是相對單一背景的競爭者更好的優勢。

至於待遇則是因人、產業、地點而異。程式設計師和軟體工程師是一個特別的職業,一個頂尖軟體工程師的生產力和一個平庸的軟體工程師可能會差異到 10 倍甚至更多,當然依照生產力的不同也會有不同的待遇(當然有時還是要看機運和個人品牌及人際網路的經營)。此外選擇在矽谷灣區等網路軟體產業蓬勃發展的地方,軟體工程師薪資待遇當然會比在其他地方好上許多。另外,以網路軟體研發工程師為主的公司,也會比工程師只是配角的公司好。

若是有志於從事軟體工程師的職業,就要有不斷學習新知的認知和熱情,才能在不斷更迭變化的技術圈中持續進步。

問題六:自學程式看書?還是上課好?還是考一個資工資管相關碩士?

因人而異。若是想先嘗試是否合適可以先選擇看書自學,接著可以參與一些線上或線下課程,但最重要的還是能參與一個有好的同儕可以彼此激勵分享經驗的學習環境和社群。當然,若能有導師協助帶領則可以讓自己少走許多冤枉路。

對於一些新創公司或小公司來說學歷可能不是很重要(但還是要看職位,若是資料科學家相關職位對於是否有相關學術經驗可能就蠻重要的),能夠馬上實戰的即戰力是最重要的。但對於一些規模較大的公司,不管是升遷或是入職時對於學歷要求還是比較看中(事實上,學歷的重點在於打入另外一個人際網路連結)。另外,若是希望在美國等海外工作,最大的問題其實是簽證問題。所以許多海外求職朋友會在海外再額外拿一個碩士學位,獲得相關簽證爭取留在當地工作的機會。

當然若是希望成為資深軟體工程師,不斷鑽研學習和補足電腦科學基礎理論是很重要的一環,此外,向上管理、溝通協調、領導統御、系統分析設計等能力更是重要的軟實力。

問題七:小孩想要學習程式,家長該如何協助?

先釐清為何要學習程式,並不用刻意的強求小朋友一定要學習程式語言,小孩重要的是陪伴和鼓勵以及探索自己的興趣。若是比較小的朋友會建議以磨練運算思維(Computational Thinking)、解決問題的能力及跨領域自學能力為主。若是國中小的學生可以先從不插電書籍或是桌遊學習程式設計邏輯思考和電腦科學概念,接下來可以透過 ScratchMicrobit 等簡易拖拉式程式語言工具著手,更進一步則可以導入 Python 進行簡單小遊戲或應用程式開發,培養興趣和成就感。

總結

  1. 問題一:自學程式設計是在學什麼?
  2. 問題二:自學程式設計英文要不要很好?
  3. 問題三:自學程式設計數學要不要很好?
  4. 問題四:自學程式設計要學什麼程式語言?
  5. 問題五:自學程式看書?還是上課好?還是考一個資工資管相關碩士?
  6. 問題六:超過 30 歲自學程式設計轉職軟體工程師合適嗎?薪水待遇好嗎?
  7. 問題七:小孩想要學習程式,家長該如何協助?

以上整理跨領域自學程式設計常見問題解析,在開始你的自學程式設計還是要先確認自己的目標和動機,才能走好接下來的每一步。

若是讀者們對於自學程式設計相關問題還有疑問的話,歡迎在下方留言,我們會陸續更新整理。若是覺得我們的文章寫的不錯,也歡迎給我們按讚分享鼓勵:)

歡迎在網路社群上訂閱追蹤我們,免費獲得自學程式設計教學、學習資源和課程資訊!

參考文件

  1. 自學程式設計學習資源懶人包
  2. 用 Python 自學程式設計:程式設計思維入門
  3. 想要自學程式?七個自學程式設計正確的觀念和心態

(Photo by Dlanor S on Unsplash)


#自學程式 #自學程式設計 #Computer Science #CS #Porgramming #code #Coding #跨領域自學程式設計









Related Posts

[第六週]  CSS  Part1 - Selector

[第六週] CSS Part1 - Selector

CSS 顏色、模糊效果 filter屬性

CSS 顏色、模糊效果 filter屬性

TypeScript 函式定義字串型別相連和JavaScript String.prototype.concat() 的差異

TypeScript 函式定義字串型別相連和JavaScript String.prototype.concat() 的差異




Newsletter


Comments