報名 Bootcamp 課程之後,然後呢?

報名 Bootcamp 課程之後,然後呢?
credit: National Cancer Institute

你想轉職工程師嗎?

也許是因為疫情的緣故,或是個人職涯遇到天花板的關係,這幾年來不少人會試著轉換到軟體工程師跑道,看看能不能在家裡就能遠距工作,或是得到更好的薪資。

不管是前端還是後端,不管是學著做網站還是手機 App,或者是自學還是去上課,或也許是實體課程還是線上影片,都好,只要能學會、能順利轉職成功拿到軟體工程師的門票,都是好的方法。

至於實體跟線上的學習比較,我相信網路上應該不少參考資料,事實上就算不用看這些比較文章,不同方式的學習、轉職管道的優缺點比較以及成效的好壞,大家大概也都心裡有數。

簡單的說,如果對自己有自信,覺得自己可以很自律把買的線上課程影片看完而且跟著做些作品出來,Udemy 之類的線上影片課程算是相對高品質且低成本的自學管道。不過如果覺得自己是個需要人押著才能乖乖的寫作業的人的話(就像我),剛好同時手邊還有些預算,想在三個月到半年之間就轉職成功的話,參加實體的 Bootcamp 培訓課程可能是相對有效的方法。

坊間類似的培訓單位不少(請讓我自肥的宣傳一下我們自家的 ASTRO Camp,不過本文的目的並不是在比較這些機構或課程,而是想跟各位說,假設大家報名了 Bootcamp 之後,然後呢?

報名課程也繳完錢了,然後坐在教室裡上幾個月的課程之後就能無痛的轉職成軟體工程師嗎?如果就這麼簡單,那也未免有點小看軟體工程師的工作了...

這幾年來我們帶了十幾屆的 Bootcamp,的確有看到很多成功轉職而且後續在業界也做的不錯的同學,不過,當然也有到最後找不到工作或是放棄的個案,但,一樣是沒經驗、非本科系,一樣每天都只有 24 小時,上的課也都一樣,為什麼最後會有這樣的差異呢?

我一定要成功!

我相信當初大家在報名培訓班之前,一定都做了很多的功課,實體的、線上的,比較了許多教學機構的方案,在最後決定把卡刷下去的當下,一定都是滿腔熱血的,想著「我終於要脫離我現在的生活了」或是「不久的將來我就會變成軟體工程師了」的美好生活,先不論軟體工程師的生活是不是如大家一開始所想像的那麼美好,但各位投入了寶貴的時間跟金錢,要怎麼樣才能比較容易拿到軟體工程師的 offer 呢?

我一直認為大部份的人的智商相差並沒有很大,只要走對方向、用對方法、努力練習加上刻意練習,要在半年內從零經驗的新手變成入門等級的軟體工程師應該不會太難,但到底為什麼有些人好像一帆風順,但有些人卻比較沒那麼容易成功,甚至最後放棄呢?

在我們這幾年的經驗看來,心態跟學習方式可能是決定能不能順利轉職成功的最主要關鍵因素。

調整學習方式

回想一下我們以前的求學過程,大家上課的時候應該會做筆記吧?老師在台上寫著板書,學生在台下跟著抄筆記。抄筆記不是壞事(甚至會被鼓勵),因為學校考試的範圍就是上課老師劃的重點或是指定教材裡的範圍,考前開個夜車拼一下就可以有不錯的成績。不過,台灣的學生普遍比較害羞客氣,上課的時候遇到不會或不懂的地方不太敢舉手發問,或許是不習慣在公開場合發言,但更多可能是認為這個問題好像其它同學都會就只有我不會,深怕問了蠢問題被同學或老師笑,反正有先抄下來就好,然後就這樣不知不覺進入了學習的惡性循環。

有趣的是,這個惡性循環的症狀還會隨著年紀而有所變化,年紀越大,臉皮會越薄,不敢發問的情況變的越明顯、越嚴重。所以有時候大家會說年紀大的人轉職比較不容易,除了職場的確對大齡新手工程師相對的不友善之外,很多時候可能也是因為拉不下臉來開口問造成學習速度較慢甚至是阻礙。

報名培訓班最主要的目的是轉職,在目標以及動力上跟一般的義務教育或大學教育都有很大的不同。有些同學可能會認為自己一路走來讀的都是明星高中、國立頂級大學,讀書有什麼難的。的確,讀書不難,但學習寫程式可不比讀歷史地理只要強記就有好的效果。程式要學的好,除了要記一些語法之外,還需要理解加上大量的練習,就如孔子說的「學而不思則罔」,只知道死記卻少了思考,就會容易迷罔;反之「思而不學則殆」,只顧著思考卻不動手實踐,同樣也不容易學的好。

我們的教育制度,普遍重視學習而不重視思考,上課大多會教怎麼做(How)或做什麼(What),但卻不一定告訴你為什麼這樣做(Why),這在學習程式的時候是很危險的。所有的技術被發明出來一定都是要解決什麼問題,如果不知道到底想解決什麼問題,下回遇到類似的問題的時候也不會知道該拿這項技術出來用,這樣怎麼可能會學得好呢?

講到教育是扯的有點遠了...不過我要表達的是,大部份的培訓班強調的都是短時間(三個月到半年)幫你轉職成功,這表示課程的密度跟練習的強度都濃縮在這短短的幾個月之內,不要用以前在學校讀書的那套方法,因為那很可能會事倍功半。如果原來的學習方式有效的話,你自己在家自學就行了不是嗎?調整學習方式,維持學習過程的成就感,不然很快可能就會想放棄了。

誠實面對自己的學習狀況

是說,既然都報名了培訓班,就是要來學自己原本不熟悉的技術,所以心態上要先調整好,一開始可能會遇到很多不會或是聽不懂內容是很正常的。不過,開始上課後,請一定要誠實的面對自己的學習狀況。

不會就不會,沒什麼好丟臉的,就是因為不會所以才要來報名上課不是嗎?遇到聽不懂的,就舉手問,最好可以抓著講師或助教問到懂為止。這也是大家想要報名實體課程最大的原因,有問題就是問到飽。如果上課遇到問題卻又不敢發問,那乾脆在家裡看線上影片就好啦。

有些同學比較害羞,上課的時候不敢問,只敢每節下課的時候抱著筆電去台前找講師,但這樣很可能就錯過了發問的黃金時間了。許多課程的內容是環環相扣的,前面聽不懂接下來的幾個段落也跟著聽不懂的機會滿大的,而下課才問可能已經過了半小時了,那這半小時的進度不就沒跟上了嗎?

「有問題就要問」的道理其實我們大家都懂,不過,就我們這幾年做教學的觀察,道理大家都知道,實際做起來又是另一回事,就如同上面提到的,人長大了,反而臉皮變薄了,而且這情況在做企業訓練的時候會更明顯,因為參加企業內訓的成員大多是公司同事或是長官,在這樣的人員組成下,更容易發生萬一問了蠢問題就會被同事或長官看破手腳「原來你連這個也不會」而更不敢發問。

每個人的狀況不同,起跑點也不同,別人上課都沒問題不表示你也應該都要聽的懂,而且別人都好像聽的懂說不定只是假象,其它同學們也都可能在等看有沒有其它勇者舉手問。

(是說我有聽過某些單位的講師希望同學不要問太多問題,說不定只是怕你把講師給問倒了)

不知道怎麼問問題?

我曾經問過不少參加培訓班的同學們,為什麼明明付了錢來上課,知道自己卡關了卻不主動問問題?同學們說其實並不是不想問問題,而是不知道該怎麼問。聽到這裡大家可能會好奇怎麼可能會不知道怎麼問問題?

其實這個情況就像一個人走在一大片迷霧森林裡,就算你手上有地圖跟指南針可能也沒什麼鳥用,因為你根本連你現在在地圖上的什麼地方都不知道。根據同學們的描述,有時候聽不懂的感覺就像這樣,只知道自己聽不懂但不知道從何問起。

遇到這種情況,我常會跟同學們說,別擔心,至少你還知道有自覺知道自己卡關了,遇到這種情況,你只要舉手就行了,通常優秀的培訓班講師都能引導你把正確的卡關點問出來。

通常能把問題精準的問出來,離正確的答案就不遠了。

不要抄 code!

想像一下這個畫面...

台上的講師正在敲打著鍵盤,展示某個迴圈的程式碼怎麼寫,這時候台下的學生可能抬頭看一眼投影機布幕,接著低頭跟著敲鍵盤,然後又抬頭、低頭,深怕一個不小心漏了幾個字就沒跟上進度了,這樣的畫面應該在很多教學現場都會出現。

我自己早期在學習的時候也很常會這樣做,就覺得這樣跟著線上課程的影片敲打著鍵盤,做出跟講師一樣的成果就好像是學會了,後來發現並不是這回一回事,不過在跟著做的過程又好像學會了些什麼,我稱這樣的情況是「進步的假象」。

別的科目我不敢說,但就以程式設計來說,這樣的學習效果不一定比較好。

對新手來說,這樣的抬頭、低頭循環,可能只要一個不小心少打一個逗號或括號,程式就跑不動了,這時候就又會不斷的比對自己寫的跟講師寫的有什麼不同。如果是線上課程還可以暫停影片或是退一點進度回去看一下到底哪裡有寫錯,但參加實體課程 Bootcamp,講師的畫面切換一下就不見了,接著可能又進入了跟不上、不敢問、越來越跟不上的惡性循環了。

如果是參加實體課程的話,比較建議的做法是先聽懂這個段落或章節在講什麼,需要練習的話,我相信比較好的講師在授課的過程中都會留些時間給大家練習。如果觀念有聽懂,就算語法不熟悉至少也可以寫出個八分樣。如果寫錯或是忘了怎麼寫,這時候再抬頭看一眼或是舉手發問,刻意持續這樣的練習可以讓你更快記得這些語法。

不知道大家會不會下圍棋?在圍棋的世界有個名詞叫做「覆盤」,意思是指在對弈結束後可以把對弈過程中的所有落子按順序重複擺一次,但其實棋手們並不是死記每步棋,而是記一些「通常遇到這個情況的時候會這樣下」的招式,順著這個招式就能把整盤棋再擺一次。

寫程式也是一樣,通常都不會要大家記住每個語法,而是理解觀念,再搭配一些關鍵字組合,通常就能把功能寫出來。

所以,聽課的時候不要顧著抄 code,先聽懂再覆盤,然後不懂就發問,需要的話一定可以找到時間練習的。

正面與負面的同儕力道

一起參加實體課程的同學們通常都會產生正面的同儕推力或負面的同儕拉力。正面的推力,例如看到每個同學都很努力的學習,自然也不敢太混,而負面的拉力就像是看到同學們下課了就拎著包包回家了,雖然自己可能還有問題沒解決但看著大家都離開了所以也跟著下課,或是看到同學們好像也都聽不懂所以自己聽不懂也是很正常的,就放著反正大家一起爛,這些正面、負面的同儕力道都是很常發生的。

不然,如果有些學員在過程中因為挫折而放棄,這種「放棄」也很可能因為負面的同儕力道而擴散到其它原本,就會覺得反正我同學也放棄了,我放棄也還好...

擅用正面的同儕推力讓自己學習更有動力,同時也要注意不要讓負面的同儕拉力影響到自己的學習心態,如果可以的話,試著當同儕裡的正向推力的種子,雖然講這話感覺有點雞湯,但當你在正向影響同學的時候,通常也會讓自己更有學習動力,進而學的更好、更有成就感。

不要依賴補課機制

有些單位會有補課機制,例如我們每天上課的內容都會錄影存檔,主要是如果同學因為有事或身體不舒服請假不能來,至少事後還能看影片追一下進度。

不過我會建議大家不要依賴這樣的補課機制,就先當做它不存在就好。為什麼這麼說?這機制就有點像在學騎腳踏車時候的輔助輪一樣,有些同學上課的時候遇到問題不敢問,下課也不敢問,心裡想說「反正有補課影片,我晚上再回去看看好了」。

沒發生意外的話,一般人類的智商或理解能力在短短幾個小時之內是不會有太大的變化,白天聽不懂的課程內容,晚上想要看影片追進度大概也看不懂。上課的時候講師就在面前,因為各種原因而不敢發問就真的太浪費了,也許 A 講法聽不懂,跟講師反應之後也許講師會換個 B 或 C 的講法想辦法讓你能理解,這才是上實體 Bootcamp 課程最有價值的地方。

把每天的疑問解決完再回家,不然每天掉一點進度,一週就掉了一週的進度,隨著時間會越來越跟不上,最後又進入惡性循環,然後就會想要放棄了。

設定停損期

通常我都會跟同學們說,遇到問題的時候,仔細閱讀畫面上的錯誤訊息,用畫面上的這些資訊餵給 Google 找答案,通常都能找到解答或方向。

遇到問題的時候不要當伸手牌,先試著自己挑出問題的關鍵字,練習自己解決問題,但也要注意不要太鑽牛角尖,卡著一個問題不放,畢竟要學的東西很多但時間有限。

那麼,在這個伸手牌跟自己找答案的界線該怎麼界定?這一開始因為不知道問題的難易度所以不太容易抓,但可以先試著練習設定個停損期,視問題的難度而定,也許是半小時,在這半小時之間盡力的去找出可能的線索,如果停損期到了但還沒找到答案,但在這過程中應該也會找到一些關鍵字,這時候可再拿著這個問題以及找到的關鍵字找講師或助教討論,說不定會發現其實剛剛在找答案的過程中就已經找到答案,只是你可能不知道而已。

設定卡關停損期,如果超過停損期還是沒解決就把問題丟出來!

不要相信來路不明的文章

最後,一定要閱讀官網的文件或手冊,我知道官網的資料大多比較無聊,但請盡量把官網的資訊或教學看過一次,把它們當做是「單一資訊來源(Single Source of Truth)」,接著再去閱讀其它的文章。

不要盡信網路上看到的文章,在這個網路時代,每個人都能寫些文章,你不會知道寫這些文章的人是什麼背景,也不會知道寫這些文章的人對這些內容的熟悉程度如何,或是想要帶什麼樣的風向,又或是剛好某些做法對文章的作者有效,但對你的情況不一定有效。

「捨近求遠」是在學習過程中很容易犯的問題,而且不是只有對新手是這樣,在很多的中、老手身上也常看到。耐著性子,先把官方的資訊先看過一次,對後續的學習會是很有幫助的。

以上,是我給已經報名培訓班之後的朋友的幾點建議。

報名 Bootcamp 培訓班之後,要進入「放棄循環」有很多種方式,但那都是大家所不樂見的。改變學習習慣,努力練習並刻意練習,相信成功就在不遠的將來。如果大家在轉職軟體工程師或是 Bootcamp 課程有什麼想聊聊的,大家應該都知道怎麼從網路上聯絡到我。先預祝大家都能順利轉職軟體工程師!

工商服務

實體課程:ASTRO Camp 全端工程師實戰培訓營
線上課程:五倍學院線上課程