【轉行軟體工程師】我自己從非專業背景轉型成為軟體工程師的心路歷程|經驗分享

生活沙龍
36 位粉絲
40 觀看·2022年10月30日
哈囉 YouTube 我是 Terry
你看我現在後面的背景還有這個雪
你就知道我大概不是在加州
其實我現在人在多倫多加拿大東岸的地方
為什麼我會在這裡呢
因為自從疫情開始三月份以來之後
基本上所有的公司
在 Silicon Valley 或是任何地方
北美的公司大部分都開始 work from home
然後我們的辦公室關了很久了
他們大概沒有打算到明年八月之前
是不會打開的
所以呢很多人都回家了
我呢也現在回到多倫多的家
然後在這邊繼續 work from home
到明年八月的時候
等疫情好一點的時候再回到加州這個地方
其實多倫多這個地方呢
大概從十月底到十一月初開始就會下雪
但是今年好像有一點暖冬
所以十月底快十二月之後才開始下雪
今天是今年的第一場雪
今天其實想跟大家聊一下自己的經歷
是怎麼成為軟體工程師
從一個非職工非電腦科系畢業出來的人
分享一下自己的經驗
其實雪下這麼大也不是特別冷
因為我自己在多倫多已經住了十幾年了
也差不多習慣了這種天氣
那我們就回到裡面再跟大家聊一聊
那今天主要想跟大家聊的是
我自己的個人經驗
我是怎麼從一個非 CS 非電腦專業出來
怎麼樣成為一個軟體工程師
然後在加州工作到現在的一個經歷過程
然後希望可以分享給你們
然後讓你們有一些參考價值
然後這個故事可能就要從我高中開始說起
我剛畢業的時候
其實我不是非常確定我以後想做什麼
我知道大概有兩條路可以走
就是金融 商科 或是工科 工程之類的東西
然後當時其實我對電腦 職工這方面
就寫程式這方面沒有任何的概念
我也不覺得我以後會能坐在電腦面前
寫十二個小時的 code
或者是一直盯著電腦面前
我覺得這不是我當時能想像我可以做的事情
所以我當時就決定說我要去讀一個科系
就是以後可能找工作也比較好找
然後薪水也比較高的
所以我就選擇了工科而不是商科
因為我覺得讀商科的人可能比較多一點
加上我當時覺得自己對工科
可能稍微會比較多一點興趣
雖然我數理也沒有到特別好
那工科其實有很多領域
有土木 有電腦 有電機 有機械各方面
當時真的不知道自己想讀什麼
然後我知道加拿大這邊有一所大學叫
University of Waterloo 華鐵五大學
他的工科是非常強的
在加拿大絕對是數一數二
尤其是電腦 職工這方面是非常厲害的
然後我當時就決定說我想要讀這個學校
那至於讀什麼工科
我其實還不是非常的確定
看了一下他們的各種不同工科的 offering
最後就選擇一個叫做 Management Engineering
中文翻譯就是管理工程
但其實他真正在學的東西是有點像工業工程
然後組合優化數學各方面的領域
那我為什麼會選 Management Engineering
我一開始聽到這個名字
我感覺可以學到很多
你也不一定很確定說你之後會往哪地方發展
因為我那個時候真的不知道我自己會想做什麼
所以我就覺得說這個科系可能很適合我
Waterloo 有一個很屌的地方就是
他所有工科的學生都要完成六個實習的經驗
我們大學總共是五年半
大一讀完之後就要開始實習
而且很特別的是你每一次實習是四個月
就等於說我上四個月課然後工作四個月
然後再上四個月課然後再工作四個月
所以基本上是完全沒有任何暑假
就是一直這樣子 rotate
上課工作上課工作上課工作直到你畢業
然後你總共有六個學期可以工作
所有工科學生最少最少要完成五個學期的工作經驗
所以我第一學期跟第二學期的工作
基本上都是待在工廠的生產線
提高生產效率怎麼樣優化生產線的這個程序
我當時有一個很好的朋友
也是我大學同學也是我的室友
我們其實兩個對創業都非常感興趣
我們學校他們其實很提倡學生去創業
學校其實有很多團體還有學校建立的這個機構
讓學生去 pitch 我們的 idea
然後學校會有這個評審團
然後他們會看你的 idea 怎麼樣
然後如果好的話他們會免費給你錢
去贊助你去創業做這些事情
所以我們就開始做了很多亂七八糟的 side project
大部分創業在那個時候的想法
都需要一點技術背景去執行
譬如說你要寫一個程式
或是做一個手機的 app
我還記得我們第一次創業的 idea 是
我們要做一個有點像 Uber 的那種東西
那時候還沒有 Uber
所以其實是非常非常有意思的
就是因為有這些亂七八糟的想法
亂七八糟的 idea 想要創業
當時也不可能花錢去請一個工程師
來幫我們把這些東西執行出來
所以只能自己去學什麼去寫 code
什麼去寫程式
之後這就慢慢讓我對寫程式產生了一些興趣
所以在大學二年級之後
我開始要找第三次實習的機會的時候
我找的公司全都是科技公司
然後找的崗位也全都是軟體工程師
那其實非常的困難
對一個不是讀 CS 或是電腦工程
職工這方面的人來說
那我當時遇到最大的困難
就是公司連面試都不給你
我記得我每一年都會申請亞馬遜的實習機會
但是他們從來不會給我一次面試的機會
因為我本身不是讀 CS
加上也沒有這方面的工作經驗
所以很少公司會給我實習的機會
但也不是沒有
很多比較屌的學生他們在學習一開始就找到工作了
有一些小公司他們進來我們學校系統比較晚
所以最後蠻多小公司他們給我面試的機會
那說真的當時我基本上99%的面試我都沒有過
因為我當時一點 CS 的基礎都沒有
我頂多就知道怎麼寫一點基本的 PHP code
他們面試問我問題就是譬如說
你要怎麼 reverse 一個 array
你要怎麼 reverse 一個 linked list
其實當時我連 linked list 是什麼我都不知道
然後我其實投了大概兩三百家公司的履歷
大概只有十幾二十家公司願意給我一個面試機會
然後我沒有一家面試成功過
然後其實那時候應該是我想轉型成為軟體工程師
遇到最大的困難的時候
不過我最後算是運氣蠻好的
因為95%的同學還有我們學校的學生都找到工作了
然後我當時遇到一家公司他們進來的比較晚
可能真的他們一定要找一個實習生
我跟那個 CTO 聊天聊得非常開心
跟他講很多我想創業的想法
然後他也非常的喜歡我有這些創新的想法
那最後非常的尷尬
因為他其實都要考我至少一題的技術方面的問題
其實他對我非常的好
他沒有要我寫任何 code
他只是問我說
Terry 你知不知道什麼是 binary search
然後我當時就傻了
因為我真的不知道什麼是 binary search
我兩三天前其實剛好有讀到一篇文章關於 sort
有稍微仔細看一下 merge sort 是怎麼運作
然後我就很尷尬的跟他說
我不知道什麼是 binary search
但是我知道什麼是 merge sort
就真的非常的傻
你能想像這是一個多尷尬的場景
就是他問我一題這麼簡單的問題
他只要我大概講一下什麼是 binary search
然後我完全不知道
然後我還自己去改一下題目跟他說
我知道一個東西
但是那跟 binary search 完全沒有任何關係
然後他就說ok
然後他就給我 offer
我真的非常感謝這個人
他給我一個機會讓我跨界這一行
讓我有機會繼續往這一方面發展
要不然我如果沒有這一步
我可能很難再繼續往下走
實習的時候我真的學了超多東西
然後我也非常認真在學習
補充自己基本的知識
做每一個項目都非常非常的認真
因為有了這次實習的第一步
之後我在找工作
很多公司都會願意給我面試的機會
然後之後就蠻順利的
我第六次實習也是最後一次實習
我是在美國的西雅圖的一家公司
薪水超高
然後公司對我們超好
那時候公司幫我們安排在
一家酒店式管理的公寓裡面
住了四個月
然後公司付了所有的費用
其實畢業之前我就已經開始找工作了
就我發現我能拿到 offer
都不是一些什麼很好的公司
都是一些比較屬於二流三流的公司
不太會在乎考你的一些算法
數據結構這些東西
他們更多在乎的是
看一下你的履歷
叫你講一下經驗
看你會不會寫一些很基本很基本的 code
然後問你一下會不會用 PHP
可能會不會用 JavaScript
這種類似這種比較水的面試方法
我才能拿到 offer
那像是 Google Facebook Amazon
這種好的公司
我真的完全沒辦法拿 offer
而且只要進去第一輪
就直接就慘掛
我非常缺乏的就是
最基本的算法還有數據結構
需要經過認真刷題
纔可以真正磨練出來的一些
面試的經驗跟技巧
這讓我真的意識到刷題的重要性
By the way 如果你不知道刷題是什麼
這邊有個連結是我之前做的影片
有介紹一下刷題
還有為什麼要刷題
然後刷題的一些技巧
還有我自己刷題的經驗
如果有時間的話
推薦你一定要去看
然後找到工作之後
其實我當時有概念
知道刷題是什麼
大概有一點想法
知道怎麼去準備
但是沒有人跟我講說
這個有多重要
然後怎麼樣去系統性的去準備
然後我當時就買了一本
很有名的書叫
Cracking the Coding Interview
其實那本書非常的好
是一個很好的開始
但是以現在的考題的難度
已經稍微有點不太夠
那我當時也沒有非常認真的
去讀這個書
就有點像三天打魚
三天捕魚
四天撈網
三天打魚
兩天賽網
這種馬馬虎虎的方式
這樣是非常非常的不夠
而且懂得也只是皮毛
沒有真的去把這些code寫出來
去練習
真的一點用都沒有
然後當時就找了一份工作
其實薪水也不差
但是跟那種Facebook Google
Amazon級別完全沒辦法比
但是在當時已經算是還不錯
然後我就在舒適圈待了兩年
每天想的就是出國玩
開Party
然後就這樣混了大概兩年的時間
然後之後我又去了另外一家公司
那家公司也是非常的簡單
就完全不需要準備什麼練習
寫code 算法什麼都不需要準備
就直接就是面試
然後考你很簡單的一個Forum
就可以做完的一個題目就進去了
然後我當時進公司
就認識了一個我很好的朋友
到現在都一直在聯絡一個很好的朋友
他也知道刷題的重要性
其實他自己也做了快100道題
但是他也是就是那種
三天打魚 兩天撈網那種型態
就是沒有人監督他
他也不知道怎麼去真正系統化的
去做練習這樣子
我們都有一個共同的目標
就是我們要去大公司
我們要去Fly
我們要去這種很屌的公司
我們當時是真的非常非常的認真
我記得每天下班6點之後
我們一直待在公司待到12點
有時候待到一兩點
就是一直在刷題
一直在互相討論這題要怎麼做
然後Java的數據結構要怎麼用
然後一些基本的Java的知識
就這樣瘋狂的Push我們自己
互相監督
持續了大概六個月到一年的時間
那Cost其實也蠻多的
就是沒有任何娛樂的時間
大部分只要一有空就埋頭苦幹
一直刷題一直練習
然後完全沒有任何時間出去玩
也沒有時間陪女朋友
所以當時女朋友也跟我分手了
其實當時我最大的Drive
最大的Motivation就是說
我告訴我自己
我覺得這世界上那麼多人
能做到這件事情
我相信我一定也可以做到
然後這是我現在階段人生
非常重要的一個障礙
我一定要去突破
一定要去完成我纔可以休息
因為我知道我如果在舒適圈待久了
我會失去這個求生的意志
還有想要往上爬的這個慾望
然後這幾個月的努力
絕對絕對絕對對我面試
有非常大的信心
還有完全提升了我面試成功的機率
然後我當時在面像Amazon
Facebook Google這種公司
基本上都沒什麼問題
然後在面試很多舊金山
矽谷那些大公司之後
我也面了很多那邊的小公司
創業型的公司
因為我覺得我自己對創業
其實還抱持著一定的憧憬
加上我想趁年輕的時候
多學一點東西衝刺一下自己
去做一些有high impact的項目
想去看一下這種小公司
怎麼樣從0到1的這個過程
是我現在年輕的時候
我想去經歷的事情
沒有任何牽掛的時候去衝一個
然後可能等到以後我有家庭
然後有了責任之後
我可能就沒辦法像現在
有這麼多機會
可以去一個小型的創業公司去闖一闖
所以那時候我最後選擇了
加州的一家很小的一家創業公司
當時公司只有A輪的規模
我覺得選大公司跟選小公司
都有它很多的利與弊
那我下次有機會再做一集視頻
跟大家聊一下
到底什麼時候該選大公司或選小公司
還有它們各方面的好處跟壞處在哪裡
好啦 來總結一下今天講的內容
這一段路走得也不是非常的順利
中間遇到蠻多的障礙還有碰壁
如果你像我一樣
不是讀電腦職工這方面出來
然後也想成為一個軟體工程師
你也會遇到非常多的困難
也會遇到很多的障礙跟阻礙
我相信也會有人跟你講說
不要去走這條路
不要去浪費時間
或是告訴你說
你不是做軟體工程師的料
這條轉型的路絕對不是非常好走的
但是我可以告訴你
我至今到現在做的所有決定
我沒有一樣我是後悔的
我非常的開心我能走到現在
然後能在矽谷
成為一名資深的軟體工程師
還有一點我想強調的就是
在現在這個時代
你真的不需要有一個
電腦或是職工這方面的學歷
來證明說你能成為一名軟體工程師
我覺得這條路
絕對是可以靠你自己去走出來的
儘管你沒有這方面的學歷
當然假如你條件好
有這方面的學歷
你的基礎就會打得很紮實
這條路也會走得非常的穩
但是假如你像我一樣的話
你完全也可以靠著後天的努力
去補這些你之前沒有學到的基礎知識
很多時候我們都會懷疑自己的能力
覺得很多事情好像是
我永遠不可能做到的
但我覺得假如你在人生中
想要有所重大的突破
或是做一個很重大的改變
我覺得你必須把你的mindset給調整過來
你第一個要做的事情就是告訴自己說
這件事情有很多人都可以做到
那我一定也可以做到
然後當你慢慢的把這些事情做到之後
你會產生越來越多的信心
對你自己的能力還有肯定
都有很大的幫助
在這個之後
你遇到更多的困難
或是想要更多的自我突破
你會越來越有信心你可以做到
好啦今天的視頻就到這裡
如果你喜歡我的影片
請點讚訂閱或分享
假如你覺得我有什麼東西漏掉
或是講錯
或是有什麼東西你想要我加強補充的話
歡迎在底下留言
那今天就到這裡囉
我們下次再見
