自學程式設計 5 訣竅,你要跨過的 5 道坎

自學程式設計在軟體工程師越來越熱門的趨勢下,是近年來很多人的目標,不過半途而廢的人卻是大多數。原因在多數人不知道自己會面對的問題,又該如何有策略和心理建設去解決。這篇文章帶大家了解自學程式會遇到哪些主要的挫折,你該如何跨過這些坎。


為什麼要學程式設計

隨著科技演進,越來越多產業開始數位轉型。所以除了軟體工程師之外,數位產業裡的其他職能角色(如 PM、行銷、設計師…等等)若能培養程式專長,也能進一步提升工作效率,增加個人能力獨特性,進而開創更好的職涯。

掌握基本的程式能力,你將能夠建立
1. 與科技團隊溝通的能力。
2. 建構小型網路應用程式/工具,讓工作更有效率的能力(例如:建構了一支網路爬蟲,收集競爭對手的價格資訊並匯出到 Excel 工作表)。
3. 建構一個簡單的原型、測試初步想法、解決問題的能力。

因此,只要你的職涯仍有30年以上,為了提前準備、爭取更有競爭力的職涯發展,程式設計就是非常值得投資的跨界技能!

將程式設計視為一種語言能力、一種思考模式,不僅可以幫助你跨界合作時,與工程師更有效率的互動,同時你可以更清楚的知道程式語言可以帶給你的機會與限制,讓你的想法更積極的落實到你的產品與專案。


如果想要開始學習程式設計,需要先具備什麼能力嗎?

很多人在剛開始想要「學習程式語言」都會很擔心自己的英文能力、設備條件不足夠,因而卻步。不可否認,當你越學越深的時候,你會更渴望找到更多的資源來協助你的解決問題,語言跟設備可能會需要一些適應與調整。

但在入門階段,希望你可以更專注在「自己是否能從程式語言中獲得樂趣」與「建立自學的能力」,我們認為這才是你能否長遠在程式語言領域發展的重要關鍵!

對於程式新手而言,英文程度並非必要。但如果你已經學習程式一陣子,紮穩基礎準備邁向資深軟體工程師,那英文能力就會是加分、甚至是必要條件了。

寫程式需要一流的數學能力嗎?答案也是不需要。科學期刊 Scientific Reports 研究發現,比起數字處理的能力,語言能力、記憶力和推理能力,反而在程式語言的學習上起著更大的作用。

新手寫程式,其實不會用到太複雜的數學,關鍵在於是否擁有拆解問題的能力與邏輯。

新手學程式,英文、數學能力重要嗎?


自學程式受挫? 5 道你要跨過的坎

你沒有「好」的動機/理由學寫程式

程式是個工具,幫助你解決問題、自動化改善你的生活,或是打造應用App去幫助人解決問題。把「工具」當「目的」會很容易不知道自己為何而戰。

如果只是為了錢或聽起來很酷,會很容易就想放棄。你要知道你想解決什麼問題,想完成什麼,所以最好的方式是,做你真正想要實踐的project,設定目標來一步步完成它。

但若你的目標是:我想轉職工程師獲得更好的薪水!那你更應該先了解自己適不適合當軟體工程師,想要當怎樣的工程師。軟體工程師百百種,你想要從事什麼類型的工作,會很大程度決定你達成目標的路徑。你有了路徑才會有一步步實踐目標的踏實感。

延伸閱讀:你適合轉職軟體工程師嗎?先問自己這三個問題

不知道該從何學起,該學什麼程式語言

一般人會問該從什麼程式語言學起,會問這樣的問題通常不知道自己為什麼要學寫程式。如果你心中有個project想要完成,會更容易知道要用什麼程式語言去做。

  • 若你想打造網站應用 Web App,你會從JavaScript開始
  • 若你要做iOS的App,你會學Objective C或 Swift
  • 若你要做Android App則會學Java

事實上,你其實可以用JavaScript去建各種project,如果你還不知道該學些什麼,可以問問你認識的工程師,或是直接來問 ALPHA Camp。

遇到問題卡關卡很大,覺得自己笨或根本沒程式天份

寫程式其實和游泳一樣,看影片、看人游是學不會游泳的,一定要自己下水去游了喝幾口水,才知道游泳是怎麼一回事。寫程式也是寫下去才知道你會不會寫,程式跑不跑得動。當你知道理論下去實作卡關時,通常不是你笨或沒天份,你只是還不夠熟悉解決問題的方法而已。

  • 遇到這種情形你可以先把大問題拆解成小問題,然後逐個擊破。
  • 一次專注在解決一個問題,不要想同時解決多個問題。當你測試完一個task沒問題之後,再推進到下一個。不這樣做你可能就會累積很多未爆彈,然後根本不知道問題出在哪。
  • 先確定你知道你要做的task如何運行,不知道可以問Google大神,或是在善用像是Stackoverflow上,找答案或問問題。更好的選項是可以找到個有經驗的mentor幫你。

記得寫程式卡關和遇到挫折是正常的,就算是資深的工程師也會遇到瓶頸,但是心態是不要自己嚇自己,持續地用運算思維思考,將大問題拆解成小步驟一步步解決。在寫程式debug時掙扎非常正常,不要因為程式崩潰自己也崩潰了。

Ask for Help. Accept Help.


你不知道何時或該怎麼求助

設想你遇到問題時,已經花了十個小時在找解方。結果問到一個人給你一個解法,這時候你是不是大聲歡呼然後前進到下一個task。錯了!你應該要做的是

  • 回顧你之前的思考流程,問自己之前什麼地方想錯了,你能不能用別種思路來想到這個解方。
  • 問那個告訴你解方的人,他的思考邏輯和過程是什麼,從他們的思路中學習並且應用到自己未來解決問題的流程之中。

設定找解答的停損點,開口問人吧!如果遇到很多問題花了大把時間,次數一多會大幅增加挫折感進而放棄,最好是找個工程師mentor能適時幫助你,在自己尋求答案時設個停損點,不要無止盡的在同一個問題上耗費大量時間打轉。

學程式卡關怎麼辦?學習教練團隊怎麼神救援你順利學習與轉職?

一個字,忙。兩個字,太忙

忙碌是最合理的理由(或藉口),要真正學會一門技能並實際應用需要時間,很難有什麼速成的方式,更何況對自制力要求更高的自學,不過若你真的要學會寫程式,開始時每週至少花10-15個小時(越到後期可能所需時間會到每週20小時),如果換算下來就是每天要擠出90分鐘,你捫心自問若一天都湊不出90分鐘,是沒有真的把學會程式技能放在你人生的優先順序中,還是真的有心無力呢?

自學程式必看!如何做好每週時間管理、不再半途而廢?


成功自學程式的 5 個訣竅

練習、練習、再練習

訓練自己的大腦寫code的肌肉記憶。養成習慣是困難的,就像運動重訓一樣,一種避免放棄的方法是,每天都找時間寫,最少半個小時,並在日曆上標記你今天做了練習,當你每天標記時間一長,心理機制就會不希望自己中斷,變成兩天打漁、三天曬網。即便中斷一天或兩天,也馬上再重啟新的連續練習日,只要一兩天不寫就渾身不自在,養成自己練習寫程式的習慣。

用機制獎勵自己

每一次你達成某個里程碑,就買個東西給自己或吃頓大餐(當然也可以用不花錢的獎勵替代)。更好的方式是直接開始從事你真的在乎的project,每完成一小步,你的成就感自然會與日俱增,也離你真正想完成的目標更進一步。

在初期量先重於質

先求有再求好,從錯誤中學習但不要害怕錯誤,重點是在持續練習持續寫code,培養正確的運算思維,能從邏輯、問題拆解、除錯、找答案中持續進步學習!一開始寫得爛是正常的,沒有人剛開始學英文講話就有native speaker水準,寫程式當然也是如此,不要對自己有錯誤的預期,也不要對自己太harsh。「你不會開始就很厲害,但你想變厲害現在就該開始」。

學習如何學習

這不是一句繞口令,尤其你若未來想要成為軟體工程師,終身學習必不可免的。程式世界廣大,你不可能所有問題的解方都學會放在腦裡,但你的核心技能就是你的學習能力,在面對不同的問題時,能夠知道如何找答案找解方,面對任何問題都不會害怕。

自學力就是競爭力!「有效學習」必讀的 5 本書

找到值得信賴的機構 協助你程式自學啟程

大量的實作練習,用系統化的進度制來督促自己不要半途而廢,在學習社群中有助教和同學,能在你有疑問時給你解答,在你寫code時給你feedback,知道自己該怎麼改進。學習過程中不只給答案,而是讓你學會如何學習。

這是 ALPHA Camp 全端開發課程的學習體驗,你也可以看看AC學員過去的真實評價。自學程式沒有速成之路,一步一腳印就能跨過重重障礙,學會一門帶得走受用一生的技能。

參考資料: