從開始學習程式到轉職以來大約過了一年的時間,
中間過程受到不少版上前輩的建議以及幫助,前陣子剛結訓也順利轉職成功。
趁著今年的最後一天,想將這段期間的學習過程及心得,
分享給其他考慮轉職或是正在努力中的板友,提供一些參考。
一樣從簡單的背景介紹開始。
背景:
國立中文系學士,未滿30。程式背景趨近為0。
曾摸過幾次程式學習書本,但最後因為看不懂而放棄。
轉職前在類似公家機構的單位擔任行政,轉職契機是原職場升遷結構固定,
為了發展決定另謀他路。
選擇軟體工程師是因為朋友的建議,不過一開始也不是很認真地考慮這條選項。
某天偶然在Youtube上看到程式語言的教學影片,看著看著慢慢燃起學習程式的興趣,
才開始認真走這條道路。
轉職前的準備:
看了其他人分享的轉職心得,有蠻多零經驗的轉職者都是從教學機構出來的。
不過我不敢貿然直接去報名課程,先嘗試自己學習程式試水溫。如果這一步就失敗的話,
就可以考慮其他的職涯發展。
1. 基礎程式概念學習
免費學習資源有很多,圖書館書本、自學程式教學網站、Youtube、學校報名班等等。
付費的話也有Udemy可以選。
我是從Youtube上看到Feis老師的C語言教學影片,覺得講解簡單易懂,
所以都用這個方式學習。
影片一集約5~10min,我會在上下班通勤時看1~2集。然後趁上班空檔或中午休息時間,
拿出紙筆開始回想影片內容並手寫程式碼。回家後再用DEV C++把程式打一遍。
學習一段時間後,再開始找其他的影片,試著寫出不同的專案練習。
雖然看影片的時候覺得code很短很簡單,但自己寫的時候就常常寫不出來。
看別人學習心得都建議要跟著範例手打一遍code,真的有他的原因所在。
沒有自己從0開始把code寫出很難確認自己是否真的有學到內容。
在學習基礎程式概念的過程中,我覺得有沒有引起學習興趣這點很重要。
大學期間曾透過書本的方式學習程式,但好幾次都看到快睡著,最後無疾而終。
這次是透過Youtube的影片方式學習,狀況反而不錯。像在追劇般,想一集一集看下去。
如果有想轉職的板友覺得學習程式很困難的話,不妨多方嘗試看看,
也許只是還沒找到適合自己的學習方式。
2. 補習班選擇
影片學習差不多告一段落之後,我覺得我對程式語言並不排斥。
畢竟是未來吃飯的工具,要陪它朝夕相處,如果上班過程很痛苦的話絕對撐不下。
一開始先試著在104上投遞履歷看看,
想當然沒有一家公司願意收非本科0經驗沒作品的白紙。
後來在板上發文尋求發展建議,獲得不少幫助。根據板友的建言決定報名補習班的課程。
補習班的選擇不一定只有資策會,也有TibaMe、Alphacamp、AppworkSchool等等。
當時有申請AppworkSchool,不過自己的表現並不好在面試時就被刷下來了。
事後回想真的蠻多失敗的地方,未來面試工作時就有好好汲取這段經歷,
也是一段不錯的經驗。
最後選擇台北資策會的原因是聽說就業媒合做得還不錯,
加上熟悉上課地點附近的環境,交通也很方便。
缺點就是學費真的很昂貴,當初報名的時候已經沒有補助。
10多萬的學費+6個月無薪的機會成本,需要一點勇($)氣($)才能報名。
3. 課程選擇
原本想要成為前端工程師,報名前端班課程。
很遺憾當時已經過了報名時段,若要報名必須再等半年。
因為不想再虛度半年,查看課程時段發現C#班時程最近、課程包含網頁前端以及後端課程內容。
想說C#好像可以寫網頁、自己也不了解什麼是後端,趁這個機會了解後端也好,
對未來前端工作應該有幫助,最後就參加了C#班。
(至於實際上C#是在寫什麼大家懂得都懂,拜託不要笑我當初菜雞單純想法QQ)
另一個選擇C#而非Java的原因也很單純。C++有個C、C#也有個C。都是C語言,應該差不多吧!
(對,又是菜雞想法。純粹看到名字有好感就報了。)
關於C#班和Java班哪個比較好,以前版上有討論過,可以參考討論串。
以我個人淺薄的感想,單純轉職來說兩者工作機會都蠻多的,選擇有興趣的一方學習即可
。也可直接向櫃台詢問課程差異評估後再選擇。
課程:
報到當天櫃台會請你到教室找座位,通常就定位後那台電腦跟桌子就會跟著你到整個課程結束。
想挑座位的人可能要早點到教室,順便測試電腦及周邊設備,以免還沒寫程式先被設備搞死。
像是抽屜部分,因為座位空間關係順手好打的位置很重要。
不同的滑鼠也可能有手感問題,先搶先贏!
個人是挑選窗邊第一排位置。恰好窗邊有空間可以放置雜物,
上課遇到問題也可直接螢幕180轉邊詢問老師。
(窗邊位置可以放咖啡杯、洗完後順便曬乾超級方便。在冬日也能曬曬太陽,誠心推薦。)
1. C#基礎
這個階段主要是利用winform學習基礎C#語法。
不過與其說是學習C#語法,不如說是學習怎麼使用Visual Studio。
VS是很強的IDE,但功能太多需要慢慢摸熟,甚至專案怎麼開都要摸好幾遍。
以前只會寫小黑窗的我看到老師利用winform教學一開始還超級不適應。
上課的節奏很快,基本上不會慢慢地解釋變數宣告、資料型別是什麼,
直接從程式面開始著手練習。
如果沒有事先預習基礎觀念的話很容易上課沒幾天進度就落後。
零基礎的人想透過課程學習基礎觀念的話,需要非常努力課後補進度。
同屆同學有人在這階段就已經跟不太上,後來也退訓了。
另外也能看出哪些同學的學習狀況比較好,或是曾學過程式。
有問題的話可以多向他們請教交流。
(要抱大腿的趁現在開始搏感情XD)
2. SQL、資料庫實作
超級無敵重要的課程,基礎中的基礎。未來專題製作、面試及工作都會不斷重複用到。
但起初學習的時候是丈二金剛摸不著頭腦,對資料庫和SQL語法也沒什麼共鳴。
一直到後面學習LINQ和製作期末專題時才慢慢搞懂,面試前還不斷複習上課影片。
這段的學習成果會直接影響到期中DataBase規劃以及期末專題製作。
在教完SQL之後,差不多就會進行分組。導師會請各組依照專題主題設計並實作資料庫。
主題雖然自由發揮,但原則上大同小異,都是做有購物交易買賣的系統,只是呈現方式不同。
導師會參與DB設計討論,並提出一些需求讓各組增修。設計出來的DB則會在期中期末專題時使用。
雖說如此,我們小組的DB因為實作架構不好的關係到期末專題時又打掉重練,費了很多功夫修改。
建議SQL要花120分的心力學習,避免日後顛三倒四。
3. 元件開發
課程總概一句學習物件導向的基礎。
然而,嗯。咳嗯。
對於這堂課我的想法是建議多爬網路資料,碰到不懂的主動詢問問題對學習比較有幫助。
在此不贅述。
以上沒反白。
4. ADO.NET、LINQ
主要是學習C#怎麼和資料庫溝通,以及認識.NET框架。
老師會用淺顯易懂的例子以及分享業界經驗,我覺得很不錯。
不過ADO.NET較複雜,學完LINQ後都改用LINQ和DB溝通。
專題製作也都是用LINQ,到後面前者課程幾乎忘光光。
但面試常會考ADO.NET課程中有提到的相關觀念,有事沒事還是複習一下比較好。
而LINQ是專題製作的基本功,Q不出來專題會直接難產。
這部份要多加練習,或是回顧一下SQL課程。
5. 期中專題製作
上完LINQ後整體課程第一部分就差不多告個段落,進入期中專題製作階段。
各組需要依照之前製作的DB利用Winform做出期末專題的雛型出來,
然後在班上上台報告各自寫的功能。
時期還蠻長的,可以利用課餘的時間慢慢寫。中間會讓你觀摩學長姊的專題發表,
參考期末要呈現出來的樣子。
我個人這個時候還處在很想寫網頁前端的階段,對winform興致缺缺,沒有很用心製作期中專題。
......然後期末就吃到苦頭了Orz
期中專題是驗收學習成果的好機會。在專題製作過程中可以大量練習LINQ以及檢驗資料庫
設計是否有問題。
雖說期中專題只是在自己班上發表,即使搞砸也還有機會補救。但這段過程有沒有用心會
大大影響期末專題製作表現。
事後自己很後悔怎麼沒有認真做期中,到期末才來努力研究。
(還好救了起來,差點自爆。想轉職的板友絕對不能跟我一樣這麼散漫。)
6. html + css + javascript(jquery)
個人最想上的課程部分,花了蠻多心力在這塊。
但課程只講解基礎的部分,主要是為了讓期末專題能夠用網頁呈現。
尤其css部分,課程講解的很少,bootstrap也是要自己查怎麼使用。
如果只是單純想學怎麼做靜態網頁的話,其實上網查資料都有。
當時還想走前端的關係,自己在課後會額外學習怎麼使用前端框架。
不過隨著整體課程逐漸到尾聲,需要專注在期末專題的製作上。前端框架的學習就暫時擱置。
已經打定主意走前端的板友,真的要報名的話還是需要報專屬前端班的課程。
(菜雞的如意算盤打得太天真了。)
7. ASP.NET MVC + Restful Api/Ajax
經歷了SQL資料庫、前端網頁基礎及期中專題發表之後,終於來到整體課程的重頭戲。
前面的學習都是為了這段鋪陳,期末專題要以MVC的方式開發網頁呈現。
老師會講解什麼是MVC,以及.Net Framework及Core的開發差異。
一開始會用Framework的方式進行簡易的購物平台製作,然後用Core的方式再寫一次。
這邊課程難度和以往都不同,要把之前學到的都融會貫通,
很多同學覺得這部分課程學習很吃力。
課堂也是講解基礎而已,實際期末專題製作更加困難。
上課只聽一遍的話多半聽不懂,課後需要花很多時間複習。
Api/Ajax部分老師會講解基礎的網路通訊協定,並解說同步/非同步觀念。
老師很用心,針對我們基礎觀念不足的部分會加課補充。
直到這個時候我才終於了解什麼是前端後端、前端是怎麼跟後端聯繫、MVC架構的發展沿
革等,解決我當初一直疑惑的地方。
8. Azure + 認知服務應用
算是一堂讓大家認識MS的雲端服務的課,
後面認知服務會讓你玩看看應用MS的雲端分析製作AzureBot。
當作增廣見聞還行,實務上沒怎麼操作聽老師講解比較多。
難得的放鬆嗎?課。
另外還有一些課程(XAML、PowerBI、職場講習等)散落在上述的課程之中,不過這些部分
感覺比較無關就暫時pass。
期末專題、發表:
課程結束後,後續時間就讓各小組全力專心製作專題。
最好和你的組員討論評估網站需要哪些功能,並把實作出的功能條列出來。這樣後續和廠
商面談的時候就可以一個個抓出來舉例。
期間導師會檢視各小組製作狀況、討論內容並給予功能增加建議。
有的時候會覺得這些功能好像和專題主題沒關係,但就當作練習試著完成它。
專題後期差不多把基礎功能都寫好之後,剩下就是更進一步的延伸。
例如幫網站加個聊天室、串接金流服務、call別人寫好的api等等,盡量豐富整體專題的內容。
除了在發表時展示,面試時也是很好的談話材料。
製作過程需要面對很多課堂上沒有教過的部分,一切都要仰賴google大神及同儕間互相討
論、協助。
基本上專題會用到的功能都不會太難,只要知道問題出在哪裡都能夠google的到解法。剩
下就是不斷的try & error。
專題本身以外,也要準備發表的流程及履歷自傳等。
有些廠商會在發表前就發mail介紹自家公司,發表前夕也會收到有意參與媒合的各家廠商列表。
成果發表當天上午會邀請各家廠商觀看各組的期末專題成果,下午則進行就業媒合。
就業媒合主要是談話確認人格特質,並介紹自己的公司。
就業媒合結束後整段資策會課程至此告個段落,後續就看自己和廠商的面談結果,專心投
遞履歷安排面試祈禱能順利轉職成功。
總結心得:
當初在結訓前還蠻慌張的,整天想著找不到工作該怎麼辦,
常常整天看著104也沒半條結論。
後來結業完參加就業媒合後,陸陸續續有面試通知才比較踏實一點。
媒合前資策會提供的廠商名單,請一定要好好調查各家廠商資訊及工作內容,並編號排名順序。
這個順序就是當天就業媒合要去的順序。下午的時間過得很快,絕對不夠去所有的廠商。
千萬不要因為緊張就不敢上前,盡量去找廠商聊天。有的廠商在聊天過程中看你不錯就會
邀你去二面,
也有的廠商會請你之後再投104請HR聯絡你。這個環節關係到你之後求職面試機會的多寡
,請好好把握,並將自己最好的一面展示出來。
我自己當天並沒有很好的掌控時間,很多家廠商都沒去媒合或是錯過了時機。
當天回家後只有一家事前寄了email請我去面試。坦白講我慌得要死,
趕緊開104把當天的廠商能投的都投了,也幸好廠商願意提供面試機會。
面試時廠商最常問的就是你在小組專題中負責哪些區塊、做了哪些事情、遇到的困難有什麼,
所以專題的表現很重要。所謂的表現不是只有當天上台而已,還有你平常寫專題功能用了
哪些技術、怎麼克服難點、
做了多少額外的需求、為了什麼而做、這項功能考量了哪些東西等等。
即使寫的功能表面上看起來沒什麼,背後的邏輯、考量、code寫法其實都是可以拿出來跟
廠商討論的。
盡量表現出學習程式語言的過程中作了哪些努力,努力後的成果是什麼。
廠商會透過跟你聊天的過程中評估你適不適合做這份工作。
再回到我個人的學習狀況。一開始在資策會我也是課上完就回家躺平,
期中專題也沒怎麼認真寫。
差不多到學了javascript之後發現自己功課都沒法順利完成,
意識到自己的不足,從此過著每天朝早九晚九的生活。
專題製作越到後面沒教過的東西就越多,必須時常自己google和看youtube影片學習。
如果前面沒打好基礎,在這個部分就會很痛苦。沒有時間重頭來一遍基礎訓練了。
若是還在課程中間部分,有不懂的地方一定要先搞懂,
課程影片也要複習,才不會最後手忙腳亂。
覺得什麼東西都寫不出來的時候也不要氣餒,把碰到的問題跟需求「明確」的寫出來。
若是連自己都搞不懂問題在哪的情況下,老師和同學是無法幫你解決問題的。
要時刻問自己到底卡在哪裡、我想完成的功能是什麼、
不會的原因是基礎語法不熟還是不會應用,或是課程沒教過所以完全沒概念等等。
能的話盡量在教室待好待滿,專心練習coding。
早九晚九的生活雖然辛苦,但把基礎建立起來比什麼都重要。
當基礎都熟稔之後,專題才能夠好好發揮,和廠商面試也會比較有自信。
即使順利轉職,也不代表可以就此躺平。
資策會只是一份敲門磚,授予的都是基本知識。
實際到公司後有非常多東西都是課堂不會提到的,要不斷地自我學習精進能力。
以上。心得有些落落長,一年前的我也沒有想過我能夠就職成功。
還跟當初設想的不一樣,成為了後端工程師。人生真的充滿了意外。
希望這些心得能幫助到想轉職的板友們。
--