跳到主要內容

自學轉行軟體工程師到底有多難?

by Vanessa Wang    歡迎支持我的臉書專頁:【工程師作家的轉行人生


很多人知道我想要轉行寫程式之後,都想知道這是一個怎麼樣的過程。畢竟日常生活中(尤其在矽谷)實在太常聽到靠著自學或者上三個月的 coding bootcamp 轉行成功的案例了。但在這個網路時代,成功的故事很容易被放大討論,卻鮮少聽到那些失敗的案例。今天我以一個在七個月以前開始全職自學寫程式(在家上線上課程)、四個月前開始找工作(而還沒有找到理想職缺)的人的角度分享我不怎麼順利的歷程,做一個平衡報導。



Q:真的有人上三個月的速成班就可以成為軟體工程師?
A:是的,真的有。 很多人會說這怎麼可能?那大學讀四年都讀假的嘛?但我身邊就有好幾個這樣的人,有些甚至連大學學歷都沒有就成功進 Google等大公司當軟體工程師;只能說人外有人天外有天,你覺得不可能的事情換到這個時代、矽谷這個環境、這邊聚集的菁英和資源,就是有這樣的事情。但這就像當年全世界的人來舊金山淘金一樣,有些人一夕暴富,卻有更多人空手而回。 

Q:自學寫程式難嗎?誰都可以嘛?
A:這是我當初決定全職自學寫程式時最常 google的問題。我甚至常常搜尋 Am I too stupid to code? 在我心目中寫程式一直是一件很困難的事情。遙想高中、大學時代學C++,我就因為覺得太難理解 code 而放棄學習一個我覺得很有趣的科目。 現在有點不同了。Youtube 的發達、網路社群的發達,使得學習任何東西都沒有那麼難。再怎麼愚蠢或困難的問題,google一下就會有答案。所以是的,我相信任何人都能夠自學寫程式。但學寫程式就像學日文一樣;任何人都可以學,問題在於你可以學到多好的程度?可以好到拿來當吃飯的工具嘛?也許你只會幾句日文,足以讓你在日式餐廳打工;也許你會日常口語,可以當個旅遊團領隊;但如果你想當日文老師,那你就需要會複雜的文法甚至日本文學。自學寫程式不難,但找軟體相關的工作難易不均,只能自己定義目標了。 

Q:找到軟體工程師職位難嗎?
A:難。至少我覺得是很難的。 現在公司面試軟體工程師的型態大概有兩種:大公司考 data structures & algorithm,小公司考你實際作出一個 app 的能力。市面上的 coding bootcamps 主要教的是實作手機、電腦網頁的能力,data structures & algorithm 還要靠自己去練習。練習這些題目的過程就有點像以前高中時代在寫參考書、考模擬考,但面試的過程卻比以前考聯考難多了,因為你不是安靜地跟你的考卷掙扎一個小時,你得對著一個面試官解釋你的解題過程,在一個白板上寫出標準答案。以我幾次面試的經驗來說,現在門檻真的很高,答案只要有一點錯幾乎都不會過,所以如果要通過這些面試,真的就是要做到平常模擬考可以考到120分的程度,這樣考試當天考慮緊張、考慮各種失常還是可以考個 98分那樣,才有辦法過關。 

Q:會不會連面試機會都沒有?
A:目前來說,我覺得獲得面試機會難度普通。我大學和碩士讀的是台大工學院科系(但不是資訊工程),履歷上跟軟體相關的經驗近乎沒有,但還是會有一些公司考慮給我面試機會。對我而言最大的門檻就還是過不了technical interview。各個公司都想要找那種很聰明、眨個眼就可以想出超有效率解題方法的人;如果具備這樣的能力,這些公司半夜也跪著來求你加入他們,不管你是什麼背景來歷。如果跟我一樣解題能力差強人意,那有再多面試機會也是過不了的。 

Q:我適合做軟體工程師嗎?
A:我發現很多人跟我一樣,有轉行的念頭,但不確定自己想要做什麼。在矽谷這邊很多人轉行當軟體工程師或者房仲。這兩個職業算是這邊最具代表性的兩個職業吧!但並不能夠因為大家都做這個就決定跟風。 我也是花了兩年的時間探索我想要做什麼才做出這個決定的。而我怎麼探索的呢?就是實際學學看、做做看,就算是去做免費的、做義工,如果覺得有興趣就試一試。沒有實際嘗試靠空想很難確定自己是不是想要做一件事情。 有些人說缺乏轉職的勇氣,那可能是因為還沒有確定自己真正想做的是什麼。找到自己有興趣的方向是最難的。如果真的確定了,就只能放手一搏試試看了,不然你會整天一直想。會不會成功呢?我只能說只要你不放棄就還不算失敗,但要堅持多久真的因人而異。我常常把我現在轉職的努力想成創業、投資生意。並不是每筆生意都可以成功,因為每筆生意都必須有停損點。但這也沒有關係,至少嘗試了就沒有遺憾。



後記:寫完這篇文兩個月後,我就找到矽谷的全職軟體工程師工作。更多詳情,請見:
自學轉行軟體工程師 — 網路教材、工具篇


想要聽我完整的轉行故事嗎?
我的自傳《文藝少女的矽谷進擊》博客來連結https://reurl.cc/GdgLNW

留言

張貼留言

這個網誌中的熱門文章

什麼是 Assertiveness? 你容易被情感勒索嗎?

來到美國後我才第一次聽到 assertive 這個單字。美國人將 assertiveness 視為很高的美德,因為那代表一個人具備足夠的自信、溝通技巧、人際成熟度,以至於能夠堅定、清楚地表達自己想要的與不想要的,卻不會因此傷害他人或顯得傲慢、無禮或威脅他人。 Psychology Today  是這樣定義 assertiveness 的: “Assertiveness is a social skill that relies heavily on effective communication while simultaneously respecting the thoughts and wishes of others. People who are assertive clearly and respectfully communicate their wants, needs, positions, and boundaries to others.  Individuals who are high in assertiveness don't shy away from defending their points of view or goals, or from trying to influence others to see their side. They are open to both compliments and constructive criticism. ” (「Assertiveness 是一種社交技能,依靠的是在有效溝通的同時尊重他人的想法及需求。Assertive 的人能清楚且尊重他人地說明自己的需求、渴望、處境以及社交界線。擁有 assertive 特質的人會積極地說服他人了解自己的觀點,也積極地爭取、辯護自己的想法。他們對於讚美及有建設性地批評同樣地歡迎。」) 美國人如此看重、欣賞的 assertiveness 這個單字在中文卻似乎沒有相對應的翻譯。Google translate 將 assertive 翻成「斷言的、斷定的、過分自信的」;我覺得這些翻譯充滿負面含義且非常不正確。 生長在台灣的我,認為台灣確實沒有 assertiveness 的文化。我觀察到的台灣人,普遍很少直接說出自己想要什麼;如果說出來,

花九個月,靠自學轉行軟體工程師 -- 我所用的網路資源

by Vanessa Wang       歡迎支持我的臉書專頁:【 工程師作家的轉行人生 】 因為身邊有許多半路出家的軟體工程師,包含我老公,我一直抱持著或許某天我也要轉行當軟體工程師的想法。但我到了成為媽媽、小孩快一歲的時候,我才開始自學寫程式。 從 2018年底開始,我花了九個月的時間自學寫程式,並於 2019年七月成功轉行、找到了在加州矽谷全職軟體工程師(front-end web development)的工作。我沒有參加 bootcamp,就是在網路上找資源、自修。我是台大土木工程碩士畢業,後來到美國讀創意寫作碩士。成為軟體工程師之前,我沒有在職場上當過工程師,以前主要的工作以當 technical writer 寫技術文件為主。( 更多關於我轉職的動機、轉職前的履歷 ) 這篇想整理一下我自學期間用過的教材、工具,但這些都僅供參考,畢竟每個人的狀況、目標都不一樣。我始終相信「盡信書不如無書」。我這九個月中學到最重要的一件事就是凡事要有自己的想法、相信自己。像我這樣的文章網路上有很多,每個人用的方法都不太一樣。參考別人走過的道路很好,但更重要的是規劃最適合自己的一條路,然後自信地走下去。 以下就是轉行的路上,對我最有用的網路資源、工具: 一篇 Medium 上的文章 by Andrei Neagoie  這篇文章叫做  Learn to code in less than 5 months, get hired, and have fun along the way 這是我還在當 technical writer 時,某天上班無聊隨便 google 找到的。那時候還不太確定自己要不要轉行軟體工程,所以常常在網路上參考他人的經驗。我不時地都會回來看這篇文章,這篇文章可以說是貫徹我自學期間的一個中心思想。我很欣賞他的理念,尤其是以下這段話: “I spent the first month avoiding any tutorials or books. Instead, I spent this month looking at the best way for me to learn and get hired. I studied other people’s experiences, looke

是不是要「很聰明」、「數學很好」才能寫 code?

在我去年開始自學寫程式之前,我常常問是軟體工程師的朋友:「寫 code 很難吧?感覺超難懂。」在我心目中,寫 code 跟「數學能力」最有關係。 有趣的是,凡軟體工程師給我的回答,幾乎都一樣:「不會呀。學寫 code 就像學英文、日文那樣,就是一個語言。」 但我不是很能夠被這個答案說服,因為我以往跟程式語言的歷史告訴我,寫 code 是很困難的。我從高一第一次接觸 C++,到後來大一上土木工程系的必修課也是修 C++,經驗都蠻慘的,因此我就宣判自己沒有寫程式語言的天份。直到去年我從零開始再次透過線上課程自學寫 code,我才終於體會朋友們說的「學 code 就像學任何一個異國語言一樣」這句話的意思。 就從我高一的時候,第一次接觸程式語言的故事說起吧!那時是我學校的物理老師鼓勵我學程式語言的。他以完全免費的方式輔導我在假日期間學 C++,大概也是看到我對理工科有興趣,想說我可以自學寫一些小程式、搞不好還能參加什麼比賽之類的。於是他給我開了書單,讓我買了兩大本比字典還厚的 C、C++ 教學工具書(這種書現在還存在嗎?)來看,並且給我出功課,要我自己研究怎麼做出一些程式。 但朽木如我,一直碰壁,步步都感到挫折。那時的我,還不知道怎麼「自己找答案」,因此我心中一直期待老師可以好好示範他到底要我做什麼,因為我連他出的功課的題目、他到底想要我做些什麼我都不了解,也不知道從何問起。現在回想起來,老師心中一定是想:「這有什麼難的?自己看書,看不懂去找答案,不就這樣嗎?實際做做看、做不出來用力想直到做出來為止,難道還要手把手教學嗎?」但要知道那時候的我,雖然很喜歡數學、物理,理工能力不差,但「電腦」對我而言,就是一個玩接龍和踩地雷的工具,因此我連怎麼按照書上的說明去設定寫程式的環境都搞不清楚。 總之,第一次學寫程式的經驗,就在我心中無限多個黑人問號中無疾而終。直到上了大一又再次遇到 C++。 這次我以為我可以學得比較好,畢竟這是我第二次跟 C++ 碰面了。我們用的課本,再次是那種厚得令我第一天就把它切割成三分的工具書。但豈知第一堂課老師也就講完差不多三分之一本課本,一下就上完一、兩百頁的進度。 「等等啊!」我心中吶喊。第一堂課我們就從 Hello World 上到 for loop,而且是雙層的 for loop, 因為要用程式語言畫出這個形狀: