學程式能做什麼?培養第二專長成為T型人才,你應該要丟掉的三大迷思

談到學程式,很多人會有常見的迷思:是不是要決定成為工程師才適合學程式?非本科出身是不是怎樣都比不上本科出身的工程師?在 ALPHA Camp,我們時常收到許多還在思考與探索自己方向的同學們的焦慮疑問,但其實學了程式,你也能培養出第二專長,成為T型人才。

為了好好回答這些問題,在這篇文章中,我們想和你分享在調查數千位學生的學習動機與目標、職涯方向和學習成果之後,所得到的一些發現,可以幫你重新檢視自己是否陷入類似的迷思,更客觀的評估自己是否要踏上這段學習旅程。

迷思一:非本科跨領域背景無法學好程式?

ALPHA Camp 的學員來自各式各樣許多不同的背景:從人文科學、商管、理工、到生科、設計等等,超過三分之二都還在職,大家所在的產業也非常不一樣,從我們過去許多班級的平均統計中,可以看到文組+商管背景其實佔了大多數,可以說大多數的學生都不是理工背景的,學習程式的經驗也並不多。

ALPHA Camp 學生學科背景
ALPHA Camp 學生之前程式語言學習經驗

在思考自己是非理工背景出身感到信心不足的時候,或許應該先分析自己的焦慮從何而來,那些焦慮是不是事實。比起對數學能力的要求,學程式更注重的是拆解問題的能力以及邏輯,而比起目前所具備的能力,更重要的是你面對困難時的態度與方法,因為學習新技能從來都不是一條簡單輕鬆的路,有興趣的朋友可看看校長的精闢分享。

再來提到非本科出身的劣等感,不可否認,資工的訓練當然可以深度了解許多資料結構、演算法的理論基礎,但是跨領域就代表你有之前所累積的專業經驗,有你可以發揮的獨特優勢,而除了技術能力之外,同樣重要的溝通與團體協作能力和你是否本科出身完全無關,拿不出好的作品,沒有產品思維,無法清楚溝通,即使是本科出身,也很容易被企業打槍,專注在成為優秀的軟體人才,而不是一直回頭看自己的劣勢,可能是對你更有幫助的心態。

擁有百萬千萬使用者的產品或公司需要解決的問題規模不同,當然的確有需要資工碩士博士才能解決的問題,但是並不是只有那種量級的軟體工程師才是好工程師,許多能力也只能從實作中培養。

你需要的是一個開始,努力提升自己的能力,找到適合自己的機會與環境,而不是拿別人的終點來比較,給自己不開始的理由。

迷思二:想轉職工程師的人,才有強烈動機學好程式?

為了提升學生的學習成效,在 AC 我們時常會做各式各樣的研究與優化,從課程架構、教材內容與形式,到更加個人化的影響因素。 (有興趣的朋友們請參考:ALPHA Camp 學習教練團隊,如何透過數據優化學生學習成果 ?)

例如,我們曾經分析過不同學科背景、產業別、不同年齡、不同目標,對於學生的學習成效是否會有顯著的影響,在分析了幾百個學生的表現之後,我們發現了只有一個因素造成學生學習成效的明顯差異:那就是對於自己目標的清晰與肯定程度,不管學生原先設定的目標是甚麼。

在填問卷的時候,我們有一題會先問學生們來學習程式的目標為何?然後再問他們對自己的目標有多肯定?可以從以下平均的百分比看到,在學期一的部分,其實許多人都是抱著來探索程式,希望多學習多嘗試的心態來的。其次才是轉職工程師和成為T型人才。

有趣的是當我們追蹤這些人的學習表現後發現,和他的目標無關,越肯定自己所設定的目標,學習表現就越好,即使目標是轉職工程師,如果其實心中並不太確定,就不會花足夠的時間與心力來學習,反之,即使只是抱著探索程式的心態,如果很明確這是自己的目標,就不會一直抱著無用的焦慮,而懂得享受學習的過程與克服挑戰所帶來的成就感。

清晰的目標帶來強烈的學習動機,最終代表你願意投入的時間與心力,這就是你學好程式不可或缺的關鍵因素。

透過 ALPHA Camp 學期制 在探索中確認目標

在被問到為什麼選擇 AC的理由時,許多同學們的答案都會有「學期制」這個因素,其中一個很重要的原因就是,這樣的設計對探索者來說相對友善,除了可以確定自已有興趣再往下走,也搭配期末考與重讀機制,確保自己扎實學會再往下走,真正打好基礎。

而透過問卷調查,我們發現有 80% 的學員在學完學期二後認為課程強化了他們的原先的學習動機,想繼續探索在科技與程式領域的相關興趣、幫助自己確認目標,持續往前。另外 20% 的同學則是在過程中逐漸改變目標,本來只想探索自己的興趣,後來確認了自己對程式的興趣,逐漸想轉職為工程師,並更加努力。

還有像是學期二將課程細分為前端、後端,讓學員們都有機會可以接觸到,並且深入了解其中的差異,反而對還不確定自己興趣是在前端還是後端的學員相對友善。例如有一位原先喜歡前端的學員上完學期二之後,發現自己其實比較適合走後端,並開始朝轉職後端工程師的目標邁進。

前端、後端、全端工程師必備技能與就業門檻比一比

迷思三:學寫程式只能當工程師?有實用的第二專長你就是T型人才

有滿多人自然而然覺得,學程式不就是為了成為工程師嗎?但本質上,程式語言是工具,寫程式原本就是為了解決某種問題,因此許多本來就在不同領域工作的學生,會使用這個第二專長,去解決自己專業場域一些原本不知道如何解決的問題。從行銷、設計師到音樂老師,我們時常從學生的故事中,聽到各式各樣有趣的應用場景。

而由問卷回饋中,我們也發現除了學會程式語言的專業知識與技能外,同學們也在課程中獲得很多其他的能力,其中,學生們普遍覺得 AC 課程幫助他們建立了以下四種能力:對科技領域進一步的理解、運算思維、溝通與協作能力以及在生活/工作中運用解決問題的能力。 

1. 提升對科技/數位領域的認識

在這個以科技主導未來發展的時代,可以確定的是,完全不懂也不理解科技數位領域的人將很難在職涯發展上掌握趨勢以及建立優勢。

許多 AC 的同學們就是因為對自己未來發展性的焦慮與期待,選擇來 AC 踏上了學習程式語言之路,而經過了扎實的程式語言訓練後,許多學員認為自己對科技/數位領域的理解和背景知識也大幅提升,為自己在職場上建立了更多獨特的優勢。

在學期 2 的課程中,同學們學會如何使用 JavaScript, CSS, HTML,也同時了解 devtool 、網頁如何設計、以及如何與網頁使用者互動。這些課程讓同學們深度了解許多專有名詞,以及每天使用的網站與產品背後的設計邏輯。

有一位同學在公家機關擔任藝術行政,自稱是「程式麻瓜」認為自己學到了許多網頁建構的知識:「原來網頁是這樣動起來的!我終於初步了解如何串聯JavaScript、HTML和CSS,做出與使用者互動的頁面。過去工作曾經歷老舊網站更新,現在了解要做一個全新的網站,首先應該要確認網頁架構,再著手進行開發。」

我們也很高興發現,同學們對程式語言有初步了解後,不再認為科技領域遙不可及:

「從一開始對於這個領域一無所知,到開始理解到我們每天使用的軟體科技背後是如何運作的,如何與使用者進行互動,有種一窺真面目的感覺。」

2. 在日常生活/工作中使用運算思維

在學程式的時候,了解程式背後的「運算思維」與思考方式與學習「技能」本身同等重要。運算思維本身又可分成四個能力:拆解、找出規律、歸納與抽象化、設計演算法。

ALPHA Camp 在調查中發現,許多完成學期 2 的同學們都已具備運算思維,且都開將運算思維運用在工作、生活當中。

在學期 2-2 我們設計翻牌遊戲,希望透過微型專案,引導同學透過拆解步驟,將邏輯文字化再將各步驟寫成函式。許多同學表示,完成微型專案,他們能將遇到的問題拆解,並透過邏輯思考一步步得到答案。

其中一位在科技業從事營運相關工作的學員就將運算思維運用在設計問卷題目中:「將公司的 TA(客群)拆解成最小族群,把每個可能出現的狀況寫下來,還用 if 條件判斷來設計每個狀況下,會往哪發展。」

一位在製造業擔任行銷的同學將一天的時間拆解,並思考如何運用工作休息以外的時間最大化學習新鮮事物,將拆解問題的能力運用在生活中。同時依據每次完成的回饋調整未來努力、改善方向。這也使他能在忙碌之餘,完成學期 2 的課程。他說:

「雖然這樣真的很累,而且當每天沒辦法完成規劃事情時會很挫敗,但完成後的成就感會是你永遠走下去的動力!」

3. 溝通與協作能力的提升 

在更加了解工程師的思維與開發的流程之後,許多本來是 PM 或是設計師的同學,都覺得自己更能清楚評估專案技術層面可行性,並與工程師進行更好的溝通。

一位專案經理在了解更多程式邏輯後也表示:「以往擔任 PM 時比較會從需求面導向出發,但實際參與學習後,因為技術層面提升的加乘,更知道實際執行面的可行性與需求面的整合。」

在溝通與瞭解彼此需求後,更能進一步優化與加速流程工作流程:「前陣子公司網站剛好有串 GA 的需求,雖然並非是由我進行這部分的作業,但因為自己懂一點前端,所以查了資料後,很快就能理解操作過程,也能掌握工程師實際上所需的作業時間,以利管理網頁專案製作的時程。」

另一位在新加坡旋轉拍賣擔任產品設計師的 ALPHA Camp 校友 Rita 便表示,過往的程式能力也讓他在擔任產品設計師時,更能掌握與工程師的溝通。「有少數工程師,當跟對方說想做這個功能,他會直接回絕,表示「不可能啦!」但懂程式的設計師,就會知道不是不可能實現,只是做多久的問題。這時候,設計師就可以進一步詢問細節:可能會碰到什麼後端服務,大概會做哪些事,與對方進行更有效的溝通討論。」
從創業接案到「旋轉拍賣」產品設計師的Rita

4. 解決問題的能力

許多學期 2 結業的學員們表示,透過線上課程和作業,獲得了解決問題的能力,也能將此能力運用在生活和工作中。

ALPHA Camp 為培養學生拆解問題的能力,特別將每個大單元拆解成許多小節,在各個小節只專注完成一件事,讓學生能循序漸進將問題一一解決,降低獲得龐大資料量的恐懼和無助感。而「解決問題」並不是「事情來就做」,需要主動釐清問題前因後果,再視情況想出解決方案。同時要能「整合資源」,掌握事情全貌,進行有效整合。

一位在製造業擔任工程師的同學也說到:「我認為寫程式教給我的是規劃事物的全局觀。看到需求就動手開始做,很容易陷入卡關。解決問題需要先把視野拉遠,將大問題拆解成小問題,並事先做好流程規劃,才容易建立起整體架構再各個擊破。這對即使不是軟體業的工程師也是解決問題的好方式。」

有效搜尋與尋求幫助 

雖然 AC 有強大的助教社群可以讓同學們發問,但我們很鼓勵同學們先學會自行下關鍵字搜尋資料,若仍無法找到答案,再尋求幫助。因為這個過程中,透過不斷思考如何解決問題,你其實在建立更扎實的能力,並學會如何學習。藉由一次次的作業練習,與自己試圖解決問題的過程中,許多學員們認為,學寫程式的過程讓他們培養不放棄、適時找幫助的能力。

關於如何在技術社群問對問題,歡迎參考Andy 助教好文:Stack Overflow 教學:給工程師初心者的問答指南

最好開始的時間永遠是現在

以上關於三個迷思的整理,希望可以讓你理解,許多你以為的限制都未必存在。

不知道自己適不適合,不知道自己有沒有興趣,擔心自己做不到?很遺憾地,你想再多也可能也得不出結論,因為你無法僅僅靠想像做判斷。

實際嘗試之後,你自然會得到解答,就算決定不嘗試,也希望你不是純粹因為一些不正確的迷思,或是單純的不自信而放棄。關鍵還是你需要找到自己想解決的問題,建立更清晰的目標,才能讓你的程式語言學習之路走得更堅定,不管最後要不要成為工程師,或是學會第二專長成為T型人才,都能選擇為自己創造更有意義的職涯。

三分鐘小測驗,馬上找到你的學程式入口