2022-08-07|閱讀時間 ‧ 約 12 分鐘

菜雞程式指南 EP0. 如果說踩過這麼多坑的我都能學成了,能避開這些坑的你沒有學不起來的理由

哈囉大家,距離我上次發文也是超過半年以上的事了,不知道大家還記不記得自己有追蹤這個作者XD
這半年我在轉職工程師的培訓,培訓內容還蠻緊密扎實的,因此很難騰出手跟精神寫文章。目前也即將成為後 Jr. 後端工程師,朝向下一個目標 (地獄?)前進中( • ̀ω•́ )。
回首我這幾年來學程式的經歷,那真的是不忍卒睹(´;ω;`),歷經了諸多挫折、盲目摸索、灰心喪志,還好後來透過正確的管道,認知到有效的學習方式,才真正取得了成為工程師的基本資格。
現在回想當年在學習路上掙扎的自己,我都一直有很多那種「如果當初有人這樣跟我說就好了」的遺憾,因此接下來會陸陸續續在這裡分享一些我認為對新手很有幫助的心法或思維,希望可以幫助到正在這條荊棘路上奮鬥(或是對程式有興趣)的朋友們,可以少走一點冤枉路、少一點挫敗感,更甚者少花一點冤枉錢 (´_ゝ`)。
先打個預防針,我這邊不會分享什麼太哈扣的技術討論,主要是一些心得向的分享,大家不用覺得點開很有壓力,可以很chill的閱讀~ (畢竟我自己也還是菜雞,而且網路上技術分享的資源也很多,這邊就不自曝其短了XD)
開篇第一篇先來聊聊我從 0 開始接觸程式、到整個完成培訓、成為工程師的整個過程,但目的不是來跟你炫耀說「我TM超屌,學程式根本小事一件」,也不是要給你打那種「程式一點都不難,快來我們這裡培訓,半路轉職也可以輕鬆成為工程師^.」的補習班雞湯。 恰恰相反,我要分享的是把「所有新手能犯的錯、能踩的坑都做一次,即使這麼慘烈的我,最終也還是成功學會程式」的這段經驗。如果踉蹌如我最終都做到了,在看完我的分享後,可以在一開始就抱著正確的心態、透過正確的方式來學習的你,我相信一定可以比我更順利的學會「一定程度」的程式技能。
注意,這邊特別標註「一定程度」這個關鍵字,畢竟程式世界深似海,我不能保證每個人開始學程式後,都一定有能力用程式找到一份飯碗,但是可以用程式順利解題、寫出一些基本的小專案,這我相信還是能辦的到的。 沒有地基何來高樓,在擁有這些基礎能力後,剩下的就是看你自己的努力與毅力,決定你可以在程式領域達到怎麼樣的成就了。
扯遠了,那我們話說從頭,先從我第一次接觸程式的回憶開始吧 ε≡ヘ( ´∀`)ノ

迷茫(又破費QQ)的起點

人生第一次碰到程式嚴格說起來應該是高中時上的 C++ 程式課,但當時已經有原本的學業科目,實在難以靜下心來去學習一個新的領域的知識,基本上是去混分的,期末也是老師看不下去直接拿答案給我抄才沒被當掉 (´;ω;`)。
真正開始認真想學程式則是在退伍之後,也算是被同袍一個「誤入歧途」,聽他講的好像學程式很簡單、學完以後隨便找都有收入不錯工作,基於膚淺的動機與認知開始嘗試學寫code。
身為一個書呆子,直覺想到的學習方式就是「看書」,於是就跑去天瓏書局買了一本網路上頗獲好評的新手入門書「精通python」 帶回家嗑。
當年讓我崩潰的元凶 (/‵Д′)/~ ╧╧
當年讓我崩潰的元凶 (/‵Д′)/~ ╧╧
這邊就直接暴雷了,如果你是「完完全全的程式小白」,那這本書絕對是噩夢級別的存在,讀到後面你會完全搞不情楚自己在學什麼東西、到底在看什麼玩意,可以說一點收穫都沒有。 詳細原因我之後會再寫一篇分析,結論是當時硬看完的心情只有崩潰,徹底的對程式喪失熱情。

在經歷這樣的折騰後,我已經認知到想靠自學學會寫程式應該是不太可能了,在如此徬徨無助、甚至有點自暴自棄的的情緒下,我直接放棄思考,去報名了某家風評不是很好的程式補習班(X匠,這個聲名狼藉的程度應該是鮮少有人沒聽過吧(σ′▽‵)′▽‵)σ)。
當時的想法很簡單,既然自己學學不會,直接去上人家幫你安排好的課程規劃,應該總不會錯了......吧?
事實證明這個想法錯得離譜。我沒有把整個套課的內容上完,沒辦法確認上完課程後是否真的能幫助新手轉職工程師。但起碼以我上過的幾堂課來說,我覺得這種規模化的商業課程的問題就是師資品質跟課程規劃:一次手上有多個班級、一個班級有多個學生的老師很難掌握學生的狀況,這對於正是需要諮詢輔助的新手非常不友善。 更糟的狀況是很多老師是從業界請來的工程師兼職教課仔,美其名曰有實務經驗帶入教學 ┐(´д`)┌。這種老師更不可能投入太多的精力在教學上,有時甚至只是照著講義內容念,想在這裡學好程式開發基本上是妄想了(◞‸◟)。
然後為了方便量化教學成果,這邊的老師會一直叫你去考Oracle的檢定考試,說有證書未來應徵時非常加分。以我現在的程度回頭檢視,這整個檢定制度真的就是一個智商稅測驗,考的內容也都是非常細節的Java語法特殊情境,對於實務情境一點幫助都沒有。
總而言之言而總之,到目前為止的經歷就真的是燒錢促進社會經濟成長(超過十萬元,不如捐出去做公益),不但完全沒有進步,反而開始懷疑自己是否真的沒有成為工程師的資質 (´;ω;`)。

加入 ccClub 讀書會,從基礎訓練開始打磨程式思維

當我正處於對程式職涯將近放棄的階段時,有朋友邀請我一起報名台大的ccClub程式讀書會,爬了一下網路覺得似乎評價還不錯就去報名了。 (結果只有我錄取我朋友沒上。・゚・(つд`゚)・゚・,也是蠻哀桑的)
ccClub 的課程是教學基礎 Python 語法 + 簡單的爬蟲技術,最後在期末完成一份小組專案。教學內容雖然與大部分的教材並無二致(畢竟程式基礎語法就那樣),但我在這裡最大的收穫是「建構 programming 的基礎思維」。
如果說 coding 是單純的寫出可以運作的程式指令(比如說印出 Hello World),那我認為 programming 是「分析問題、解構問題、最後透過程式碼來解決問題」的能力。
ccClub 怎麼培養學員 programming 的能力?無他,寫數學題。 學員可以在 ccClub 的 judge 系統上寫數學題,最難頂多是國中程度。有別於你過去用紙筆寫數學題的思路,在這裡要訓練的是「用程式的思維來解題」,如何靈活運用資料型態、判斷式、迴圈等工具,來配合問題需求 code 出正確的程式,才是新手真正要培養的重要技能。
這也是我認為大部分的新手看完教學影片後還是對 coding 一知半解的原因。這些影片通常只能教會你基礎的語法,但只有語法是不夠的。缺乏練習的環境資源,就無法培養這樣的程式思維能力。 就像台灣的英文教育,大部分的學生都知道英文文法規則,但真正能用流利的英文侃侃而談又有多少人呢?
在讀書會還有另一個好處是助教跟學習夥伴。單打獨鬥的學習很容易陷入瓶頸或低潮就放棄;而當大家一起朝同一個方向邁進時,除了有困難時可以諮詢幫助外,彼此激勵的效果絕對會讓學習者更有動力繼續努力前進。
ccClub 特色一覽,有興趣的話趕快追蹤粉絲團!

在讀書會的學期中,我就是透過瘋狂的寫 judge 題目(我覺得解題的快感很上癮(*゚∀゚*)),打下扎實的程式思維基礎,這也對我後續的學習上有很大的幫助。
在讀書會結束後,由於很喜歡讀書會的理念與活動,也主動報名徵選成為讀書會的成員之一。在讀書會學長的建議下,迎來了我程式生涯中最重要的轉捩點。
(看到這裡如果有興趣報名 ccClub 讀書會,可以按讚我們的粉專,追蹤最新消息;也可以訂閱我們的 YT頻道,可以觀看我們的教學影片還有申請 免費 的 judge 系統帳號歐 ε٩(๑ ₃ )۶з)

進入 AppWorks School,職業程式力的音速衝刺

先來盤點一下我這時候的程式程度:我有能力用程式解構一個複雜的數學題,開始可以看懂人家的程式碼的結構。有了這樣的能力後,我開始可以往更深的程式領域探索,比如跟著進階班讀書會學基本的 Computer Science 的知識(當時是學了一點資料結構 + 演算法)、刷刷 LeetCode、去 Udemy 上一些簡單的後端框架課程。
這時候雖然已經有想轉職工程師的念頭,但距離我現在的程度,這中間好像還有一道很大的鴻溝,而且是一道我完全不知道要怎麼填的大坑。儘管我有心、也有能力去學習,卻完全沒有方向。 我想這也是很多想自學程式轉職的人會遇到的瓶頸:你根本不知道你要學什麼,才有所謂「成為工程師」的資格。

跟讀書會學長諮詢討論後,決定去報名 AppWorks School(後面簡稱AS)-- 一個專業的職業工程師培訓機構。相比於教學 -- 針對某一種語言、框架、應用作深入、詳細的指導示範,這裡的培訓更像是指導你身為一名職業工程師,你該認識那些知識、思考哪些面向、可以運用哪些工具,來幫助你解決問題。
這樣說好像有點抽象,我換一個方式形容:一般的教學課程有點像「教你A牌釣竿怎麼釣到吳郭魚」,而在AS裡,是告訴你如何思考,用不同的魚餌、不同的釣線、不同的釣竿、不同的水域環境,根據你想釣到的魚種,來找到最適合的釣魚策略組合。
我在這裡特別避免使用「教」這個動詞,這裡的培訓方式幾乎都是跟你說一個方向,比如說告訴你可以用 Redis 達到快取目的,至於 Redis 怎麼安裝、怎麼設定、怎麼啟動、怎麼配合 Server 呼叫?抱歉,沒有要手把手一步一步帶你,自己去爬文查資料。 畢竟自己尋找問題的解決方法,也是每位合格的工程師重要的特質之一。
如果你也對轉職有興趣,非常推薦來報名AS培訓班,尤其是這部分需要的知識量非常龐雜,自學者難以靠自己去發掘拼湊這些零碎的知識節點,透過有業界經驗的導師引導,才不會走錯方向或是卡在盲點無法突破。
重點是,AS 培訓是純粹的公益單位,全程免費!詳細資訊附上連結,大力推荐給所有考慮轉職工程師的人(ゝ∀・)b

由於敝人視覺美感之稀爛(以前美術課可以被當掉的程度),毫無疑問的是報名後端工程師的培訓,在經過 1個月遠端 + 4個月實體的培訓後,順利在今年暑假結束前以 Jr.後端工程師的身分找到工作ヽ(●´∀`●)ノ
AppWorks Scholl #15 的結業留影 (*´∀`)~♥
以上是我程式小白旅途的終點,同時也是另一個起點:工程師是一個「學到老、才能工作到老」的職業,要不斷的充實自己、學習最新的技術,才有能力解決迎面而來的問題。 之後也會不時地分享一些我工作的經驗跟心得,提供給大家做進一步的參考跟交流٩(๑•̀ω•́๑)۶

結語:迷途如我也能走出迷宮,手握地圖的你大膽的邁開步伐吧

從 24 歲的第一本程式工具書,到 27 歲正式拿到工程師的入場卷。如上所述,在過程中不但走了彎路又一直迷路,我花了整整三年才這個領域站穩腳步,其實是相對晚成的。 (我AS同期的同學甚至只有接觸程式半年而已 Σ(゚ω゚))
不過也正因為如此,我更清楚那些初學者面臨的困惑、挫折與茫然,那些過往的經歷對我來說仍歷歷在目,我清楚地記得三年前看不懂什麼是「環境安裝」,光是安裝編輯器就花了一整天,那種挫敗無助的感覺(◞‸◟)。
如果你看到這裡,也對學程式感興趣,歡迎你追蹤我之後一系列的心得分享,聊聊如何避面一些新手可能面臨到的困境。
我相信連我這麼崎嶇坎坷的學習路程都能開花結果,看完我的分享的你,就像在戰爭迷霧裡插眼的外掛,提早避開可怕的陷阱,能夠更順利的抵達終點。
祝福所有的 Coder,找到屬於自己的 Hello World!
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.